知识大全 一起学WCF--消息通信模式
Posted 知
篇首语:入于污泥而不染不受资产阶级糖衣炮弹的侵蚀,是最难能可贵的革命品质。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 一起学WCF--消息通信模式相关的知识,希望对你有一定的参考价值。
一起学WCF--消息通信模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
这一节 大家共同研究下WCF消息的通信模式 大体上来说 WCF共有 中通信模式
请求答复模式
单程模式
双工模式
接下来 我们一一研究
请求答复模式
请求答复模式是我们最常见和最常用的模式 WCF通信默认就采用的这种模式 这种模式就是客户端向服务器端发送消息后 需要等待服务器端执行完成 并返回结果
客户端才能继续向下执行
服务器代码
[ServiceContract]
public interface IService
[OperationContract]
string GetData(int value)
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType posite)
// TODO: 在此添加您的服务操作
public class Service : IService
public string GetData(int value)
System Threading Thread Sleep( )
return string Format( You entered: value)
客户端
private void button _Click(object sender EventArgs e)
//请求响应模式
//等待服务器端执行完毕 客户端才继续向下执行
SingleService Service Client client = new SingleService Service Client()
string result = client GetData( )
MessageBox Show(result)
单程模式
单程模式是客户端向服务器端发送消息后 并不需要等待服务器端执行完成和返回结果 客户端就可以继续向下执行
使用单程模式的时候 要把操作契约的属性isoneway设为true [OperationContract(IsOneWay=true)]
单程模式的操作契约的返回值都为void 单程契约的方法参数中不能使用ref out标记
服务器端契约
[OperationContract(IsOneWay=true)]
void SingleGetData(string name)
客户端
private void button _Click(object sender EventArgs e)
//单程模型
//不用等待服务器端 直接直接向下执行
SingleService Service Client client = new SingleService Service Client()
client SingleGetData( hello )
MessageBox Show( hello world )
双工模式
双工模式就是客户端可以向服务器端发送信息 服务器端也可以向客户端发送信息 可以理解为客户端可以调用服务器端的方法 服务器端也可以
调用客户端的方法 双工模式要在契约中声明回调契约 服务器端通过回调契约调用客户端方法 声明回调契约用CallBackContract
双工模式实际上可以分为单程双工模式和请求答复双工模式
单程双工模式
服务器端契约
[ServiceContract(CallbackContract = typeof(ICallBackDuplService))]
public interface IDuplService
[OperationContract]
void DoWork()
[OperationContract(IsOneWay=true)]
void GetDuplData(string data)
public interface ICallBackDuplService
[OperationContract(IsOneWay=true)]
void ShowMsg(string msg)
public class DuplService : IDuplService
public void DoWork()
#region IDuplService 成员
public void GetDuplData(string data)
string str= 欢迎使用双工 + data;
//获取当前操作的上下文
ICallBackDuplService callback = OperationContext Current GetCallbackChannel<ICallBackDuplService>()
callback ShowMsg(str)
客户端代码
private void button _Click(object sender EventArgs e)
InstanceContext instanceContext = new InstanceContext(new CallBackDuplService())
DuplService DuplServiceClient client = new DuplService DuplServiceClient(instanceContext)
client GetDuplData( Hello world )
public class CallBackDuplService:DuplService IDuplServiceCallback
#region IDuplServiceCallback 成员
public void ShowMsg(string msg)
//显示数据
System Windows Forms MessageBox Show(msg)
#endregion
请求答复双工模式
服务器端契约
[ServiceContract(CallbackContract = typeof(ICallBackDuplService))]
public interface IDuplService
[OperationContract]
void DoWork()
[OperationContract(IsOneWay = true)]
void HelloDupl(string name)
public interface ICallBackDuplService
[OperationContract]
void ConsoleMsg(string msg)
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode Reentrant)]
public class DuplService : IDuplService
#region IDuplService 成员
public void HelloDupl(string name)
string str = 双工通信模式 +name;
ICallBackDuplService callback = OperationContext Current GetCallbackChannel<ICallBackDuplService>()
callback ConsoleMsg(str)
#endregion
客户端
private void button _Click(object sender EventArgs e)
InstanceContext instanceContext = new InstanceContext(new CallBackDuplService())
DuplService DuplServiceClient client = new DuplService DuplServiceClient(instanceContext)
client HelloDupl( 请求答复 )
public class CallBackDuplService:DuplService IDuplServiceCallback
#region IDuplServiceCallback 成员
public void ShowMsg(string msg)
//显示数据
System Windows Forms MessageBox Show(msg)
#endregion
#region IDuplServiceCallback 成员
public void ConsoleMsg(string msg)
System Windows Forms MessageBox Show(msg)
#endregion
cha138/Article/program/net/201311/12127相关参考
WCF通信简单示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 今天写了一个WCFdemo给大
基于WCF和MSMQ构建发布/订阅消息总线 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文是
一起学WCF--数据契约 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这一节我们来了解下WCF
一起学WCF--PerSession实例行为 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这一
知识大全 SignalR与WCF双工模式结合实现服务端数据直推浏览器端
SignalR与WCF双工模式结合实现服务端数据直推浏览器端 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
使用微软消息队列实现C#进程间通信 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 顾名思义微软消
利用Observer模式解决组件间通信问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 问题的
手机进入底电模式还能收到电话、微信消息吗?你好没有影响的低电量模式可以延长手机的续航时间:打开后,将停用邮件获取、后台应用刷新与自动下载,并减弱或关闭部分视觉效果。iOS9的低功耗模式原理也并不复杂,
WCFTips之WCF应用程序的程序集划分 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! WCF
ajax调用WCF服务 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 关于AJAX调用WCF服务