深入研究VB.Net远程调用对象的机制
http://tech.ddvip.com 2006年07月27日 社区交流
本文详细介绍深入研究VB.Net远程调用对象的机制
第二节 了解简单的远程调用
虽然你可以使用远程调用来填补曾由DCOM来满足的市场,但是远程调用与DCOM不同,远程调用使用一个你选择的网络接口,而DCOM不同,它使用许多难以预测的网络接口来与你的对象通讯,这使得远程调用在大多数的环境中可以很容易的配置。
当你调用一个使用远程调用的对象时,你通过一个通道进行调用过程:这个远程调用通讯机制与在网络上的对象通讯。你可以选择两个不同的通道甚至还可以创建你自己的通道。.NET中提供的两个通道是HTTP通道和一个直接的 TCP socket通道,你使用这些通道中的一个(即使你可能在同一台机器上)激活一个对象。
如果你使用 HTTP通道,你就得使用HTTP协议和简单对象访问协议(SOAP)与远程调用对象通讯,即使你使用 HTTP,你也未必非得使用端口80,虽然这是Web服务器默认的端口,你可以指定任意端口号作为通信端口。
直接的 TCP socket通道也是类似的,如果你选择这个通道,所有的通信就使用一个专有协议和一个SOAP的二进制实现来完成。虽然说这有些不好的地方,但是它多多少少能够快一些,因为把数据编码成二进制格式的过程比使用SOAP效率更加高,因为它是基于XML的。
每次你的代码调用远程调用对象的一个方法,远程调用子系统把这个方法调用转换成一条并把它通过选定的通道发送到远程调用对象中去。远程调用子系统然后再把这个方法的返回结果转换成一条消息返回到客户端应用程序中。在 beta 1中,使用一个单独的" black box "远程调用组件处理这个过程,但是在以后将发布的.NET中,这个体系结构将更加开放,将提供更多的可延伸性和可控制性。
和 DCOM一样,远程调用对象必须在一个过程中运行。因为 Microsoft Transaction Server ( MTS )和 COM+都不是特意支持 .NET,所以你需要在服务器上实现你自己的主机应用程序来。 你的主机应用程序使用远程调用服务来在消息通道上监听。 其实这比听起来要容易,因为远程调用为你考虑到所有的细节。 然而,远程调用调试起来可能会比较困难。 稍后我将讨论一些可以使调试变得更容易的技术。
作者:wayne 责编:豆豆技术应用