WCF初探-3:WCF消息交换模式之单向模式
来源:互联网 发布:曼哈顿计划 知乎 编辑:程序博客网 时间:2024/06/02 10:05
1.单向模式(One-Way Calls):
- 在这种交换模式中,存在着如下的特征:
- 只有客户端发起请求,服务端并不会对请求进行回复
- 不能包含ref或者out类型的参数
- 没有返回值,返回类型只能为void
- 通过设置OperationContract的IsOneWay=True可以将满足要求的方法设置为这种消息交换模式
接下来,我们通过实例来演示这种模式,首先新建一个WcfDemo1的解决方案,添加名称为Service的类库项目作为服务端,新建IOneWay接口和OneWay类,由于单向模式中服务端并不会有返回操作,所以我们可以用线程时间来模拟客户端对服务端的调用情况。总个工程的结构如下:
服务契约接口中的代码如下:
using System.ServiceModel; namespace Service{ [ServiceContract] public interface IOneWay { [OperationContract(IsOneWay=true)] void SayHello(string name); }}
服务契约的实现代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Service{ public class OneWay:IOneWay { public void SayHello(string name) { System.Threading.Thread.Sleep(10000); } }}
接下来我们将服务寄宿起来,Host中的配置文件代码如下:
<?xmlversion="1.0"?><configuration> <system.serviceModel> <services> <servicename="Service.OneWay"behaviorConfiguration="OneWayBehavior"> <host> <baseAddresses> <addbaseAddress="http://127.0.0.1:1234/OneWay/"/> </baseAddresses> </host> <endpoint address=""binding="wsHttpBinding" contract="Service.IOneWay"/> <endpoint address="mex"binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <behaviors> <serviceBehaviors> <behaviorname="OneWayBehavior"> <serviceMetadatahttpGetEnabled="True"/> <serviceDebugincludeExceptionDetailInFaults="True"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
Program.cs中的代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.ServiceModel;using Service; namespace Host{ class Program { static void Main(string[] args) { using (ServiceHost oneWayHost = newServiceHost(typeof(OneWay))) { oneWayHost.Opened += delegate { Console.WriteLine("单向通讯服务已经启动,按任意键终止!"); }; oneWayHost.Open(); Console.Read(); } } }}
到此,我们完成了对服务的寄宿,启动Host.exe,在浏览器中输入http://127.0.0.1:1234/OneWay/我们可以看到寄宿成功的页面。在客户端添加服务引用:
引用后在客户端程序添加以下代码:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Client.OneWayServiceRef; namespace Client{ class Program { static void Main(string[] args) { Console.WriteLine("****************单向通讯服务示例*******************"); OneWayClient proxy = newOneWayClient(); Console.WriteLine("方法调用前时间:"+ System.DateTime.Now); proxy.SayHello("WCF"); Console.WriteLine("方法调用后时间:" + System.DateTime.Now); Console.Read(); } }}
生成后运行程序Client.exe,可以看到以下效果:
我们发现前后两次的时间相同,虽然服务器方法的时间进程暂停了10s,但客户端的表现出的只是单向的,并没有等待服务器的时间,也就是服务器并没有像客户端发送响应的消息。
以上是我们程序表现出来的结果。接下来,我们通过消息层面说明这个。启动vs自带的WCF客户端验证程序,在开始菜单中找到如下图所示的工具:
点击启动该命令行,输入wcftestclient,回车,启动WCF客户端测试程序:
在客户端测试程序中添加服务地址:
点击对应的方法,点击调用按钮,最后我们发现服务器给出了一条提示:
点击左下角的xml我们可以看到发送的具体消息:
我们发现只有请求消息,没有返回的消息,说明服务器并没有对此作出任何反应。
本文通过程序实例和消息层面说明消息交换模式中的单向模式,在接下来的文章中,我将继续演示消息交换中另外两只模式:请求/答复(Request/Reply) 、双工(Duplex)。
此文只对平时学习的一个积累,如有不当之处,欢迎指出,共同学习进步。
作者:wangweimutou
出处:http://blog.csdn.net/wangweimutou/article/details/32325703
本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
- WCF初探-3:WCF消息交换模式之单向模式
- WCF 之 消息交换模式
- WCF初探-4:WCF消息交换模式之请求与答复模式
- wcf消息交换模式
- 【菜鸟学WCF】Wcf消息交换模式
- WCF的消息交换模式
- WCF实现消息推送(单向操作/观察者模式)
- WCF从理论到实践(7):消息交换模式
- WCF从理论到实践(7):消息交换模式
- WCF之调用模式
- WCF前世起源之消息交换SOAP
- 《WCF技术内幕》翻译14:第1部分_第3章_消息交换模式、拓扑与编排:消息交换模式(MEP)
- [老老实实学WCF] 第九篇 消息通信模式(上) 请求应答与单向
- 老老实实学WCF 第九篇 消息通信模式(上) 请求应答与单向
- 学习WCF之路8:消息通信模式
- WCF开发之消息模式(Message Pattern)
- 在对等网络中模拟WCF单工消息交换模式
- 那些年,我们一起学WCF--(3)消息通信模式
- flex4 操作word文档
- 自动找bug插件
- ARM交叉编译搭建SSH-Server至目标板
- 自定义控件 GifImageView 可以播放gif动态图的ImageView
- s3c2440 UART设备结构体的定义
- WCF初探-3:WCF消息交换模式之单向模式
- 非计算机类专业毕业生五年程序员职业生涯的回顾和思考
- c#记事本代码
- 解决wine不能输入的问题
- HashTable 的使用
- 块设备
- gcc 简单的 hello-world 到底连接了什么
- Activity生命周期
- Hadoop依赖jar包的处理方式