簡介
應用程式的執行時期架構以「流程觀點」來描述,這是一種描述系統並行元素的架構觀點。這些準則提供特定的指引,指出如何塑造 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 關聯來澄清這個疑點。最後,圖型會變成:
不過,流程觀點不只是儲存區和高階系統而已。也可以解決這些儲存區和系統的並行問題。
流程觀點應該指出並塑造下列類型的主動類別。
在使用 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 儲存區不只是流程,也是執行環境,可能塑造為「邏輯節點」,而非主動類別。
|