WCF-Xtensions

Everything you need to boost the performance of your WCF clients and services

Performance tuning for WCF

WCF-Xtensions includes advanced bindings, binding elements, behaviors, factories and clients that extend the capabilities of your WCF services and improve the performance of your WCF applications.

WebSocket transport

HTML5

Bi-directional protocol

The WebSocket transport binding element offers you high-throughput, cross-platform, full-duplex communication between devices, browsers, desktops and servers.

Simultaneous sending and receiving

Once one side establishes a channel with another side, both sides can send text or binary data to each other whenever they like.

An advanced implementation

WCF-Xtensions uses the high-speed WebSocket implementation of PowerWebSockets which provides wider availability, better performance and more features than the system-provided WebSocket implementation of .NET.

Exemplary performance

Performance features such as full-scale asynchronous design, adaptive resource management, transparent burst messaging and ultra-fast transport compression provide high responsiveness, low memory use and minimal bandwidth consumption.

"Per-message" compression using DEFLATE and LZF4

Supports the "per-message" compression specification and provides two compression extensions, DEFLATE as per the spec and LZF4 for minimal processing overhead.

Near-universal availability

Available on all supported platforms except that Xamarin, Windows Phone and Silverlight apps cannot act as servers due to platform limitations.

LiteJM for WCF clients and servers

The JSON message encoding binding element of PowerWebSockets enables any WCF client or server to communicate using LiteJM with any other WCF or PWS client or server that also uses LiteJM and the same transport.

This message encoding can be used with any WCF transport, but it is recommended to be used primarily with:

  • PowerWebSockets-provided WebSocket transport
  • WCF-Xtensions-provided WebSocket or LiteHTTP transport
  • system-provided WebSocket or HTTP transport

Same transport binding element in PowerWebSockets

The same WebSocket transport binding element is also available in PowerWebSockets.

LiteJM features such as duplexity and concurrency work only with WCF transports that support them.

Lightweight JSON messaging

The JSON message encoding binding element of WCF-Xtensions enables any WCF client or server to communicate using LiteJM with any other WCF or PowerWebSockets client or server that also uses LiteJM and the same transport.

The Lightweight JSON Messaging system

The JSON message encoding of WCF-Xtensions is based on the Lightweight JSON Messaging system (LiteJM) of PowerWebSockets.

It uses the JSON format to enable communication not only between WCF clients and servers but also between WCF and PowerWebSockets clients and servers.

One-Way, Request/Response, Faults

You can use all classic types of remote operations including One-Way, Request/Response and Fault messages. In addition to the usual RPC operations, it provides asynchronous streaming and Push-to-All messaging. All operations can be performed both synchronously and asynchronously, except of Push-to-All broadcasts which are always performed asynchronously.

Concurrent operations

Your application can simultaneously make multiple outstanding requests to the remote endpoint through a single channel.

LiteJM enables your application to send the next request before receiving responses to previous requests. This allows you to increase the number of concurrent operations without creating extra connections.

Send binary streams as message attachments

A unique feature of LiteJM is its ability to stream an arbitrary amount of binary data as an attachment to a JSON message. This enables you to combine a parameterized JSON request and high-throughput streaming into a single remote operation.

Utilize the transport's full-duplexity

With full-duplex transports, one-way and request/response operations can be made in both directions of a connection.

Use JSON polymorphism

The JSON serialization of LiteJM can optionally preserve the .NET type information, allowing you to use polymorphism when performing a remote operation invocation.

Transport support

This message encoding can be used with any WCF transport, but it is recommended to be used primarily with:

  • PowerWebSockets-provided WebSocket transport
  • WCF-Xtensions-provided WebSocket or LiteHTTP transport
  • system-provided WebSocket or HTTP transport

LiteJM features such as duplexity and concurrency work only with WCF transports that support them.

The JSON message encoding binding element for WCF is also included in PowerWebSockets.

Fast Infoset message encoding

A very compact WCF message encoding

The Fast Infoset message encoding produces the most compact messages compared to the BinaryMessageEncodingBindingElement or any other system-provided message encondings available in WCF.

Faster, faster, faster!

For medium-to-large messages, Fast Infoset means not only that you reduce bandwidth consumption but also that messages arrive faster at their destination. Higher compactness results in higher responsiveness.

Improves scalability

Increasing compactness also means that servers complete faster the receiving of requests and the sending of responses, freeing them quicker to process more requests and responses.

TransferMode.Streamed

Are you sending large data? Fast Infoset is the perfect encoding. Use TransferMode.Streamed with the Fast Infoset encoding for excellent performance.

Java web services interoperability

On the .NET side, Noemax's Fast Infoset implementation can be used as a WCF message encoding on .NET Framework 4.6/4.5/4.0/3.5, .NET Compact Framework 3.5, Xamarin.iOS, Xamarin.Android, Xamarin.Mac, Windows Phone 8.1/8.0/7.1, Silverlight 5 and Mono.

On the Java side, Oracle's Fast Infoset implementation can be used with Tomcat, Jetty, JBoss/WildFly, Weblogic, Glassfish, WSO2, Apache CXF, Apache Axis2, JAX-WS, Metro, Jersey, Grizzly and other application servers and Web Services frameworks.

And, of course, all these are fully interoperable.

Human-readable with Fiddler

When using HTTP/HTTPS, you can view Fast Infoset messages travelling on the wire by adding the Fast Infoset Message Inspector to the Fiddler web debugging proxy. You can download the inspector from here.

Java application servers

HTTP content negotiation

Negotiates the message enconding and compression

