如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2005年6月20日

J2EE Design Pattern - Business Delegete筆記

Fred Wang中譯與整理 2005/06/20 (http://fredwang.blogspot.com)
解決問題 :
隱藏遠端存取商業服務(business service)元件的複雜度

直接存取遠端商業服務(business service)元件的問題如下 :
1. 直接與商業服務(business service)介面程式互動,當商業服務程式碼異動時,需求端的程式碼也要異動。這將增加所需的維護量及降低系統的彈性。
2. 與網路的效能有關,當需求端直接與商業服務API互動時,需求端單一的動作可能需要與商業服務(business service)多種的互動,這將導致商業邏輯包含到需求端程式內, 且沒有任何需求端的暫存機制(caching)或服務結果的彙整,將降低可維護性。而這些行為跨網路執行也降低網路的效能。
3. 與商業服務API緊密的互動表示需求端程式內需要一些與遠端分散式中介層(remote distributed middle tier)有關的基礎程式碼,這些基礎程式碼就是命名服務(naming services)如JNDI, 網路連線失敗的處理與重試的邏輯。

重點 :
1. 從展示端元件及客戶端如devices, web services and rich clients等存取商業層元件。
2. 將客戶端與商業服務的耦合關係最小化,隱藏商業服務內含的應用細節如naming / lookup services and access
3. 將網路例外處理(exceptions)轉成應用或使用端的例外處理,如java.rmi.Remote exceptions, JMS exceptions等。
4. 隱藏服務的建立,重新設定及失敗重做(retry)等,不必將問題丟回給需求端。
5. 將商業服務的結果暫存(cache)以降低網路負擔,提升效能。

Business Delegate使用Service Locator來找到business service,Service Locator負責隱藏商業服務的lookup程式碼內的應用細節。
與 Session Façade為一對一的關係,因為與多個商業服務互動的邏輯封裝在Business Delegate內,而這些商業服務的細節又封裝在Session Façade。

Class Diagram


Sequence Diagram



實作策略
1. Delegate Proxy Strategy
Business Delegate以interface的形式存取商業服務API內含的功能,作為遠端商業服務的代理(proxy),除此之外還可加上一些驗證及暫存商業資料的機制。暫存(caching)機制可以包含對session bean’s home or remote objects的遠端參考,藉由減少lookup的次數以提升效能。
Business Delegate也可以使用Service Locator將遠端的參考轉成字串表示(IDs)。
2. Delegate Adapter Strategy
在B2B的環境,與你的系統互動的系統可能不是J2EE的應用,那麼必須提供與這些外部系統互動的解決方式,最常見的是使用XML。

Sequence Diagram using Adapter Strategy

1 則留言:

  1. Very good post! We are linking to this great post on our site.

    Keep up the good writing.

    my site - Jeff Walkers PLF 4.0

    回覆刪除

歡迎提供意見, 謝謝 (註 : 留言經過版主審核通過才會發布)