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

本文介绍如何创建使用请求-答复协定的Windows Communication Foundation (WCF)服务。重点介绍了如何通过OperationContractAttribute类来指定操作协定,以及如何通过IsOneWay属性来区分请求-答复与单向协定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

本主题演示了创建使用请求-答复协定的方法所需的基本步骤。这些方法调用 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。

转载于:https://www.cnblogs.com/tomkillua/archive/2008/11/10/1330954.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值