The HTTP content negotiation binding element enables you to improve efficiency by supporting multilpe message encodings and compression methods on the same HTTP or HTTPS endpoint.

You can transparently add new message encodings or compression methods to the same endpoint to make use of them in new clients while at the same time retaining interoperability with older clients.

Compression mode

The compression mode lets you choose between several content negotiation modes:

Optimistic The client always sends compressed requests to the service without any negotiations.
Pessimistic The client never sends compressed requests to the service but does accept compressed responses when the remote endpoint supports compression.
Adaptive The client does not send compressed request to the service until the remote endpoint sends the first compressed response. Once the service sends a compressed response, the client automatically switches to the Optimistic compression mode.
Selective Compression is used only when requests are sent to operations that are marked with the [EnableCompression] attribute.

Features

  • Supports the LZF4, DEFLATE, ZLIB and GZIP compression methos.
  • Negotiates compression and does not break interoperability with endpoints that are using the default HTTP binding configuration.
  • When used in combination with the LiteHTTP transport binding element, the ContentNegotiationBindingElement also supports compression threshold which disables compression for messages below a specified size. This allows you to use compression more effectively when messages are too small to compress.
  • Negotiates compression algorithms to be used during communication, so that a single HTTP endpoint can handle clients using various compression methods or no compression.

Message compression

Message compression

Always-on compression for requests and responses

The message compression binding element always compresses both request messages and response messages. It enables you to select the compression method and the compression level.

Works with any transport

It provides fast and simple compression of the request and response message payload that can be used universally.

While the ContentNegotiationBindingElement can be used only with the HTTP transport, the MessageCompressionBindingElement can be used with any transport.

Selectable compression threshold

Supports compression threshold which disables compression for messages below a specified size. This allows you to use compression more effectively when messages are too small to compress.

Supported compression methods

Supports the LZF4, DEFLATE, ZLIB and GZIP compression methods.

Transport compression

Super fast, stateful, transport-level compression

The transport compression stream upgrade offers you an impressive reduction in message size at the lowest processing expense and can be used with transports that support stream upgrade.

Features

  • Stateful transport payload compression for TcpTransportBindingElement and all 'net.tcp' based bindings.
  • Significantly improves performance over WAN networks.
  • Helps to reduce the overhead of transport security.
  • Supports the LZF4 and DEFLATE compression methods.

Compact envelope

No change in binding configuration

The compact envelope behavior improves compactness and performance without requiring any changes in a binding's configuration.

Excellent choice for message security

It can be used with message security to accelerate encryption and to reduce the size of encrypted messages.

Features

  • Provides payload compression through endpoint behavior, which can extend any existing binding to support compression without modifying the binding itself.
  • It significantly reduces the overhead of message security by compressing the data before it is encrypted.
  • Best to be used with the FastInfoset or MTOM message encodings.

LiteHTTP transport

A lightweight HTTP implementation

The LiteHTTP transport binding element provides a high-performance, lightweight HTTP implementation with embedded HTTP content negotiation and compression.

Features

  • Provides integrated support for content negotiation and standard HTTP compression.
  • Can act as a server and handle inbound client connections on .NET, Compact Framework and Mono.
  • Excellent for implementing lightweight services that can run without any external configuration and without requiring administrative rights.
  • Supports TLS security and mutual X509 certificate authentication.

LiteHTTPS is currently not supported on Windows Phone and Silverlight.

SOAP/TCP transport

Tomcat

Interoperability with Java application servers

The SOAP/TCP transport binding element provides interoperability between the .NET ecosystem and Java application servers that expose SOAP/TCP endpoints.

Stateless and stateful Fast Infoset

SOAP/TCP supports three message encodings: text, stateless Fast Infoset and stateful Fast Infoset. Stateful Fast Infoset is the most efficient and is the default on the Java side.

Features

  • Optimized binary transport interoperable with Tomcat, Glassfish and other Java application servers.
  • Request/response operation when communicating with Java.
  • Request/response or bi-directional operation when both sides are using WCF-Xtensions.
  • Supports Fast Infoset for a very compact message encoding.
  • Very good streaming performance.
  • Can be used to host services on Compact Framework.
  • Excellent for implementing lightweight services that can run without any external configuration and without requiring administrative rights.
  • Supports TLS security and mutual X509 certificate authentication.
Glassfish

Cross platform

WCFX is available on the following

PLATFORMS

.NET Framework 4, 4.5 and 4.6
.NET Framework 3.5
.NET Compact Framework 3.5
Xamarin.iOS
Xamarin.Android
Xamarin.Mac
Windows Phone 8.0 and 8.1
Windows Phone 7.1
Silverlight 5
Mono

Highlights

Features

  • Designed for maximum performance
  • 100% managed code, no native code anywhere
  • For Visual Studio and Xamarin Studio projects
  • Royalty-free distribution, no server or runtime fees
  • Subscription model with nightly builds
  • Flexible license permits redistribution by end-users
  • Full source code available with Blueprint add-ons
  • Developer-to-developer support for unlimited issues
  • Assistance with code or configuration
  • On-demand samples and feature requests
  • Perpetual license never expires
  • Access to licensed versions even after subscription

Includes

  • Assemblies for .NET Framework 4, 4.5 and 4.6
  • Assemblies for .NET Framework 3.5
  • Assemblies for .NET Compact Framework 3.5
  • Assemblies for Xamarin.iOS
  • Assemblies for Xamarin Android
  • Assemblies for Xamarin.Mac and Mono
  • Assemblies for Windows Phone 8 and 8.1
  • Assemblies for Windows Phone 7.1
  • Assemblies for Silverlight 5

Get started today.

Download Now