Comparing Two Bindings

Too often I have to compare two bindings to find the subtle difference between a configuration that works and a configuration that doesn’t. This is quite a painful task as a channel stack can be generated on the fly based on different settings, there are dozens of configuration options (for security alone), and the difference…

1

Transfer Modes and Buffer Sizes

Why do only some of the bindings allow setting a MaxBufferSize? The maximum buffer size and the maximum received message size are in many ways linked together. If the message is being transferred in a single buffer, then it only makes sense for the largest size of that buffer to equal the largest size of…

0

Missing Binding Extensions

Why do I get an error “configuration evaluation context not found” when I try to create a custom binding using bindings or binding elements from a library? The evaluation context not found error (or in traces with the identifier System.ServiceModel.EvaluationContextNotFound) is generally caused by using a configuration element defined in a library that is not…

0

Top Down Binding Element Order

Why does a message encoder have to be specified before the transport when constructing a binding? A message encoder doesn’t directly fit into a channel stack because the message encoder type doesn’t implement any of the channel shapes. Instead, a message encoder is an auxilliary piece used by one of the channels in the channel…

0

Load Balanced Web Service Bindings

What options can I use with WSHttpBinding to make it friendlier to load balancing? The primary difficulty encountered when using WSHttp with a load balancer is that WSHttp is easy to configure to produce application-level sessions between the client and service. Many load balancers support the concept of sticky sessions, which pins the traffic from…

0

Binary Http Binding

Do I need IIS7 to use binary with HTTP for WCF? No, all you need is a custom binding because we don’t include a standard binding with that configuration out of the box. Here’s a quick example of putting binary and HTTP together with either code or configuration: BinaryMessageEncodingBindingElement encoding = new BinaryMessageEncodingBindingElement();HttpTransportBindingElement transport =…

3

Default Message Encodings

What message encoding do I get if I don’t include one in the binding? A message encoding binding element is required for any binding that uses an encoding-aware transport. However, it turns out that most transport binding elements include a default message encoding if you don’t specify one explicitly. The default message encoding isn’t standardized…

0

Non-Destructive Queue Receive

You should take the time to understand the earlier articles in the series for context if you haven’t already. Future of Queuing An Alternative Queuing Model The three basic operations that we talked about for queuing with non-destructive receives are peek, lock, and delete. Rather than creating a new channel shape for peeked receives, you…

0

Building with Encoders

The basis of a channel stack is that there is a series of objects that share a common interface for communication. This leaves message encoders with something of a problem as the primitive operations for encoding and decoding messages are different than the primitive operations for sending and receiving messages. Message encoders avoid this problem…

2

Context Channel Shapes

What channels can be used in a context binding? The primary limitation for building a context binding is that the channel stack has to have the right shape. The context exchange protocol used by a context binding requires that the first invoked operation be a request-reply operation. This is so that the initial context can…

1