The configuration:
One web service hosted on a remote server A allows incoming and outgoing requests on port 80. There is a client and WS proxy on server B that invokes methods on server A's web service. The second web service hosted on server B blocks incoming requests, but allows outgoing requests (that is, communication is allowed on port 80, only if it is initiated from inside the firewall). A client and WS proxy on server A needs to access web method's exposed via server B's web service. How can I effectively get around this problem? Right now, the applications communicate only one way, from B to A, but some new features require communication from A to B. The current proposal going around our office is to make a service on B that polls A to check for any new data that it needs, but it's a terrible hack, resulting in extremely high latency, bloated data storage on A and database maintenance nightmares when new features are required, etc.... I was thinking about making an asynchronous method call from B to A, and have A return a command from a queue, when one becomes available. The command contains a method name and arguments, and a GUID identifying the command. I would then use reflection to invoke the method desired, returning the result of the operation to A as an Object via another web method, and include the command GUID so A knows the result and can remove the command from its queue. Please tell me there is a better way! Web service protocols are intended to get around firewalls and it's totally useless to us, because of this requirement that we must support customers that won't allow incoming requests on port 80 when they are running server B (server A must allow port 80 incoming requests). Thanks, Richard Anthony Hein
