分散式呼叫協議演進
- Sockets:需自行編碼應用層協議,複雜度高
- RPC:抽象程序呼叫,採用 XDR 編碼,不支援物件導向
- RMI:Java 物件導向遠端呼叫,調用遠端物件如同本地,採用 JRMP (Java Remote Method Protocol) 基於 TCP/IP
RMI 核心機制:Stub 與 Skeleton
Stub (客戶端代理)
- 實作遠端介面,本地建立
- 工作流程:建立連線 → 參數序列化/封裝 → 發送 → 等待 → 解封裝/反序列化返回值/例外 → 返回結果
- 負責參數流化、網絡通訊
Skeleton (伺服器端接收器)
- 運行於遠端 JVM
- 工作流程:解封裝參數 → 呼叫遠端物件實際方法 → 封裝返回值/例外 → 發送給 Stub
Stub/Skeleton 由 rmic 編譯工具自動產生。
RMI-IIOP:融合 RMI 易用性與 CORBA 跨語言特性
- IIOP:CORBA 通訊協議,透過 IDL 實現語言中立
- Java IDL:Java 與 CORBA 映射橋樑
- RMI-IIOP:RMI 物件採用 IIOP 協議與 CORBA 物件通訊,參數類型有輕微限制
- JDK 1.3 起內建支援
Apusic Application Server 現狀
目前採用 RMI,RMI-IIOP 支援開發中,預計推出完整支援版本。