【IIOP:互联网间ORB协议】
IIOP,全称Internet Inter-ORB Protocol,是一种用于ORB(Object Request Broker,对象请求代理)之间通信的协议。它是GIOP(General Inter-ORB Protocol,通用ORB协议)的一个具体实例,设计目标是实现ORB间的互操作性,确保在不同系统和平台上的软件组件能够无缝协作。
### GIOP设计目标
1. **最大可能的可用性**:基于最广泛使用的TCP/IP协议,以确保GIOP能在不同ORB之间提供通用的通信基础。
2. **简单性**:设计简洁,易于在现有的或新ORB设计中添加对GIOP/IIOP的支持。
3. **可扩展性**:尽管起初是为TCP/IP设计的,GIOP被设计成可在其他面向连接的传输协议上实现,以适应未来网络规模的扩展。
4. **体系结构中立性**:GIOP视ORB为架构未知的实体,允许不同架构的ORB相互交互。
### GIOP功能
1. **低耗费**:GIOP旨在对ORB设计进行小量改动即可实现其支持。
2. **通用性**:通过七种消息格式,GIOP能支持ORB间的全部CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)功能,包括异常处理、操作环境传递和远程对象引用。
3. **动态对象定位和迁移**:GIOP的消息格式允许对象在不同位置激活和迁移,但不强制要求ORB实现这些机制。
### 公共数据表示(CDR)
CDR是GIOP中的关键部分,它定义了数据在网络传输中的表示方式。CDR提供:
1. **可变字节顺序**:允许具有不同字节顺序的机器进行通信,消息发起者决定消息字节顺序,接收者负责字节交换。
2. **对齐的主类型**:基本的OMG IDL数据类型在GIOP消息中按自然边界对齐,以适应不同架构的高效处理。
3. **完整映射**:CDR描述了所有OMG IDL数据类型的表示,包括TypeCode等不可传输的伪对象。
### GIOP消息格式
GIOP消息由`MessageHeader`组成,包括魔术字节、版本信息、字节顺序标志、消息类型和消息大小等字段,确保消息的正确识别和处理。
### GIOP传输假设
1. **面向连接**:GIOP依赖可靠的、面向连接的传输,如TCP/IP,以定义请求ID的作用域和范围。
2. **可靠传输**:保证字节顺序,并提供错误检测和连接丢失通知。
3. **服务器被动角色**:服务器不主动建立连接,但会监听并响应来自客户端的连接请求。
### IIOP作为GIOP的基线传输协议
IIOP是OMG指定的GIOP的基础传输协议,通常使用TCP/IP实现。IIOP在GIOP的基础上添加了特定的TCP/IP层的细节,以确保ORB间的通信能在互联网环境中有效进行。
IIOP和GIOP是实现跨ORB通信的关键技术,它们简化了不同软件组件之间的交互,促进了分布式系统的发展和互操作性。在高级软件工程中,理解这些概念对于设计和实施复杂的企业级应用至关重要。