Поделиться через


Поведение служб по умолчанию

В примере по умолчанию показано, как можно настроить параметры поведения службы. Пример основан на начале работы, который реализует ICalculator контракт службы. В этом образце с помощью атрибутов ServiceBehaviorAttribute и OperationBehaviorAttribute явным образом определены поведения службы и операции. Поведения можно настраивать в файлах конфигурации или непосредственно в коде (как показано в этом образце).

В этом образце клиентом является консольное приложение (EXE), а служба размещается в службах IIS.

Примечание.

Процедура настройки и инструкции по построению для данного образца приведены в конце этого раздела.

Класс службы задает поведение с помощью атрибутов ServiceBehaviorAttribute и OperationBehaviorAttribute, как показано в следующем образце кода. Все заданные значения являются значениями по умолчанию.

[ServiceBehavior(
    AutomaticSessionShutdown=true,
    ConcurrencyMode=ConcurrencyMode.Single,
    InstanceContextMode=InstanceContextMode.PerSession,
    IncludeExceptionDetailInFaults=false,
    UseSynchronizationContext=true,
    ValidateMustUnderstand=true)]
public class CalculatorService : ICalculator
{
    [OperationBehavior(
        TransactionAutoComplete=true,
        TransactionScopeRequired=false,
        Impersonation=ImpersonationOption.NotAllowed)]
    public double Add(double n1, double n2)
    {
        System.Threading.Thread.Sleep(1600);
        return n1 + n2;
    }
    ...
}

Поведения службы задаются атрибутом ServiceBehaviorAttribute. В приведенной ниже таблице описаны некоторые из этих поведений.

Поведение службы Description
AutomaticSessionShutdown Автоматически завершает сеанс по запросу клиента.
ConcurrencyMode Задает режим параллелизма для каждого из экземпляров служб.
InstanceContextMode Задает режим контекста экземпляра.
UseSynchronizationContext Определяет, нужно ли использовать предоставляемый контекст синхронизации, если он задан. Его следует использовать, если требуется определить, нужно ли использовать WindowsFormsSynchronizationContext в приложениях Windows Forms.
IncludeExceptionDetailInFaults Определяет, что общие необработанные исключения выполнения должны преобразовываться в Fault<string> и отправляться как сообщения об ошибках.
TransactionIsolationLevel Задает уровень изоляции транзакций.
ValidateMustUnderstand Определяет, вызывают ли неожиданные заголовки сообщений ошибку.

Поведения операций задаются атрибутом OperationBehaviorAttribute. В приведенной ниже таблице описаны некоторые из этих поведений.

Поведение операции Description
TransactionAutoComplete Определяет, приводит ли завершение операции службы к завершению текущей транзакции.
TransactionScopeRequired Определяет, зачислятся ли операция службы в транзакции потока клиента.
Impersonation Определяет, олицетворяет ли операция службы удостоверение вызывающей стороны.
ReleaseInstanceMode Определяет, удаляются ли экземпляры служб при начале и завершении вызова операции службы.

При выполнении примера запросы и ответы операций отображаются в окне консоли клиента. Задержка между вызовами связана с вызовами метода System.Threading.Thread.Sleep() в операциях службы. В остальных образцах поведений эти поведения описаны более подробно. Чтобы закрыть клиент, нажмите клавишу ВВОД в окне клиента.

Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714

Press <ENTER> to terminate client.

Настройка, сборка и выполнение образца

  1. Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.

  2. Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Building the Windows Communication Foundation Samples.

  3. Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".