您的位置:首页 > 其它

WCF服务协定的理解

2014-05-25 21:37 183 查看
1、创建服务协定

类和接口都可以定义服务协定

建议使用接口,因为接口可以直接对服务服务协定建模,平时都以接口为主

定义服务协定

在类或接口的上面使用ServiceContaratAtlnibute属性来标记,则这个类或接口为服务的类或接口

定义服务操作

在接口中的方法的上面使用OpenationContractAttribute属性标记,如果没有使用此属性来标记则该操作(即方法)在客户端是无法访问到的
服务操作(即方法)它不会传递对象的引用(即是直传递而不是引用传递)它们传递的是对象的副本(“注:”此时可能不再是本机编程,服务可能不在本机上)

服务操作的消息模式

a、默认的模式(请求与答复模式)

即使该方法的修饰的返回值为void都为请求与答复模式,如果方法的修饰为void就人有一隐藏的返回值,用于判断是否提出请求与是否回复了请求
此模式只有接收到服务端的答复后才会继续往下执行,这样会造成客户端出现很多的等待情况,例如:插入很多的数据的时候就需要长时间的等待,是是个请求与答复的缺点

b、单向模式

客户端不必先行等待操作的完成就会立即的往下执行,除非发送的数据庞大或发送的数据错误,不然是不需要等待的,但它的缺点为不会处理SoAp错误
它的使用格式为:将Isoneway设置为true
如:[OperationContract(IsOneWay=true)]

双工模式

服务端和客户端均能独立地向对方发送消息
对于那些类似于事件行为的服务来说这种双向通信模式就很有用
设计双工模式协定必须设计回调协定,并将该回调协定的类型分配给标记服务协定的ServiceContractAttribut属性的CallbackContract属性的propert

要实现双式模式则必须创建第二个接口,该接口包含在客户端调用的方法声明
//SessionMode = SessionMode.Required 说明开启了对话模式

//CallbackContract = typeof(ICalculatorDupiexCailback) 说明了回调接口,即说明了客户端的接口
如:[ServiceContract(Namespace = "http:Microsoft.ServiceMode1.Samples", SessionMode = SessionMode.Required,CallbackContract = typeof(ICalculatorDupiexCailback))]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: