Дефолт InstanceContextMode в WCF

В WCF, если мы не определяем InstanceContextMode ServiceBehaviour определенно, каков режим по умолчанию следующего?

  1. PerCall
  2. PerSession
  3. , Единственный

Спасибо.

0
nl ja de
добавлено автор Rohan, источник

2 ответы

The documentation on it talks about default value is PerSession. But I believe it also depends upon the binding used (does binding support sessions), like basichttpbinding uses PerCall

1
добавлено

The simple answer is that the default Instancing mode is PerSession

Если:

  • Тип Сессии вы используете сессии поддержек
  • Видит [Сеансовую поддержку типа привязки] (https://docs.microsoft.com/en-us/dotnet/framework/wcf/system-provided-bindings).
  • , Если канал не создает сессию поведение, - то, как будто это было PerCall .
  • , который контракт на Обслуживание позволяет сессиям - дефолт, "Позволен"

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 { ... }

Я нашел чтение о сессии в этой статье Microsoft ( Используя сессии ) особенно поучительный в понимании, как Сессии открыты и закрыты и как это касается Приведения в качестве примера и Параллелизма.

По умолчанию клиент WCF создаст новую сессию, которая создаст случай сервера, все призывы к продолжительности сессии назван разговором и подается единственным случаем (Приводящим в качестве примера) из сервера с единственной нитью (Параллелизм), посвященный той сессии/клиенту/разговору.

При использовании поведение приводящего в качестве примера по умолчанию в WCF, все требования между объектом клиента WCF обработаны тем же самым сервисным случаем. Поэтому на уровне приложения, можно думать о сессии как о предоставлении возможности прикладного поведения, подобного поведению местного вызова. Например, когда вы создаете локальный объект:

Конструктора вызывают.

Все последующие звонки, сделанные ссылке объекта клиента WCF, обрабатываются тем же самым экземпляром объекта.

Деструктор называют, когда ссылка на объект разрушена.

Сессии позволяют подобное поведение между клиентами и услугами, пока сервисное поведение случая по умолчанию используется.

Надежда это помогает кому-то, поскольку она взяла меня некоторое время, чтобы найти ответ.

0
добавлено
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot