InfoQ

News

SOAP/TCP Transport for WCF

Posted by Hartmut Wilms on Oct 05, 2007

Community
.NET
Topics
Web Services
Tags
SOAP ,
WCF

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

Brian Marick on 4 Challenges and 5 Guiding Values of Agile Software Development

Brian Marick takes us through a quick tour of the most important values and challenges to adopting Agile successfully (they aren't the typical challenges and values we hear in the community).

Are You a Software Architect?

The line between development and architecture is tricky. Does it exist at all? Is an ivory tower actually needed? There's a balance in the middle, but how do you move from developer to architect?

Agile – A Way of Life and Pragmatic Use of Authority

The word 'authority' sometimes produces an allergic response in hard-line agilists. Freedom and authority – both are bad if misused and both are good if used in right spirit for a noble cause.

Getting Started with Grails, Second Edition

"Getting Started with Grails" brings you up to speed on this modern web framework. Companies as varied as LinkedIn, Wired, and Taco Bell are all using Grails. Are you ready to get started as well?

Using ITIL V3 as a Foundation for SOA Governance

Those familiar with only ITIL V2 often scoff at the thought that ITIL could serve as a governance framework for SOA. With ITIL V3, the focus of the framework shifted towards service-orientation.

Adrian Colyer on AspectJ, tc Server and dm Server

SpringSource CTO Adrian Colyer discusses AspectJ, SpringSource's dm Server and tc Server products, OSGi and Scrum.

Adam Wiggins on Heroku

Heroku's Adam Wiggins talks about Rails, Background Jobs, Add-Ons, Ruby, and how Heroku manages to work around Ruby's inefficiencies using Erlang and other languages.

SOA as an Architectural Pattern: Best Practices in Software Architecture

For Grady Booch the foundation of a good architecture is patterns, SOA being just one of many patterns. In this Second Life presentation, Booch attempts to bring more clarity on what architecture is.