Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WCF architecture help needed

We are planning on implementing our new software application as shown below.

Does this architecture look fit for purpose?

Items to Note:

  • There are many PC's
  • The pc has a WCF client as it needs to upload data to the database periodically.
  • The PC has a server because the end user on the terminal server needs to be able to interrogate the pc for information
  • The terminal server is the GUI for users so they can remotely connect to a specific PC to interrogate the pc for information
  • We are using basicHttpBinding below

What else have we considered?

  • We have tried WCF NetPeerTcpBinding (i.e P2P) but it does not support request-reply operations.

  • We have tried WCF Duplex but with the requirements listed above in the items to note section we would end up with a client and server at both ends anyway.

enter image description here

like image 951
user1438082 Avatar asked Nov 04 '22 03:11

user1438082


1 Answers

Well I apologize but I basically disagree with your architecture.

  • WCF is not designed or suited for anything other than a request-response communication. Its full duplex ability will not enable your server side to issue communication to a specific client unless that client already issued a connection to the server. That means that in order to achieve a prestigious online full duplex communication with all your clients - all your clients must maintain an open port to the server.

  • Having a dual client and server per PC in order to achieve an online full duplex is a step forward as it will solve the issue of keeping a port open per client however it has downsides in terms of security as it means that the specific PC is open to receive multiple connection requests. Another issue can occur with deadly reentrancies if you not careful. So, basically you will be saving 'ports' in exchange for architecture maintainability and fitness to your solution.

So if you are targeting a deployment of around 200-300 PC's your architecture will hold but if you are targeting a larger deployment of thousands of PC's - it will not hold.

like image 142
G.Y Avatar answered Nov 15 '22 06:11

G.Y