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属性
 

 

原文地址:https://www.cnblogs.com/Jax/p/1091228.html