CORBA与RMI的区别
CORBA(公共对象请求代理体系结构)和RMI(远程方法调用)是Java中用于支持分布式计算的中间件技术。CORBA(公共对象请求代理体系结构)是一种中间件技术,允许网络环境中的分布式对象相互通信。RMI(远程方法调用)是一种中间件技术,允许Java对象调用远程JVM(Java虚拟机)对象上的方法。
阅读本文,了解更多关于CORBA和RMI以及它们之间区别的信息。
什么是CORBA?
CORBA(公共对象请求代理体系结构)是一种中间件技术,允许网络环境中的分布式对象相互通信。它是一个规范,描述了用不同编程语言编写的对象如何相互通信。CORBA是一种平台和语言无关的分布式计算方法。
CORBA的核心思想是,客户端应用程序向服务器对象发送服务请求,服务器对象提供请求的服务并将结果返回给客户端。对象请求代理(ORB)是实现此目的的中间件组件。ORB管理客户端和服务器之间的通信。
对象定位、对象激活、参数编组和错误处理都是ORB为客户端和服务器对象提供的服务。当客户端应用程序需要在服务器对象上执行方法时,它首先连接到ORB,ORB负责定位和激活正确的服务器对象。然后,ORB在将方法参数传递给服务器对象之前对其进行编组,服务器对象执行请求的操作,并通过ORB将结果发送回客户端。
CORBA还具有全面的功能和服务集合,例如安全、事务、事件和命名。这些服务允许开发健壮且可靠的分布式系统,用于关键任务应用程序。
什么是RMI?
RMI(远程方法调用)是一种中间件技术,允许Java对象调用远程JVM(Java虚拟机)对象上的方法。它提供了一种平台相关的Java分布式计算方法。
RMI的基本概念是,在一个JVM上运行的客户端程序可以调用在另一个JVM上运行的服务器对象上的方法。这是通过使用实现远程接口的远程对象来实现的。远程对象注册到RMI注册表中,允许客户端定位它并调用其方法。
当客户端应用程序想要调用远程对象上的方法时,它首先联系RMI注册表以获取对远程对象的引用。然后,客户端可以使用远程对象的方法,就好像它是本地对象一样。RMI系统负责编组方法参数和向客户端提供结果。
RMI提供各种服务来促进客户端-服务器通信,包括对象序列化、存根和骨架生成以及垃圾回收。对象序列化是将对象转换为可以跨网络传输的字节流的过程。存根和骨架生成是创建允许客户端和服务器之间通信的客户端和服务器端组件的过程。垃圾回收是自动释放不再需要的对象使用的内存的过程。
RMI经常用于客户端-服务器应用程序,其中在用户计算机上运行的客户端应用程序需要访问在远程系统上运行的服务器提供的 数据或服务。它也用于企业应用程序,以协调跨多个系统和部门使用分布式对象的活动。
CORBA与RMI的区别
下表重点介绍了CORBA和RMI的主要区别:
特征 |
CORBA |
RMI |
|---|---|---|
协议 |
CORBA协议 |
Java远程方法协议(JRMP) |
语言支持 |
支持多种编程语言 |
仅支持Java |
架构 |
基于对象请求代理(ORB)的分布式对象中间件 |
基于远程对象的客户端-服务器架构 |
复杂性 |
更复杂,需要更多设置和配置。 |
更简单,需要较少的设置和配置。 |
安全性 |
提供安全服务,例如身份验证、授权和加密。 |
提供安全服务,例如身份验证和加密。 |
性能 |
由于ORB的额外开销,通常较慢。 |
由于架构更简单,通常更快。 |
用途 |
适用于具有异构组件的复杂分布式系统 |
适用于完全用Java构建的更简单的分布式系统 |
全称 |
公共对象请求代理体系结构 (CORBA) |
远程方法调用 (RMI) |
结论
总之,CORBA和RMI都是允许在Java中进行分布式计算的中间件技术,但它们在架构、协议、语言支持、安全性和兼容性方面有所不同。CORBA更灵活,可以与多种编程语言和操作系统一起使用,而RMI更简单、更安全,并且专门为Java而设计。CORBA和RMI的选择取决于应用程序的具体需求及其部署环境。
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP