locked
WCF architecture help needed RRS feed

  • Question

  • We are planning on implimenting 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.I need the pc to also talk to the application server and initiate this commnication itself - so i ended up putting a client and server at both ends anyway.

    • A UI exists only on the terminal server.

    Saturday, March 9, 2013 11:29 AM

Answers

  • On 3/9/2013 8:07 AM, damo642 wrote:

    Why do you need request-response?

    I need to be able to tell the pc via the terminal server to give me a list of files and folders in a particular directory on the pc. hence the server on the pc.

    That would require that you have a WCF client program and WCF service program on the pc local. It could be a Windows Desktop program on the PC desktop that is a client to WCF MSMQ service running on the PC on the terminal server, which would have everything local to the pc. But the the terminal server itself can't be a WCF client in this situation.

    However if the pc on the terminal server has an IP, then you can setup a WCF service on a PC. You can then create a WCF client program that could access the IP over TCP/IP with the client program ran by the terminal server.

    I think the WCF client program that would be run by the terminal server would have the necessary rights on the pc locally, since the client program would run under the user account context of a program running on the terminal server itself.



    I need the client on the pc to initiate data being put into the database on occasion - hence the client on the pc.

    You could have a windows desktop form program where you removed its ability to show forms (remove the form). It can be a WCF Client to a WCF Service, which could be scheduled by Task Scheduler.  You could also have a Windows service application running on the PC, that is a client to a WCF service, and it has some kind of scheduling  mechanism.

    So is my architecture correct for this?

    You may need to take another look at things.

    • Marked as answer by Haixia_Xie Monday, March 18, 2013 11:27 AM
    Saturday, March 9, 2013 3:23 PM

All replies

  • On 3/9/2013 6:29 AM, damo642 wrote:

    We are planning on implimenting 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.

    Why do you need request-response?

    All you really need is an IService.cs with Operational contacts implemented in the Service.svc.cs with methods to request something and/or respond with something, and I am not talking the request/response pattern. It's more like methods accept parms with data and methods and/or the methods return data or not to the client.

    Of course, any data objects would need to be datacontracts.

    *

    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.I need the pc to also talk to the application server and initiate this commnication itself - so i ended up putting a client and server at both ends anyway.
    *

    A UI exists only on the terminal server.

    WCF service doesn't care what the client type is.

    Saturday, March 9, 2013 12:32 PM
  • Why do you need request-response?

    I need to be able to tell the pc via the terminal server to give me a list of files and folders in a particular directory on the pc. hence the server on the pc.

    I need the client on the pc to initiate data being put into the database on occasion - hence the client on the pc.

    So is my architecture correct for this?

    Saturday, March 9, 2013 1:07 PM
  • On 3/9/2013 8:07 AM, damo642 wrote:

    Why do you need request-response?

    I need to be able to tell the pc via the terminal server to give me a list of files and folders in a particular directory on the pc. hence the server on the pc.

    That would require that you have a WCF client program and WCF service program on the pc local. It could be a Windows Desktop program on the PC desktop that is a client to WCF MSMQ service running on the PC on the terminal server, which would have everything local to the pc. But the the terminal server itself can't be a WCF client in this situation.

    However if the pc on the terminal server has an IP, then you can setup a WCF service on a PC. You can then create a WCF client program that could access the IP over TCP/IP with the client program ran by the terminal server.

    I think the WCF client program that would be run by the terminal server would have the necessary rights on the pc locally, since the client program would run under the user account context of a program running on the terminal server itself.



    I need the client on the pc to initiate data being put into the database on occasion - hence the client on the pc.

    You could have a windows desktop form program where you removed its ability to show forms (remove the form). It can be a WCF Client to a WCF Service, which could be scheduled by Task Scheduler.  You could also have a Windows service application running on the PC, that is a client to a WCF service, and it has some kind of scheduling  mechanism.

    So is my architecture correct for this?

    You may need to take another look at things.

    • Marked as answer by Haixia_Xie Monday, March 18, 2013 11:27 AM
    Saturday, March 9, 2013 3:23 PM