Web Services Standards and .NET Interoperability

Successive versions of the .NET framework closely track the evolution of the WS-* specs as they progress from publication, to submissions to W3C or OASIS, and ultimately as W3C Recommendations or OASIS Standards. See for example the list of supported interoperability specs in .NET 3.0 (which shipped with Vista) and .NET 3.5 (which shipped with Visual Studio 2008), noting how the later release referenced the final standard for several specs whereas the earlier versions referenced the original submission. 

Not only does Microsoft closely track the standard version of specifications, Microsoft invests in helping other companies do similarly.  One way is by sponsoring  “plugfests” where implementers can get together and test what works and what doesn’t while products are still being developed.  Don’t believe me, take a look at accounts of the recent web services plugfest from other “coop-etitors” in the SOA industry.  For example Stefan Tilkov  interviewed Harold Carr to assess the state of interoperability between Sun’s Metro product and WCF.  Harold notes:

.NET 3.5 (which is released) is based on the standard versions. Metro 1.x (which will ship later in 2008) will be based on the standard versions also.

Harold's own blog has details on exactly which of the ratified standards were used successfully to interoperate with .NET 3.5. 

These ongoing  Plugfests are a great way to increase real world interoperability, and we hope to see even broader participation in the future. See the scenarios and frequently asked questions page for details on how to participate. All interested parties are invited irrespective of which platform they develop for and whatever their business relationship (or not!) with Microsoft might be, with no legal agreements to be signed.

Here is a list of Web Services standard specifications (i.e. the versions of these specs that are OASIS standards or W3C Recommendations) that are shipping today in WCF, Microsoft’s application platform framework: 

  • SOAP 1.2
  • W3C Web Services Addressing 1.0 - Core, SOAP binding, WSDL binding
  • MTOM
  • WS-ReliableMessaging 1.1
  • WS-Security 1.1 (also SAML Token Profile 1.1)
  • WS-Policy 1.5 / WS-PolicyAttachment 1.5
  • WS-SecurityPolicy 1.2
  • WS-SecureConversation 1.3
  • WS-Trust 1.3
  • SAML 1.1 Token Format
  • WS-Addressing 1.0
  • WS-Coordination 1.1
  • WS-AtomicTransaction 1.1
  • UDDI 2.0
  • WS-I Basic Profile 1.1
  • WS-I Basic Security Profile 1.0

Other ratified standards are supported elsewhere in the Microsoft product line, e.g. the DMTF WS-Management standard is supported in Vista.

It’s fair to point out that not all potentially relevant specs that can claim to be standards are supported in .NET (or the native Windows XML libraries for that matter).  The clearest example of a ratified version of a spec that Microsoft and many others chose not to implement is XML 1.1.  This was a difficult decision, since some changes in XML 1.1 make it better aligned with the evolving Unicode standard than XML 1.0 is, but others  are “breaking changes” that would actually degrade real world interoperability.  In this case, principled pushback on a standards committee has led to a proposed new edition of XML 1.0 that has improved Unicode alignment without sacrificing interoperability.

We encourage implementers to participate in the ongoing work to demonstrate and improve real world WS-* interoperability, and for customers to let us know about additional scenarios and specifications where we need to focus in the future in order to make cross-platform services ever more valuable.