默认服务行为

默认示例演示如何配置服务行为设置。 此示例基于入门指南中的示例,它实现 ICalculator 服务协定。 此示例使用 ServiceBehaviorAttributeOperationBehaviorAttribute 属性来显式定义服务行为和操作行为。 你可以在配置文件中配置行为,也可以通过代码强制配置行为(如此示例所示)。

在此示例中,客户端是一个控制台应用程序 (.exe),服务是由 Internet 信息服务 (IIS) 承载的。

注意

本主题的最后介绍了此示例的设置过程和生成说明。

服务类使用 ServiceBehaviorAttributeOperationBehaviorAttribute 来指定行为,如下面的代码示例所示。 指定的所有值均为默认值。

[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 确定是否使用所提供的同步上下文(如果已设置该上下文)。 在希望控制是否在 Windows 窗体应用程序中使用 WindowsFormsSynchronizationContext 时使用该上下文。
IncludeExceptionDetailInFaults 确定是否要将常规未处理执行异常转换为 Fault<string> 并将其作为错误消息发送。
TransactionIsolationLevel 指定事务的隔离级别。
ValidateMustUnderstand 确定意外消息头是否会导致错误。

操作行为是使用 OperationBehaviorAttribute 属性指定的。 下表描述了其中的一些行为。

操作行为 说明
TransactionAutoComplete 确定服务操作的完成是否提交当前事务。
TransactionScopeRequired 确定服务操作是否在客户端流动的事务中登记。
Impersonation 确定服务操作是否模拟调用方的标识。
ReleaseInstanceMode 确定是否在服务操作调用的开头或结尾处回收服务实例。

运行示例时,操作请求和响应将显示在客户端控制台窗口中。 调用之间的延迟是在服务操作中对 System.Threading.Thread.Sleep() 进行调用的结果。 其余的行为示例更详细地说明这些行为。 在客户端窗口中按 Enter 可以关闭客户端。

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 示例中的说明进行操作。