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

Reply via email to