.Net Remoting浅释

面试的时候,被问到.Net Remoting 工作方式及它和Web Service的区别,在此做个整理,顺便回顾一下。

.Net Remoteing:

  我们可以认为.Net Remoting是一种分布式处理方式,它提供了一种允许对象通过应用程序域与另一个对象进行通信的框架。

.NET Remoting 使用了 信道 和 串行化 机制来串接两台机器间的对象,信道是负责处理网络通信的部份,而串行化则是处理对象与流数据的处理工作。

  • 信道支持了 IPC(进程间通信)、TCP 与 HTTP 通信协议。
  • 串行化支持二进制(binary)或 XML(SOAP)通信协议的数据流。

当服务端设置好使用的通道以及协议后,客户端必须要跟随服务端的设置,并且依服务端决定的活化模型来启动,而程序设计的方法和一般调用组件般简单。

public static void Main()
{
   RemotingConfiguration.Configure("Client.exe.config"); // 读取设置
   RemotableType remoteObject = new RemotableType(); // 创建可远程处理对象
   Console.WriteLine(remoteObject.SayHello()); // 调用远程方法
}
View Code

更多的例子和代码,请点击参考

简单的总结是:

发送方:先serialize,然后用channel(tcp,http等方式)传送byte流。
接受方:先接受byte流,然后用相同方法的serialize对这个数据流进行deserialize。

所以remoting 需要你设定serialize的模式(soap或者binary),以及channel(http, tcp)
当然你也可以使用默认的方式。

 接下来就是简单的比较:

  .Net Remoting 使用 SOAP /Http 协议来通信,与Web Service在服务端和客户端之间所操作的方法近乎相同,客户端可以不必考虑使用的协议,即可访问服务端所开放的对象。但Web Service是可以跨平台的,而.Net Remoting只能在.Net平台。

  .Net Remoting是有状态的,是紧密耦合;web service是无状态的(因为http是无状态的),是松散耦合;总的来说remoting适合局域网内,对性能和响应效率要求较高的场合;而web service适合跨网络,跨系统,对移植性和通用性要求较高的场合;

  .Net Remoting在局域网上的表现绝对是大大强于web services,使用tcp管道不失真的传输数据,从而减轻了序列化和反序列化的工作,当然使用Web服务的时候,一台计算机存储32位整数的方式与另一台计算机的存储方式是不同的,因此需要像XML这样易于理解的格式。web services 是IIS执行的,而.NET Remoting的扩展性强,使用HTTP信道和XML可以达到web services的技术的一部分,可以认为web service是.Net Remoting的一个子集。

 

 

posted on 2014-03-06 21:49  星小野  阅读(176)  评论(0编辑  收藏  举报