简介
远程方法调用发展到现在,已经有以下几种框架实现:DCE/RPC,CORBA,DCOM,MTS/COM+,Java RMI,Java EJB,Web Services/SOAP/XML-RPC,NET Remoting,本文主要介绍了.NET远程方法调用的原理,实现以及与微软COM/DCOM实现的异同点。
框架
Microsoft .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。众所周知,Web服务仅仅提供了一种简单的容易理解的方法来实现跨平台,跨语言的交互,而DotNet Remoting相对于Web服务就像Asp相对于CGI那样,实现了一种质的转变。DotNet Remoting提供了一个可扩展的框架,它可以选择不同的传输机制(HTTP和TCP是内置的),不同的编码方式(SOAP以及二进制代码),安全设置(IIS或SSL),同时提供了多种服务,包括激活和生存期支持。
远程方法调用
对于远程方法调用来说,最直接的问题恐怕是:一个本地方法,推而广之,一个本地对象,如果放在网络环境中,如何传递这个方法的调用,返回,如何传递这个对象的请求。虽然对于应用开发人员来说这个并不是必不可少的事,但对于我们学习分布式
操作系统来说,我想这是应该搞清楚的。我们知道,DCOM协议也被称为对象RPC,它建立在DCE RPC协议基础上,也就是说,在网络传输这一层,它必须使用特殊的协议。另外Windows RPC 机制要求熟悉的类型和使用 IDL 工具的封送处理知识,并向开发人员公开 RPC 客户端和服务器存根的管理。Remoting 在为 .NET 提供 RPC 时要容易得多,而且由于使用简单易懂的 .NET 数据类型,从而消除了早期 RPC 机制中存在的类型不匹配的情况(这是一个非常大的威胁)。配置为使用 HTTP 或 TCP 协议,并使用 XML 编码的 SOAP 或本机二进制消息格式进行通信。开发人员可以构建自定义的协议(通道)或消息格式(
格式化程序),并在需要时由 Remoting 框架使用。服务器和客户端组件都可以选择端口,就象可以选择通信协议一样。由此带来的一个好处是,很容易建立并运行基本的通信。