Поведение служб по умолчанию
В примере по умолчанию показано, как можно настроить параметры поведения службы. Пример основан на начале работы, который реализует 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.
Настройка, сборка и выполнение образца
Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.
Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Building the Windows Communication Foundation Samples.
Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".