.Net Remoting与WCF实现Server与Client通讯比较

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 08:53 点击:

 

.Net Remoting是微软早前推出的一项分布式通讯技术框架,在.Net架构的程序中有着比较广泛的应用。在WCF中,已经集成了Remoting的技术。不过,他们有着很多相同的概念,如:信道(Channel)、代理(Proxy)、寄宿(host)等。在如今仍有一些分布式系统应用中运行着由Remoting技术构建的系统。本文将描述在服务端与客户端的交互中,他们各自的实现方式。

 

  1、Remoting的实现。                                                                                          

 

 

  在Remoting中,远程对象是一个重要的概念。服务端通过将它注册到制定的信道中,客户端服务端公布的服务端注册的远程对象的URI,通过代理来使用它。在这种架构下的服务端与客户端要实现相互之间的通讯一般是使用事件的方式进行。

 

  Remoting的通讯模型中分三块,即:1、客户端、2、远程对象、3、寄宿程序(服务端寄宿的应用程序域)。

 

  注:远程对象一般通过继承自MarshalByRefObject,而继承自MarshalByRefObject的对象是不会离开它的应用程序域的。并且为了安全,一般我们都是通过将远程对象实现的接口提供给客户端,而不是远程对象。

 

  一、客户端发送消息到服务端。客户端获取来远程对象的代理,通过使用它的提供的接口以后,通过信道的传输便到了远程对象。远程对象在收到消息后,用事件的方式通过服务端以执行相应的操作。这时,事件是定义在远程对象中的,客户端进行操作以后,服务端可以直接通过订阅远程对象的事件而获取消息。

 

  二、服务端发送消息到客户端。在服务端,由于它是远程对象注册的应用程序域,服务端可以直接使用它。同样,服务端发送消息给客户端,也是通过事件来实现的。与客户端主动发送消息给服务端不同的是,定义在远程对象的事件运行在服务端,无法序列化到客户端。这种情况下,一般我们可以通过一种类似"中介者"的方式来进行操作。

 

  Remoting的程序结构如下图:

\                

 

 

  说明:

 

 Client:为客户端程序。为了可视性,为将他建成一个Winform的项目

 CommandAssembly:为公共程序集。它是客户端与服务端共享的一个类库,它包括远程对象实现的接口定义。

   Host:为服务端程序,即远程对象寄宿的应用程序。同样它是一个Winform的项目

   RemoteObject:为远程对象。

 

 

  首先,看看远程对象实现的接口定义:

 

01 /// <summary> 

 

02 /// 服务端通知客户端时的事件 

 

03 /// </summary> 

 

04 event DataChangeCallBack DataChangeEventHandler; 

 

05  

 

06 /// <summary> 

 

07 /// 服务端促触发事件函数 

 

08 /// </summary> 

 

09 /// <param name="entityName"></param> 

 

10 void ServerSideDataChange(string entityName); 

 

11  

 

12 /// <summary> 

 

13 /// 客户端调用服务端使用的接口函数 

 

14 /// </summary> 

 

15 /// <param name="entityName"></param> 

 

16 void ClientSideDataChange(string entityName);

 

 

 

   其次:远程对象的定义:

 

public class RemoteObject : MarshalByRefObject, IDataChange <

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • 浅析.NET下XML数据访问新机制
      • asp.net 面试+笔试题目第1/2页
      • C# 邮件地址是否合法的验证
      • C#高级编程:数据库连接[1]
      • asp.net 设置GridView的选中行的实现代码
      • 经典C++程序1
      • IIS 自动回收导致后台定时器失效的问题解决
      • ASP.NET&#160;GridView列表代码示例
      • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1