I am in a scenario where I have to integrate with a 3rd party system here at my job that exposes Java-based web services. I can parse the service WSDL definitions and generate proxy classes and interact with them just fine in the .NET world. However, the services aren't very "clean" in the sense that the property names in the Java app's object model are extremely convoluted and the servers that host the Java environment will sometimes go down and, being point-to-point, my client apps don't enjoy it when the URI is not responding. I also wanted to not include the service implementation logic into my web app directly because there is lots of potential for reuse of these Java services since the business often asks for new things that utilize the same data.
So, what I have did a while back was write some "wrapper" WCF services that handle the property mapping and provide our developers a better interface to develop against. However, this solution doesn't feel great because I'd like to implement some routing and some other features and get away from the 1:1 wrapper WCF to Java service. Is there any good way to handle this a little more dynamically using WCF 4 features? I think the biggest hurdle is the fact that I have no access to the Java services for changes and the developers that support that side aren't familiar with much else than Java. Even trying to explain ESO/SOA concepts is normally a lost cause.
Anyone else using WCF as a pseudo service gateway to 3rd party services? If so, how do you handle the mapping of fields from your WCF data objects to the 3rd party service in a more dynamic way? Are you using the WSDL from the 3rd party service to generate binding contracts and proxy classes in your WCF layer?
Thanks. I know this is a very broad question and there is no 100% right or wrong solution. Just looking for some feedback on this architecture. I see a lot of info on a WCF service interacting with other WCF services as a routing service, but not often where WCF routes or acts as a gateway to Java-based services.
Again, here is my current architecture..
.NET client -> WCF service (mapping, property cleanup, and some minor biz logic) -> Java-based web service -> source data (large asset management system)