分布式对象通信
在分布式计算环境中,分布式对象通信实现了分布式对象之间的通信。主要角色是允许对象访问数据并在远程对像上调用方法(位于非本地存储空间中的对象)。在远程对像上调用方法称为远程方法调用( RMI )或远程调用,是远程过程调用(RPC)的面向对象的编程类似物。
班级和骨架
通过使用存根和骨骼实现有关如何实现通信通道的广泛使用方法。它们是生成的对象,其结构和行为取决于所选的通信协议,但总的来说提供了其他功能,可确保网络上可靠的通信。
在RMI中,程序员将存根(客户端上的位)定义为接口。 RMIC(RMI编译器)使用它来创建类存根。存根执行类型检查。骨骼是在实现接口存根的类中定义的。
当呼叫者想对所谓的对象执行远程调用时,它将请求委派给其存根,该存根启动了与远程骨架的通信。因此,存根将呼叫者通过网络参数传递给服务器骨架。然后,骨架将接收到的数据传递给了称为对象,等待响应并将结果返回到客户端存根。请注意,呼叫者和所谓的对象之间没有直接的通信。
在更多详细信息中,沟通包括多个步骤:
- 呼叫者调用该存根实施的本地程序
- 存根Marshalls调用类型和输入参数到请求消息中
- 客户端存根将消息通过网络发送到服务器,并阻止当前执行线程
- 服务器骨架从网络接收请求消息
- 骨架从请求消息中解开呼叫类型,并在称为对像上查找过程
- 骨架Unmarshalls程序参数
- 骨架在称为对像上执行过程
- 称为对象执行计算并返回结果
- 骨架将输出参数包装到响应消息中
- 骨架将消息通过网络发送回客户端
- 客户存根从网络接收响应消息
- 存根从消息中解开输出参数
- 存根将输出参数传递给呼叫者,释放执行线程和呼叫者然后继续执行
该体系结构的优点是,呼叫者和所谓对像都必须实现与网络相关的逻辑。该功能可确保网络上可靠的通信通道,已移至存根和骨架层。
存根
参与分布式对象通信的客户端对象称为存根或代理,是代理对象的一个示例。
该存根充当客户端对象的网关以及对通过其路由的服务器端对象的所有输出请求。存根包装客户端对像功能并添加网络逻辑确保客户端和服务器之间的可靠通信渠道。该存根可以手动编写或根据所选的通信协议自动生成。
存根是负责:
骨骼
参与分布式对象通信的服务器端对像被称为骨架(或在此处避免使用术语)。
骨骼充当服务器端对象的网关,所有传入的客户端请求都通过它路由。此外,骨架包装服务器对像功能并将其暴露给客户端,此外,添加网络逻辑可确保客户端和服务器之间的可靠通信通道。骨骼可以手动编写或根据所选的通信协议自动生成。
骨骼负责:
使用存根/骨架方法的协议
- 便携式分布式对象(PDO) - Objective -C
- 共同对象请求经纪架构(CORBA) - 语言
- Java远程方法调用(Java RMI) - Java
-
分布式组件对像模型(DCOM) - 微软,语言
- (请注意,该存根称为“代理”,骨骼称为“存根”)
- .NET远程- 微软,语言
- ddobjects - Borland Delphi
- 分布式红宝石(DRB) -红宝石