This week was one of the rare opportunities where I was in a situation to write real code for a real customer. I got the permission of my manager to do a Proof-of-Concept to get hands on experience with WCF.

The scenario was a customer who has a TANDEM (aka HP Nonstop) application system written in COBOL running under Pathway, and this should be connected to a Windows platform using .NET 2.0 and WCF. The TANDEM runs an UNIX subsystem (OSS) and on that a Webserver integrating with the NSSOAP V3 Webservice software, that can talk to Pathway servers running under the original TANDEM OS.

I discovered very quickly that NSSOAP V3 stack has some issues with compliance to some of the Webservices standards and that iterop wouldn't be there out of the box. Honestly, that was what I expected, and why I asked to be on that PoC. Just to get a real world interop pain experience:-)

Finally, the WCF extensibility model helped me to solve the issues. What's nice about that is, the application programming wasn't affected at all. Even when the NSSOAP stack emerges towards better compliance in forthcoming versions, only changes to the config files of the WCF applications will be necessary.

I had to extend the WCF stack in two areas. I implemented a custom client message interceptor to transform the message into a XML that was understandable by the TANDEM site. The TANDEM site was sensible to formatting of the XML document, so we had to make sure that WCF emits a document that gets accepted by the XML parser on the TANDEM site. Another problem was, that the TANDEM - although announcing an UTF-8 encoding in the headers and prologues of the SOAP response - delivered characters that were not valid UTF-8 encoded (I guess they use some ISO-8859 variant and just send that over the wire). So I had to implement a custom message encoder that fixed the broken encoding coming from the TANDEM. Finally all that then worked quite stable.

WCF is about implementing WS-* and to be interoperable on the base of standards. But it is good to know that the guys implementing WCF are realistic about interop issues and did built in all that extensibility to allow you to adapt to nearly any scenario you can imagine. This is true design for interop! The WS world will be a better place if all that will be released - and documented properly;-) 

If you need details, send me an email.