準則: 描述 J2EE 應用程式的執行時期架構
這個準則討論如何塑造 J2EE 應用程式的執行時期架構。
關係
主要說明

簡介

應用程式的執行時期架構以「流程觀點」來描述,這是一種描述系統並行元素的架構觀點。這些準則提供特定的指引,指出如何塑造 J2EE 應用程式的「流程觀點」。

請參閱概念:流程觀點

建模流程觀點

J2EE 元件(請參閱概念:J2EE 概觀:J2EE 元件)會部署到稱為「儲存區」的環境。如需 J2EE 定義的每一種儲存區的說明,請參閱概念:J2EE 概觀:J2EE 儲存區

每一個儲存區都是並行元素,應該出現在架構的「流程觀點」中。通常出現在高階流程觀點中的其他重要的並行元素是外部系統。

下列是 J2EE 應用程式的高階流程觀點的一般圖型。

隨文解釋的圖型。

在實際的例子中,我們會看到存在特定廠商的「訊息導向中介軟體 (MOM)」及特定的舊版系統和應用程式用戶端。不過,Web 儲存區和 EJB 儲存區是標準的儲存區,應該會出現在所有 J2EE 流程觀點中。

請注意,此圖型不顯示這些系統在特定硬體節點上的實際分佈情形。分佈情形顯示在「部署模型」中(請參閱技術:描述 J2EE 應用程式的分佈)。

在此範例中,我們看到選擇在儲存區之間採用的跨程序通訊機制。J2EE 提供特定的跨程序通訊機制。包括:

  • Java 類別之間同步通訊用的 Java 遠端方法呼叫 (RMI)
  • 與 CORBA 用戶端(通常是舊式應用程式)交互操作的 RMI-IIOP
  • 與 Web 型用戶端通訊用的 HTTP/HTTPS(也可能支援其他 Web 通訊協定,例如與 XML Web 服務互動時)
  • 與「訊息導向中介軟體 (MOM)」傳訊和互動用的 Java 訊息服務 (JMS)

在定義流程觀點時,何時使用 JMS 與 RMI 或 RMI-IIOP 是一項重要決策。在此範例中,應用程式用戶端、EJB 儲存區及另一個舊版系統使用傳訊來通訊。不過,未明確指出與哪些元素通訊。為了避免含糊不清,請考慮從圖型中移除 MOM 系統,在以傳訊通訊的元素之間以 JMS 做為關聯。

另一項不明確之處是 EJB 之間是否透過傳訊來通訊。可以顯示從 EJB 儲存區至本身的 JMS 關聯來澄清這個疑點。最後,圖型會變成:

隨文解釋的圖型。

不過,流程觀點不只是儲存區和高階系統而已。也可以解決這些儲存區和系統的並行問題。

流程觀點應該指出並塑造下列類型的主動類別。

  • Java 執行緒
  • 訊息目的地
  • 訊息驅動 Bean(因為非同步地透過訊息來呼叫)。關於用來塑造訊息驅動 Bean 的特定模板,請參閱技術:指出 Enterprise JavaBeans
  • 整體系統設計中的其他流程。獨立的計時器流程是這種流程的一個例子。

在使用 JMS 時,您可以選擇直接連結訊息生產者和消費者,或經由呈現主題和佇列,以更準確地塑造關係。

互動圖用來顯示設計元素之間的同步的和非同步通訊。也可以用來分析效能和邏輯問題的並行表現。尤其,軟體架構師可以指定網路上經常出現的傳訊或大量的資料轉送。這可能導致架構設計師重新設計介面,或在控制緒之間、伺服器之間或在用戶端和伺服器之間重新分配設計元素。

請注意,在 EJB 儲存區內,執行緒和程序由 EJB 儲存區管理 - EJB 無法建立或管理執行緒。在邏輯上,每一個 EJB 都應該視為主動類別,不過,因為呼叫 Session Bean 和 Entity Bean 是同步的封鎖呼叫,通常不會塑造為主動類別。EJB 儲存區的流程觀點通常僅限於一個可用的並行機制 - JMS 與 JMS 訊息驅動 Bean。

雖然 Session Bean 和 Entity Bean 通常不會塑造為主動類別,還是會發生並行問題 - 例如一個 EJB 讀取資料庫,另一個 EJB 同時寫入資料庫。這些問題可透過交易來解決。在專案特有的準則中應該載明交易的用法。

將設計元素分配給主動類別

作業:描述執行時期架構論述將設計元素分配到程序和執行緒的需求。在 J2EE 應用程式中,所有 Web 元件都分配到 Web 儲存區,所有 EJB 都分配到 EJB 儲存區。因為這種關係很簡單,不需要塑造此分配情形。

不過,如果設計中包含其他並行程序(例如兩個不同的應用程式用戶端),則最好指定每一個應用程式上執行哪些設計元素。

以 Java 執行緒、訊息驅動 Bean 及 JMS 主題和佇列而言,則需要更注意通訊的問題,以避免死結、不一致的資料等。最好檢查含有這些元素的使用案例實現。

其他建模替代方案

由於「流程觀點」和「部署觀點」之間的關係密切,這些觀點的高階圖型通常會合併在一起。

另外,因為每一個 J2EE 儲存區不只是流程,也是執行環境,可能塑造為「邏輯節點」,而非主動類別。