WCF学习总结(二)
来源:互联网 发布:群发短信软件哪个便宜 编辑:程序博客网 时间:2024/05/01 18:21
客户端和WCF服务通信的过程:
客户端通过代理调用WCF服务,代理通过服务地址找到特定的服务,调用执行特定的服务方法。
WCF服务元数据:
WCF服务元数据是WCF服务的核心部分服务地址(Address)、绑定(通信协议Binding)、契约(服务、操作、数据Contract)的原始描述信息。服务所公开的元数据包括XSD(文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值)和WSDL文档(用于描述服务的方法、参数、参数个数、顺序、返回值、返回值的类型等方法的相关信息)。.Disco文档(描述服务的协议、地址、命名空间等信息)。
WCF暴露元数据的作用:
1. WCF服务的元数据描述服务的核心信息,客户端需要了解这些特征以便与该服务进行通信。
2. 解决了异构客户端服务交互的关键问题。 元数据基于XML,自描述。客户端可以根据服务的元数据反序列换生成本地代码,无论是c#,vb还是java语。
WCF和Web Service比较:
两者都包括服务的本地代码文件(反序列化生成的本地服务相关代码),WSDL服务描述文件、XSD服务结构文件。WCF框架模型一定程度上参考了以前的ASP.NET Web Service,并对此进行了扩展。
WCF服务元数据交换方式介绍:
1. 基于HTTP-GET协议提供元数据: HTTP/GET请求。
2. MEX元数据交换终结点:元数据交换终结点与其它终结点相似,包含自己的地址(Address)、绑定(通信协议Binding)、契约(服务、操作、数据Contract),但是使用的服务契约为WCF提供的接口IMetadataExchange。WS-MetadataExchange(MEX:WCF支持的基本绑定HTTP、HTTPS、TCP、IPC等绑定协议)。
WCF服务契约的设计:
比如有个汽车服务契约,其中包含跑(run),拉东西(carry),拉人(take)。那么我们在设计的时候如果只做一个接口比如:
[ServiceContract]
interface IVehicle
{
//操作契约,跑,开的契约
[OperationContract]
string Run();
//操作契约,拉人、载人的契约
[OperationContract]
string Take();
//操作契约,运输货物的契约
[OperationContract]
string Carry();
}
这就违反了接口设计中的主要的原则ISP接口隔离原则。我们不应该强迫服务继承他们不需要的操作。接口隔离原则ISP:使用多个专门的接口比使用单一的接口要好。从服务设计的角度来说:一个类对另外一个类的依赖性应当是建立在最小的接口上的。如果服务类只需要某一些方法的话,那么就应服务类可以继承相应的接口实现这些需要的方法,而不要实现不需要的方法。修改后如下:
//契约属性不支持继承,如果需要继承契约属性,接口标志契约属性,定义一个交通工具基接口契约
[ServiceContract]
interface IVehicle
{
//操作契约,跑,开的契约
[OperationContract]
tring Run();
}
//接口继承关系不支持ServiceContract继承
[ServiceContract]
interface ITruck : IVehicle
{
//操作契约,运输货物的契约
[OperationContract]
string Carry();
}
//接口继承关系不支持ServiceContract继承
[ServiceContract]
interface ICar : IVehicle
{
//操作契约,拉人、载人的契约
[OperationContract]
}
- WCF学习总结(二)
- WCF学习总结(一)
- WCF学习总结(三)
- WCF学习总结(四)
- WCF学习总结(五)
- WCF学习总结(六)
- WCF学习笔记(二):简单调用
- 学习WCF(二)
- WCF学习记录二
- WCF学习(二):契约
- WCF学习总结
- WCF 学习总结2 -- 配置WCF
- WCF 学习总结8 –- WCF 事务处理
- WCF 学习总结2 -- 配置WCF
- WCF 学习总结2 -- 配置WCF
- WCF 学习总结2 -- 配置WCF
- WCF 个人学习总结系列
- WCF+WPF学习要点总结
- vi 整行 多行 复制与粘贴
- linux下程序设计-获取当前时间
- 信用卡相关知识A-Z附英文词汇表.
- 捕捉WPF应用程序中XAML代码解析异常
- WPF中反转3D列表项
- WCF学习总结(二)
- 我的简约播放器
- 报表学习资源
- Android tips #1
- 很好玩的滚动效果
- svn 基本使用
- 关于dropdownlist的问题
- javascript RegExp正则的学习心得
- 【转载】非常规孔(槽孔)出gerber知识小结