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

以 Java 與 XML 建構分散式系統:三種通訊架構比較分析

     編輯:Java 相關知識

XML 作為中性、可擴展的資料交換格式,已成為企業間資料整合的首選。本文探討在分散式環境下,如何讓運行於不同 Java 虛擬機的應用程式透過 XML 進行通訊,並詳細比較三種實作方案:標準 Web 伺服器、Java RMI 序列化、CORBA-IIOP 的優劣與適用場景。

一、XML 分散式通訊模型

核心流程:資料來源 (如關聯式資料庫) → Java 處理器產生 DOM 物件 → 發送者傳輸 → 接收者解析還原 DOM → 後續處理器處理。發送者與接收者分別運行於不同 JVM,雙向通訊,皆為客戶端亦為伺服端角色。

Java 分散式 XML 應用模型

圖1:處理 XML 文件的 Java 分散式應用簡單模型

二、Xbeans 元件架構

Xbeans 是接受 XML DOM 文件輸入、處理後輸出 XML DOM 的軟體元件,基於 JavaBeans 規範,支援封裝、重用、連接與客製化。輸入輸出均為 W3C 標準 DOM 物件,而非原始字串。源碼可從 www.xbeans.org 免費取得。

Xbeans 架構圖

圖2:Xbeans 元件示意圖

三、三種發送/接收實作方案

方法一:標準 Web 伺服器 (HTTP + CGI)

將 DOM 序列化為文字傳輸,接收端再解析還原 DOM。通用性最高,幾乎所有 Web 伺服器支援 CGI,接收端易以 URL 識別。

Web 伺服器方案架構

圖3:標準 Web 伺服器通訊流程

// 發送者片段 (使用 IBM DOMWriter)
public void documentReady(DOMEvent evt) throws XbeansException {
    try {
        URL receiver = new URL(getRemoteURL());
        URLConnection conn = receiver.openConnection();
        conn.setDoOutput(true);
        OutputStream out = conn.getOutputStream();
        DOMWriter writer = new DOMWriter();
        writer.setPrintWriter(new PrintWriter(out));
        writer.documentReady(new DOMEvent(this, evt.getDocument()));
        out.close();
        // 處理回應...
    } catch (Throwable e) { e.printStackTrace(System.err); }
}

方法二:Java RMI 序列化傳輸 DOM

利用 Java RMI 直接傳遞序列化後的 DOM 物件,避免文字解析開銷,支援接收端自動啟動,但限於 Java 之間通訊,且雙端需使用相同 DOM 實作。

RMI 方案架構

圖4:RMI 序列化通訊流程

// 發送者
public void documentReady(DOMEvent evt) throws XbeansException {
    if (DOMListener == null) {
        DOMListener = (DOMListener) Naming.lookup(getReceiverName());
    }
    DOMListener.documentReady(evt);
}

// 接收者實作 Remote 介面
public void documentReady(Document incomingDocument) throws RemoteException, XbeansException {
    DOMListener.documentReady(new DOMEvent(this, incomingDocument));
}

方法三:CORBA-IIOP 跨語言通訊

採用 CORBA 標準,透過 IDL 定義介面,理論上支援異構語言互通。OMG 正擴展 IDL 支援 XML 資料類型。實作需部署 ORB,發送者使用 URL 命名模式定位接收者。

CORBA 方案架構

圖5:CORBA-IIOP 通訊流程

// IDL 介面定義
interface XMLReceiver {
    void documentReady(in byteArray serializedDocument) raises(RemoteReceiverException);
}

// 發送者序列化 DOM 並透過 CORBA 傳送
// 接收者反序列化並轉發給本地監聽器

四、效能與互通性比較分析

三種方案優缺點比較表

圖6:各方案優缺點總結

  • 效能:純文字 XML 傳輸效能優於 DOM 序列化;解析 DOM/文字耗時少於 Java 序列化/反序列化。
  • 部署基礎:Web 方案最廣泛 (CGI 通用);RMI 需 Registry;CORBA 需 ORB。
  • 語言中立:Web 與 CORBA 理論支援多語言;RMI 僅限 Java。
  • 資源管理:RMI 與 CORBA 支援接收端自動啟動,無需每次通訊啟動 JVM;Web 方案每請求啟動 CGI。

五、結論與架構建議

關鍵在於將 XML 通訊邏輯從業務邏輯中分離,封裝為可替換的軟體元件 (如 Xbeans)。如此可根據部署環境、效能需求、異構整合要求,靈活切換通訊協定,不影響核心應用實作。

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