.NET Remoting构建分布式数据库查询2011-10-15 计算机与信息技术 张永峰 李也白 宋磊引言随着传统的数据库、计算机网络和数字通信技术的快速发展,以数据分布存储和分布处理为主要特征 的分布式数据库系统的研究和开发越来越受到人们的关注。微软提供了两种解决方案来为用户实现数据服 务,即 .NET Remoting 和 Web Service 技术。众所周知,Web Service 技术已经是业界中一种公认的标 准数据传输方案,它基于 HTTP 之上,可以轻松穿过防火墙;而 Remoting 技术则是在 .NET 环境下,在 应用程序内部或应用程序域之间传输数据的方案,它有几种通道可以在数据传输中使用,选择适当的通道 同样可以达到穿越防火墙。然而,在一个封闭的网络环境中,选择TCP通道将获得更好的连接性能,这种 情况下,无疑 .NET Remoting具有明显的优势。Remoting 框架简介.NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这种框架提供了多 种服务,包括激活和生存期支持,以及负责与远程应用程序进行消息传输的通讯通道。而且,.NET Remoting 是一个内容丰富的、可扩展的框架,它使得分布在不同应用程序域(AppDomain)、不同进程和不 同计算机上的对象可以实现无缝通信。它提供的编程模型和运行时支持,功能强大且非常便捷,能够实现 透明的交互。理解Remoting框架1、基本原理

图1 .NET Remoting体系结构图.NET Remoting中通过通道(channel)来实现两个应用程序域之间的对象通信。Remoting的通道主要 有两种:Tcp和Http。在.NET中,System.Runtime.Remoting.Channel中定义了IChannel接口。IChannel接 口包括了TcpChannel通道类型和Http通道类型。它们分别对应Remoting通道的这两种类型。通道对象代表 了到远程应用程序的连接。每个通道对象还包含格式化程序对象,将方法调用转换为已知格式的消息。其基本原理如图1所示,首先,客户端通过通道访问服务器端对象,以获得服务器端对象的代理。服务 器端对象也即通常所说的远程对象,使用时是通过跨应用程序边界传递对象引用获得该远程对象的代理。 对于客户程序来说,代理提供了与远程对象完全一样的方法和属性。当代理的方法别调用时,就会创建消 息,通过使用格式化程序类,将这些消息串行化并发送到客户通道中。客户通道和服务器通道进行通信, 以通过网络传输消息。服务器通道则使用格式化程序并行化消息,从而将方法发送给远程对象。通过代理 ,客户端应用程序就可以像使用本地对象一样来操作远程对象。