首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

J2EE 分散式開發:RMI 與 CORBA 實戰對比與檔案傳輸範例

     編輯:Java 程式設計入門

RMI(Java Remote Method Invocation)與 CORBA(Common Object Request Broker Architecture)是最重要、最廣泛使用的兩種分散式物件系統。本文簡介兩者架構,並以「從遠端主機下載檔案」為例,完整示範 RMI 開發流程,最後對比優劣。

分散式物件模型 vs 傳統 C/S

傳統 C/S 需自行設計協議;分散式物件以明確封裝介面隔離客戶端與服務實作,客戶端發送訊息給物件,由物件或代理執行服務。RMI 與 CORBA 均屬此模型。

RMI 開發五步驟

  1. 定義遠端介面(extends Remote,方法拋 RemoteException)
  2. 實作遠端介面(extends UnicastRemoteObject)
  3. 開發伺服器(安裝 SecurityManager、建立實例、向 RMI Registry 註冊)
  4. 開發客戶端(查找 Registry 取得 Stub、呼叫遠端方法)
  5. 生成 Stub/Skeleton、啟動 Registry/伺服器/客戶端

完整程式碼範例:檔案下載

// 1. 遠端介面
public interface FileInterface extends Remote {
    byte[] downloadFile(String fileName) throws RemoteException;
}

// 2. 實作
public class FileImpl extends UnicastRemoteObject implements FileInterface {
    public byte[] downloadFile(String fileName) {
        // 讀取檔案至 byte[] 回傳
    }
}

// 3. 伺服器
Naming.rebind("//127.0.0.1/FileServer", new FileImpl("FileServer"));

// 4. 客戶端
FileInterface fi = (FileInterface) Naming.lookup("//host/FileServer");
byte[] data = fi.downloadFile("test.txt");

執行關鍵指令

rmic FileImpl           // 生成 Stub/Skeleton
rmiregistry [port]      // 啟動 Registry
java -Djava.security.policy=policy.txt FileServer  // 啟動伺服器
java FileClient fileName host  // 啟動客戶端

RMI vs CORBA 簡比

維度RMICORBA
語言綁定純 Java多語言(IDL)
程式模型簡單,類似本地呼叫複雜,學習曲線陡
可攜遷性標準化契約佳廠商實作不一,較差
服務整合宣告式(安全/交易)需複雜 API
網路協議JRMP / RMI-IIOPIIOP

RMI 以 Java 原生優勢、簡單模型、宣告式服務,成為 Java 分散式開發首選;CORBA 適合異構語言整合場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved