user496949
user496949

Reputation: 86055

What is the default instance context mode?

When I do not specify InstanceContextMode in the service, what's the default instance mode?

Upvotes: 25

Views: 20831

Answers (3)

vc 74
vc 74

Reputation: 38179

It's PerSession

Link to MSDN doc

Upvotes: 30

Rohan
Rohan

Reputation: 598

The simple answer is that the default Instancing mode is PerSession

Provided:

Here is a Microsoft provided sample with the default imperatively configured in the code. Default behavior sample

[ServiceBehavior(  
AutomaticSessionShutdown=true,  
ConcurrencyMode=ConcurrencyMode.Single,  
InstanceContextMode=InstanceContextMode.PerSession,  
IncludeExceptionDetailInFaults=false,  
UseSynchronizationContext=true,  
ValidateMustUnderstand=true)]
public class CalculatorService : ICalculator { ... }

I found reading about session in this Microsoft article ( Using Sessions ) particularly enlightening in understanding how Sessions is opened and closed and how this relates to Instancing and Concurrency.

By default the WCF client will create a new session, which will create a server instance, all calls for the duration of the session is called a conversation and is served by a single instance (Instancing) of the server with a single thread (Concurrency) dedicated to that session/client/conversation.

If you use the default instancing behavior in WCF, all calls between a WCF client object are handled by the same service instance. Therefore, at the application level, you can think of a session as enabling application behavior similar to local call behavior. For example, when you create a local object:

A constructor is called.

All subsequent calls made to the WCF client object reference are processed by the same object instance.

A destructor is called when the object reference is destroyed.

Sessions enable a similar behavior between clients and services as long as the default service instance behavior is used.

Hope this helps someone as it took me a while to find the answer.

Upvotes: 3

Debab Ramzi
Debab Ramzi

Reputation: 31

Not all bindings support PerSession mode like basicHttpBinding that supports Percall mode by default.

Upvotes: 2

Related Questions