Should calls to a third-party web service go through ESB (Ensemble)?

I'm asking this best-practices question on behalf of a customer.

They have a Caché-based application, and an Ensemble production deployed in front as an ESB to provide web service API access to the back end application. They're looking for a best practice approach for the scenario where the Caché back end is calling a third-party web service. Should that go through Ensemble too? It's sort of a philosophical design question/debate.

The current approach without going through Ensemble would be for Caché to import the service WSDL into proxy classes and invoke those directly from the application code. If the answer to the above question is yes (third-party WS calls SHOULD go through the ESB), what is the best way? One option would be to invoke a restful service in Ensemble from the Caché app. Another would be to expose a web service from Ensemble. That would mean both Ensemble and the back-end application would have to import a WSDL.

Thank you,


  • 0
  • 0
  • 249
  • 0
  • 3



Just add service (Enslib.HTTP.GenericService) and operation (Enslib.HTTP.GenericOperation) to Your production. WS calls are anyway just http in lower level. If Your operation's URL is left empty, then it uses URL how service is called. So You need only one service/operation for one target server:port in Your production.

But You  need to have quite new Ensemble. With older versions there are some bugs in those adapters, for example getting wsdl through this configuration is not working.

Anyway this is extremely easy to set up and give it a try.

Best Regards




Thanks for your response.  I'm not necessarily asking HOW to do this, but rather I'm interested in whether or not this is something you SHOULD do.  Should these outgoing calls go through the ESB, or should the calls just be made directly from the back-end Caché application?  I suppose you gain tracing/monitoring capabilities, but is it worth the extra stop/point of failure?



Propably there is no simple answer for this. But ability to easily track and alert connections is many times valuable help. Also sometimes connections are to external servers and we don't want connections from/to internal application servers. Also connections to outside can be two-way-ssl, so this solution needs only one certificate for internal side.

Ensemble environment/configuration needs to be like that it is not point of failure. This can be done with clustering, mirroring or loadbalancer, depending for what Ensemble is depended to use.

Best Regards,