基本WCF编程

来源:互联网 发布:js数字滚动抽奖 编辑:程序博客网 时间:2024/05/21 07:28

WCF 是一个运行时和一组 API,用于创建在服务与客户端之间发送消息的系统。

 WCF 建立在基于消息的通信这一概念基础之上。

消息在终结点之间发送。终结点是发送或接收消息(或执行这两种操作)的场所,它们定义消息交换所需要的所有信息。

“终结点”以基于标准的方式描述消息应发送到的位置、消息应如何发送以及消息应具有的形式。服务可以将这些信息作为元数据加以公开。

 

 

服务协定指定终结点与外界通信的内容,更具体的说,它是有关一组特定消息的声明,这些消息被组织成基本消息交换模式,如请求/答复,单向和双工。

如果说服务协定是一组在逻辑上相关的消息交换,那么服务操作就是单个消息交换。

服务协定指定以下内容:

  • 协定公开的操作。

  • 针对交换的消息所进行的各种操作的签名。

  • 这些消息的数据类型。

  • 操作的位置。

  • 用于支持与服务成功通信的特定协议和序列化格式。

WCF 应用程序使用托管属性、接口和类来定义服务的结构并实现该服务

服务即一组操作。

在 Windows Communication Foundation (WCF) 应用程序中,通过创建一个方法并使用 OperationContractAttribute 属性对其进行标记来定义操作

若要创建服务协定,需要将操作组合到一起,具体方法是在使用 ServiceContractAttribute 属性标记的接口中声明这些操作,或在使用同一属性进行标记的类中定义它们

任何不具有 OperationContractAttribute 属性的方法都不是服务操作,并且不能公开供 WCF 服务的客户端使用。像任何托管方法一样,这些方法只能由位于它们声明的访问范围之内的对象调用。

建议您使用接口,因为接口可以直接对服务协定建模。如果不经过实现,接口的作用只是根据特定签名对一组方法进行定义。同样,没有实现的服务协定根据特定签名对一组操作进行定义。如果实现服务协定接口,即可实现 WCF 服务。

服务协定接口具有托管接口的所有优点:

  • 服务协定接口可以扩展任何数量的其他服务协定接口。

  • 一个类可以通过实现服务协定接口来实现任意数量的服务协定。

  • 您可以通过更改接口实现来修改服务协定的实现,而让服务协定保持不变。

  • 您可以通过实现旧接口和新接口来确定服务的版本。老客户端连接到原始版本,而新客户端则可以连接到较新的版本。

每个操作都有一个返回值和一个参数,即使它们为 void

显式设置服务协定名称和命名空间。