InfoQ

News

SOAP/TCP Transport for WCF

Posted by Hartmut Wilms on Oct 05, 2007 11:32 AM

Community
.NET
Topics
Web Services
Tags
WCF ,
SOAP

Noemax releases a SOAP/TCP transport implementation for WCF, which makes use of the Fast Infoset in order to improve performance and interoperability of WCF services.

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.

No comments

Watch Thread Reply

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.