What is the default instance context mode?

前端 未结 3 806
孤独总比滥情好
孤独总比滥情好 2020-12-17 09:13

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

相关标签:
3条回答
  • 2020-12-17 09:35

    It's PerSession

    Link to MSDN doc

    0 讨论(0)
  • 2020-12-17 09:39

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

    0 讨论(0)
  • 2020-12-17 09:45

    The simple answer is that the default Instancing mode is PerSession

    Provided:

    • The Session Type you are using supports sessions
    • See [Binding type session support] (https://docs.microsoft.com/en-us/dotnet/framework/wcf/system-provided-bindings).
    • If the channel does not create a session the behavior is as if it were PerCall.
    • The Service contract allows sessions - default is "Allowed"

    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.

    0 讨论(0)
提交回复
热议问题