### WCF 2服务编程第二章知识点解析 #### 服务契约概述 在Windows Communication Foundation (WCF)中,服务契约是定义服务所暴露的行为的基本构建块。这些契约规定了服务如何与其他实体通信,并且通常包括服务提供的操作以及这些操作的数据类型。 在WCF 2中,`ServiceContract`特性用于标记一个接口或类,使其成为一个服务契约。通过这种方式,开发人员可以利用熟悉的编程语言(如C#)来创建面向服务的应用程序。这一章深入探讨了如何在不同编程模型之间建立联系,通过操作重载和契约级别来实现这一点。 #### 操作重载 操作重载是指在同一接口或类中定义多个同名但参数类型或数量不同的方法。这在某些编程语言中很常见,例如C#和C++。然而,WSDL并不支持操作重载,这在WCF服务中可能会导致问题。例如: ```csharp [ServiceContract] interface ICalculator { [OperationContract] int Add(int arg1, int arg2); [OperationContract] double Add(double arg1, double arg2); } ``` 上述代码会导致编译错误,因为WCF无法区分这两个同名但参数类型不同的方法。为了克服这个问题,可以通过设置`OperationContract`特性的`Name`属性为不同的值来手动启用操作重载。 ##### 实现操作重载 要实现操作重载,需要在服务端和客户端为每个重载的操作指定唯一的名称。例如,对于上述示例中的`ICalculator`接口,可以这样定义: ```csharp [ServiceContract] interface ICalculator { [OperationContract(Name = "AddInt")] int Add(int arg1, int arg2); [OperationContract(Name = "AddDouble")] double Add(double arg1, double arg2); } ``` 这样,每个方法都有了一个唯一的名称,可以被正确地区分。在客户端生成代理时,这些别名会被映射到相应的操作上。 ##### 客户端支持操作重载 客户端也需要支持这些操作重载。这意味着客户端生成的代理类必须能够正确地调用这些重载的方法。例如: ```csharp public partial class CalculatorClient : ClientBase<ICalculator>, ICalculator { public int AddInt(int arg1, int arg2) { return Channel.AddInt(arg1, arg2); } public double AddDouble(double arg1, double arg2) { return Channel.AddDouble(arg1, arg2); } } ``` 这里,客户端代理类中也显式地定义了重载方法,并通过内部代理调用相应的方法。 #### 设计和分离服务契约 除了操作重载之外,本章还介绍了一些简单而强大的设计原则和技术,用于分离服务契约。这包括但不限于: - **接口层次结构**:使用层次化的接口来组织相似的服务契约。 - **契约版本控制**:通过不同的命名空间或版本号来管理契约的变化。 - **错误处理**:定义特定于错误的契约元素,以便更好地处理服务调用中的异常情况。 - **数据类型**:确保服务契约中使用的数据类型清晰、一致,以减少混淆。 #### 与契约元数据的交互 章节末尾部分讨论了如何通过编程方式与契约元数据进行交互。这涉及到使用WCF提供的API来获取有关服务契约的信息,比如元数据文档、数据类型定义等。这对于动态配置服务、自动生成文档或进行运行时检查非常有用。 WCF 2的第二章主要涵盖了服务契约的基础知识,特别是操作重载的概念及其实现方法。此外,还讨论了设计和分离服务契约的最佳实践,以及如何在运行时与契约元数据进行交互。这些知识点对于理解WCF服务编程的核心概念至关重要。





























- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 计算机通信与网络远程控制技术应用分析.docx
- 计算机辅助教学在高校教育的现状和对策研究.docx
- C语言课程设计语言代码简易计算器设计[].doc
- 单片机智能温室控制系统设计方案.doc
- 南京邮电大学网络工程专业.doc
- 利用物联网技术推动徐州健康服务业发展研究.doc
- 单片机的模糊温控制器的设计.doc
- 北京邮电移动通信第三版第一章概述概要.ppt
- AutoCAD工程师二季认证考试题库.doc
- 大学软件工程基础知识测试题.doc
- 互联网+背景下农村小微规模学校美术教学策略探索.docx
- 软件开发项目管理说明.docx
- 《电气控制与PLC技术》电子教案[精].doc
- 云桌面虚拟化解决实施方案(数字图书馆办公).doc
- 信息系统项目管理师辅导.ppt
- 2011年9月计算机二级考试Access真题及答案.pdf


