WCF的基本编程 设计服务协定 如何:创建请求-答复协定

 

本主题演示了创建使用请求-答复协定的方法所需的基本步骤。这些方法调用 Windows Communication Foundation (WCF) 服务上的操作并期待答复。必须根据此协定的条款发送答复并与请求相关联。即使相关方法返回的是 void,基础结构也将创建并发送一条空消息,以向调用方指示该方法已返回内容。取消创建和调度答复消息的唯一方法是对操作使用单向协定。

有关 如何指定操作协定的更多信息,请参见 OperationContractAttribute 类,尤其是 IsOneWay 属性。

有关 创建用于双工协定的客户端应用程序的更多信息,请参见如何:使用单向和请求-答复协定访问 WCF 服务

创建请求-答复协定

  1. 通过将 ServiceContractAttribute 类应用到定义服务将要实现的方法的接口,创建服务协定。

  2. 通过将 OperationContractAttribute 类应用到相应的方法,指示客户端可以调用接口中的哪些方法。

  3. IsOneWay 属性的值指示操作是否返回答复消息。如果操作有一个请求-答复协定,则将此属性设置为 false。如果操作有一个单向协定,则将此属性设置为 true。默认情况下,所有使用 OperationContractAttribute 类的操作都满足请求-答复协定,原因是默认情况下 IsOneWay 属性为 false。因此,将 attribute 属性的值为 false 是可选的。

示例

下面的示例为提供 AddSubtract 方法的计算器服务定义一个协定。通过使用此协定,客户端可调用 AddSubtract 方法,并分别等待返回和与差。Multiply 方法不是协定的一部分,因为它没有通过 OperationContractAttribute 类进行标记,因此不可以由客户端访问。

using System.ServiceModel;
            [ServiceContract]
            public interface ICalculator
            {
            [OperationContract]
            // It would be equivalent to write explicitly:
            // [OperationContract(IsOneWay=false)]
            int Add(int a, int b);
            [OperationContract]
            int Subtract(int a, int b);
            int Multiply(int a, int b)
            }
  • 通过使用 ServiceContractAttribute 类标记服务协定接口并使用 OperationContractAttribute 类标记服务协定接口的方法,可以在部署服务之后,自动生成使用 Web 服务描述语言 (WSDL) 的服务协定定义、客户端协定和代码。
  • 一旦将服务作为标准 WSDL 文档(用于指定操作以及各自的输入和输出)进行部署,就可以访问 WCF 服务协定的外部可见定义。通过将 ?wsdl 查询追加到服务的 HTTP 基址,并让浏览器指向生成的统一资源标识符 (URI),可显示 WSDL。
posted @ 2008-11-10 20:59  木饭  阅读(261)  评论(0编辑  收藏  举报