SOAP/TCP Transport for WCF
WCF provides out-of-the-box support for either interoperable text-encoded XML Messaging or proprietary binary-encoded XML Messaging. Developers looking for both have to develop custom WCF bindings and transports.
Now, Noemax has released a WCF extension that provides a SOAP/TCP binding. SOAP/TCP was developed by Sun Microsystems. It is a simple, efficient and light weight transport over a TCP/IP connection that is suitable for the transmission of Web service messages (SOAP-based or XML Infoset-based). SOAP/TCP supports the use of Fast Infoset, which specifies a binary representation of an W3C XML Information Set, for encoding and decoding XML messages.
“Availability of SOAP/TCP for WCF comes at a time when .NET developers are seeking solutions that improve the performance of Web services”, said Arman Djusupov, chief developer at Noemax. “SOAP/TCP is unique in its ability to use Fast Infoset as a stateful message encoding. While all WCF transports can use Fast Infoset, which is the most compact encoding when compared to the text XML, MTOM and .NET Binary encodings, SOAP/TCP is the only transport that can reuse the same vocabulary throughout a communication session for an even higher reduction in message size. The resulting increase in communication speed makes SOAP/TCP the fastest transport for WCF”.
Alexander Philippou of Noemax explains:
SOAP/TCP is (currently) the only transport that uses the Fast Infoset message encoding in a stateful mode. This means that each message sent during the same communication session is accompanied only by new entries (if any) to the Fast Infoset vocabulary -- not the whole vocabulary as is the case with the non-stateful Fast Infoset message encoding that can be used with the other transports. The vocabulary is a table that associates string values with identifiers. One of the techniques used by Fast Infoset to reduce the size of the text encoding is to enter string values (such as markup) in the vocabulary and substitute all occurrences of these string values in the document with their corresponding identifier.
Noemax's SOAP/TCP implementation is also compatible with the SOAP/TCP implementation of Sun's Metro. Metro is Sun's web service stack that packages the web service related Java APIs, such as JAXB, JAXP, StAX, and SAAJ. As Alexander Philippou points out
SOAP/TCP is WCF<->Metro interoperable and has been tested using both text and Fast Infoset. It has not been tested with MTOM since there is no point in using it when Fast Infoset available; SOAP/TCP for WCF is included in the Noemax WCF-Xtensions which also includes Fast Infoset, and of course Metro has both too.
Noemax provides a Fast Infoset implementations for .NET called FastInfoset.NET. FastInfoset.NET integrates into the .NET XML APIs and provides a means of encoding and decoding XML messages according to the Fast Infoset specification. Noemax's WCF-Xtensions offers
- Fast Infoset encoding/decoding (includes FastInfoset.NET),
- SOAP/TCP transport,
- Smart HTTP binding that adds dynamic content negotiation and selective message compression to the functionality of the BasicHttpBinding, and
- GZIP compression for messages.
All extensions can be configured within a custom binding or plugged into the existing standard WCF bindings. Noemax has published size comparison and performance benchmarks between text, Fast Infoset, MTOM and .NET Binary encodings on their website.
Noemax SOAP/TCP implementation looks promising. It offers an interoperable binary encoded messaging over TCP, which is compatible to Sun's Metro implementation. In addition it provides a serious alternative to the propriety NetTcp binding, which is the most performant way of communicating between WCF consumers and providers offered by Microsoft, today.