技术开发 频道

.Net Remoting和Web Service大比拼



【IT168 专稿】

    随着.NET的推出,微软引入了一套新的通讯技术:Web Services和.NET remoting。.NET remoting和ASP.NET Web Services可以为建立分布式的应用提供强有力的支持。因此,为了在我们的应用程序中选择合适的技术,充分理解这两种技术的工作原理是非常必要的。
    Web Service技术使用了HTTP、XML和SOAP技术进行通讯,因此,Web Service是跨平台的和真正的跨越防火墙的B2B应用集成技术。由于Web Services需要依赖商业标准在Internet上提供服务,因此,这种技术是语言、平台和设备独立的。Remoting技术可以允许程序和软件通过应用程序域、进程和不同机器之间进行交互。这将使我们的应用程序可以使用在网络环境中的远程资源。
    Web Services和remoting技术都支持开发分布试的应用程序和应用程序集成,但是我们需要考虑的是它们有哪些不同。在本文中将给出这两种技术的不同点,并为每一种实现给出实例以供读者更深入地理解这两种技术。

一、.NET Remoting 概述
 
.NET Remoting使用了一种非常有弹性的扩展性的框架。Remoting使用了.NET的一个应用程序域(AppDomain)的概念来确定它的活动性。AppDomain是一个抽象的结构,用来保证数据和代码的隔离,但并不依赖于操作系统的特殊概念,如进程或线程。一个进程可以包含多个AppDomains,但是一个AppDomain只能存在于一个进程。如果在程序中通过AppDomain调用,那么.NET Remoting将获得这个位置。如果一个对象位于同一个AppDomain中,那么这个对象被认为是本地的对象。

   
.NET remoting中,所有继承于System.MarshalByRefObject的类的对象都被视为远程对象。MarshalByRefObject类提供了通过应用程序域访问远程对象的基本功能。在.NET remoting中,客户端不会直接调用方法,而是使用一个协议对象作为中转来调用远程对象中的方法。每一个在远程对象中定义的public方法都可以被客户端调用。图1.Net Remoting的构架图:


                    图1
    当客户端调用远程方法时,代理首先会接收这个调用。并使用一个适当的格式来对这些调用信息进行编码,然后通过Channel将调用送到服务器。在服务端AppDomain的一个Channel接收了这个请求,并将这个请求交给了适当的Remoting对象处理,并调用响应的方法。一位执行完方法,方法的返回值就会被送回到客户端。
    Remoting框架由两种格式组成:二进制和SOAP格式。二进制格式是非常快的,并以适当的二进制格式来对方法进行编码调用。SOAP格式要比二进制格式慢,但是它允许开发人员使用SOAP格式来对远程信息进行编码。至于使用哪种方式,开发人员可以根据自己的需要决定。
二、远程对象的不同类型
    远程构架允许我们建立两个不同类型的远程对象。
 
   1. 客户端对象:这种类型的远程对象是一个在客户端进行创建和销毁的服务端对象。这种远程对象的实例在客户端调用服务端对象的一个新操作时创建。对象实例的生命周期和客户端有关。一但客户端不太需要远程对象后,这个对象就会被垃圾回收器回收。
2. 服务端对象:这种对象的生命周期被远程服务器管理,而并不是由客户端创建的对象。这种对象和客户端对象的区别是当对象完成工作后,远程对象由客户端控制。也就是说,当客户端调用新的远程对象或是Activator.GetObject时,服务端对象并不被创建。有两种类型的服务端对象。它们是:
    (1) 独享调用:这种调用方式对于一个客户端的请求只使用一个新的远程对象。在处理完客户端请求后,这个远程对象就会被垃圾回收器回收。因此,这个远程对象并不会在两个或以上的客户端请求中共享。
    (2)
共享调用:这种调用方式和独享调用的区别是这种方式可以在不同请求之间共享远程对象实例,而独享调用对每一个客户端请求创建一个单独的远程对象。
 
1
相关文章