译者注:在正文中,[ ]里的内容为译者加入,非原版翻译所得。下同
什么是Remoting
Remoting是指程序和组件跨过特定的应用程序边界进行交互的一种行为。这里的“边界”代表着[同一台机器]不同的应用程序域或者不同机器之间的逻辑鸿沟。在.NET Framework中,Remoting技术为分布式应用程序提供的实现的基础——并且它自然而然的取代的旧的DCOM技术。
远程控制(remoting)的实现通常被分而治之为远程对象和运动对象[Mobile Object]。前者提供了在远端服务器上执行方法、传递参数和取回返回值的能力,它通常驻留在服务器上,并把它唯一的引用传递给其他机器。
当运动对象即将跨过边界时,他们被序列化成统一的流——要么是二级制流,要么是像XML那样可读的文本流,然后,在边界的另一边,它们被反向序列化[本来面目]并被加入到进程中去。服务器端和客户端都拥有相同的对象副本,同时,这些副本里的方法在被执行时,总会被模拟成本地环境,所以不会有任何的消息或事件逆传回最初构架这个对象的机器上。事实上,当对象被序列化或反向序列化后,副本对象[在边界另一端的机器上]和那台机器上普通的本地对象是没有任何区别的。
乍一看,.NET Remoing之于Web Services就仿佛往日的ASP之于CGI编程。然而,.NET Remoting与Web Services不同的是,它为你关注了很多事情,比如:.NET Remoting使你能够操纵有状态信息的对象。单单就这一点,使它成为未来分布式应用程序的基础。
除了对于富含状态信息对象的操纵,.NET Remoting为你提供了一个灵活而极富扩展性的框架来实现不同的传输机制(HTTP和TCP是默认支持的)、流编码(SOAP和二进制编码已在框架中实现)和安全设置(IIS安全属性和SSL)
拥有了这些选择后,去进一步扩展它们或者提供一个完整的新的实现的设想将成为可能。同时,.NET Remoting非常适合今日的分布式应用程序。你可以简单地通过配置文件,在Internet上适用的 HTTP/SOAP模式和局域网适用的TCP/二进制模式间进行选择。
另外,我们再也不需要手工编写接口信息——当然,如果你愿意这样,.NET Remoting也是支持的。取而代之的是,原数据可以从运行的服务器中提取了出来,并生成WSDL[The Web Services Description Language]格式的描述信息,或者从任何一个.NET 装配件中被提取。[本章完]