多个协定

“多个协定”示例演示如何在一个服务上实现多个协定,以及如何配置终结点以便与实现的每个协定进行通信。此示例基于入门示例。该服务已进行修改以定义两个协定:ICalculator 协定和 ICalculatorSession 协定。

提示

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

服务类同时实现了 ICalculatorICalculatorSession 协定。因为其中一个协定需要一个会话,所以该服务使用 PerSession 实例模式在会话生存期内维护状态。

服务配置已进行修改,定义了两个终结点,以公开每个协定。ICalculator 终结点是使用 basicHttpBinding 在基地址上公开的。ICalculatorSession 终结点是使用 wsHttpBinding(其 bindingConfiguration 属性设置为 BindingWithSession)在基地址/会话上公开的,如下面的示例配置中所示。

<service 
    name="Microsoft.ServiceModel.Samples.CalculatorService"
    behaviorConfiguration="CalculatorServiceBehavior">
  <!-- ICalculator endpoint is exposed using BasicBinding at the base
       address provided by host: 
       https://localhost/servicemodelsamples/service.svc  -->
  <endpoint address=""
            binding="basicHttpBinding"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
  <!-- ICalculatorSession endpoint is exposed using BindingWithSession
       at {baseaddress}/session:
       https://localhost/servicemodelsamples/service.svc/session -->
  <endpoint address="session"
            binding="wsHttpBinding"
            bindingConfiguration="BindingWithSession" 
           contract="Microsoft.ServiceModel.Samples.ICalculatorSession" />
  ...
</service>

生成的客户端代码现在包含同时适用于原始 ICalculator 协定和新 ICalculatorSession 协定的客户端类。客户端配置和代码已进行修改,可以与相应服务终结点上的每个协定进行通信。

客户端是一个控制台窗口应用程序 (.exe)。服务是由 Internet 信息服务 (IIS) 承载的。

客户端控制台窗口显示发送给每个终结点的操作,首先是基本终结点,然后是安全终结点。

设置、生成和运行示例

  1. 请确保已经执行了 Windows Communication Foundation 示例的一次性安装过程

  2. 若要生成 C# 或 Visual Basic .NET 版本的解决方案,请按照生成 Windows Communication Foundation 示例中的说明进行操作。

  3. 若要用单机配置或跨计算机配置来运行示例,请按照运行 Windows Communication Foundation 示例中的说明进行操作。

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.