Monday, January 15, 2007

Tango in Web services: Java and .NET 3.0 interoperability

Written by Arun Gupta, Sun Microsystems

WIST, for Web Services Interoperability Technology (a.k.a. Project Tango), is a Sun Microsystems initiative to provide an open source implementation of enterprise Web services technologies for interoperability between Java Web services and Microsoft Windows Communication Foundation (WCF, a.k.a Indigo).

In Web services terms, this would mean that a .NET client can invoke a Web service on Java platform, and vice versa, and still perform the intended business logic. All this needs to be done without the client and service developers worrying about how the HTTP headers are going to be interpreted, whether an image attachment sent by one stack will be received correctly by the other, and if the two stacks are agree on on-the-wire representations for secure reliable sessions.


W3C Web Services Architecture Working Group defines Web service as: A Web service is a software system designed to support interoperable machine-to-machine interaction over a network.

As is evident from the definition, the requester and provider of the Web service must be able to talk in an interoperable manner. In this blog, I’ll talk about Web Services Interoperability Technology (WSIT, pronounced same as “visit”, a.k.a. Project Tango), a Sun Microsystems initiative, an open source implementation of enterprise Web services technologies that deliver interoperability between Java Web services and Microsoft Windows Communication Found (WCF, a.k.a Indigo and available as part of .NET 3.0 platform) to help you build, deploy and maintain Composite Applications for your Service Oriented Architecture.

As an extension to JAX-WS, WSIT has four main categories, covering the key WS-* specifications:

  • Messaging (SOAP, MTOM, WS-Addressing)
  • Metadata (WSDL, WS-Policy, WS-Metadata Exchange)
  • Security (WS-Security Policy, WS-Security, WS-Trust, WS-Secure Conversation)
  • Quality-of-Service (WS-Reliable Messaging, WS-Coordination, WS-Atomic Transactions)

These are the features required by an enterprise developer to create a composite application. Apart from providing an implementation of the key WS-* specs, the distinct feature of WSIT is the letter “I” in WSIT, which stands for interoperability. The literal meaning of the word “interoperability” is: “ability of a system to work with or use the parts or equipment of another system”.

The definition is clear but the key point to highlight is that this definition assumes the two systems “just work”. And the definition does not mention any workarounds to be done by the user of the systems. The fact that two systems are working together seamlessly is completely transparent to the user. In Web services terms, this would mean that a .NET client can invoke a Web service on Java platform, and vice versa, and still perform the intended business logic. All this needs to be done without the client and service developers worrying about how the HTTP headers are going to be interpreted, whether an image attachment sent by one stack will be received correctly by the other, and if the two stacks are agree on on-the-wire representations for secure reliable sessions.

The WSIT implementation, available as part of GlassFish v2 builds, has been extensively tested to work with .NET 3.0 framework in an interoperable manner. The WSIT has successfully participated in multiple interop plug-fests where successive interoperability has been achieved. That means, in the initial plug-fests the focus was more on the basic specifications like MTOM and WS-Security. In subsequent one, more composite scenarios like secure reliable messaging and secure transactional scenarios are tested. In an interoperability plug-fest, held at Microsoft campus, in September, Sun achieved interoperability on all the simple and composite scenarios. Read more about the plug-fests here.

So if you are developing an enterprise application then WSIT not only provides you all the building blocks, with complete tooling support in NetBeans IDE 5.5 and deployment platform in GlassFish v2, but also provides an out-of-the-box interoperability with .NET framework 3.0.

So, next time you think about Java and .NET Web services interoperability, think, visit, and downloa d WSIT. This is one platform that allows you to develop secure, reliable, transactional and interoperable Web services using industry-grade NetBeans IDE that can be deployed on GlassFishv2.

Here are is a collection of useful links: