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


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

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

В этом примере клиентом является консольное приложение (.exe), а служба хостится с помощью Internet Information Services (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 . В следующей таблице описаны некоторые из этих действий.

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

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

Поведение операции Описание
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. Убедитесь, что вы выполнили процедуру настройки One-Time для образцов Windows Communication Foundation.

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

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