WCF笔记 1.WCF基础
第一章 WCF基础
System.ServiceModel
WCF中的所有消息均为SOAP消息,消息与传输协议无关(不仅限于HTTP)
服务的执行边界:客户端统一使用代理访问服务
地址,包括服务位置和传输协议,有5种:
TCP地址: net.tcp://localhost:8002/MyService
HTTP地址: http://localhost:8001
IPC地址: net.pipe://localhost/MyPipe
MSMQ地址: net.msmq://localhost/private/MyService 公有
net.msmq://localhost/MyService 私有
对等网地址: net.p2p://
契约 有4种:
服务契约
数据契约
错误契约
消息契约
服务契约:
ServiceContractAttribute特性,
不可继承,所以继承契约的类不具有对外公布的特性
只适用于class和interface
服务契约中的方法,要加上[OperationContract]才能对外公布,成为契约的一部分。
服务契约中的方法参数不能使用引用对象,只允许基本类型(包括string)或者数据契约。
[OperationContract]只适用于实例方法,不能应用于属性/索引/事件以及static方法
以上所述即 服务的边界
服务类要避免使用带参ctor,WCF只使用默认ctor
尽量避免直接将[ServiceContract]加到服务类——WCF要推断出契约的定义,还是要额外建立契约类/接口
为契约定义命名空间,确定其类型范围
[ServiceContract(Namespace="MyNameSpace")]
public interface IMyContract
为契约或契约方法定义名称
[ServiceContract(Name="Name")]
public interface IMyContract
[OperationContract(Name="MyMethod")]
void MyMethod();
}
托管
在Vista的Service中打开WAS服务: Windows Process Activation Service
2种托管:
IIS托管 *.svc 使用ServiceHost类,同时在Web.Config中指定ServiceName
自托管 宿主进程必须在客户端调用服务之前运行
宿主进程必须在运行时显示地注册服务类型,并为客户端的调用打开宿主
WAS托管
ServiceHost<T>
绑定:
9种标准绑定以及相应类
不同场景的使用规则
终结点 EndPoint,
地址,契约,绑定的混成品
可以在Web.Config中配置EndPoint和绑定方式
基地址(由宿主提供),相对URI
编程方式配置终结点
元数据交换
配置文件和编程两种方式
元数据交换终结点
配置文件和编程两种方式 使用BindingElement
使用ServiceHost<T>,简化以上的编程开发
一个元数据浏览器 MEX Explorer
客户端编程
生成代理 SvcUtil工具
客户端的配置文件
进程内托管的配置文件
SvcConfigEditor编辑器
创建和使用代理
关闭代理
调用超时
WCF体系架构
信道机制
context
使用通道 ChannelFactory<T>
InProcFactory<T>
可靠性
传输可靠性
消息可靠性
必备有序传递 DeliveryRequirements特性的TargetContract属性