《面向模式的軟體體繫結構2-用於並發和網路化對象模式》讀書筆記(4)— 組件配置器

來源:互聯網
上載者:User

2.2組件配置器(Component Configurator)

1.問題

      由組件構成的應用程式必須提供一種機制,把這些組件配置到一個或多個進程中去。解決這個問題受到三種強制條件的影響:

      1)在許多系統和應用程式中,組件功能或者實現細節的改變是很普遍的。對一個組件的修改應該對使用它的其他組件的實現有最小的影響。

      2)開發人員在開發應用程式時,常常並不知道最有效地配置或者分布多個組件到進程和主機中的方法。如果開發人員過早地專註於組件的特殊配置,那麼這也許會破壞靈活性,降低整個系統的效能和功能特性,並且不必要地增加資源的使用。

      3)執行類似組件的配置、初始化和控制這樣的普通管理工作應該是直接的,並且是與組件無關的。只要有可能,就應該使它們自動化,例如通過使用某種類型的指令碼機制。

 

2.解決方案

      從組件的實現中分離出組件介面,使應用程式獨立於組件實現被配置到應用程式進程的時間點。

      組件(Component)定義一個一致的介面,用來配置和控制它提供的特殊類型的應用程式服務或者功能。具體組件(Concrete Component)針對具體的應用程式實現這個介面。應用程式或者管理員可以使用組件介面動態地啟動、掛起、恢複和終止它們的具體組件,還可以擷取有關每個被配置的具體組件的運行資訊。具體組件被打包進一個合適的登錄區,例如一個動態連結程式庫(DLL)。在組件配置器的控制下,這個DLL能被動態地連結進和解鏈出一個應用程式,組件配置器使用組件倉庫(Component Repository)來管理被配置到應用程式中的所有具體組件。

 

3.結構

      組件配置器模式包括四個參與者:

      組件定義一個一致的介面,用於配置和控制組件實現所提供的應用程式服務或者功能特性的類型,一般的控制操作包括初始化、掛起、恢複和終止組件。

      具體組件實現組件控制介面,以提供一個特定類型的組件。具體組件也實現方法以提供針對具體應用的功能,例如處理與其他的被串連的對等組件交換的資料。具體組件以某種形式(如DLL)打包,以便在運行時能被動態地連結進或解鏈出應用程式。

     

 

      組件倉庫管理當前被配置到應用程式中的所有具體組件,這個倉庫允許系統管理應用程式或者管理員通過中心管理機制,來控制被配置的具體組件的行為。

      組件配置器使用組件倉庫來協調具體組件的(重新)配置。它實現一種解釋和執行指令碼的機制,此指令碼指定哪個可用的具體組件,通過從DLL中動態地連結和解鏈來(重新)配置到應用程式中。

     

 

4.實現

      可以把組件配置器模式中的參與者分解為兩層:

      ·組態管理層組件(Configuration Management Layer Component)。這一層執行通用的,與應用無關的策略,這些策略安裝、初始化、控制和終止組件。

      ·應用程式層組件(Application Layer Component)。這一層實現執行針對應用的處理的具體組件。

      1)定義組件配置和控制介面。組件應支援下列操作,以便組件配置器能配置和控制它們:

          ·組件初始化。

          ·組件結束。關閉組件並清除它的資源。

          ·組件掛起。

          ·組件恢複。

          ·組件通知。報告描述組件的靜態和動態偽指令的資訊。 

      2)實現組件倉庫。組件倉庫管理所有通過DLL連結到應用程式中的具體組件實現。當組件被配置進或配置出應用程式時,組件配置器使用這個倉庫來控制它。每個組件的目前狀態,比如它是活動的還是掛起的,都能在倉庫中獲得維護。

      3)實現組件(重新)配置機制。在組件能夠執行之前,它必須配置到應用程式的地址空間。組件配置器定義一種機制,控制把組件靜態地和\或動態地(重新)配置進應用程式進程中去。組件配置器的實現包括5個子活動:

        3.1)定義組件配置器介面。組件配置器通常作為一個單件外觀(Singleton facade)實現。這種做法能夠協調對其他組件配置器模式組件的訪問。

        3.2)定義一種用於指定組件配置偽指令的語言。這些偽指令向組件配置器供應它在運行時定位和初始化組件實現所需的資訊,也提供在初始化組件之後掛起、恢複、重新初始化和\或終止組件所需的資訊。可以用多種方式指定組件配置偽指令,例如用命令列、環境變數、圖形使用者介面或者配置指令碼。

        3.3)實現一個機制。用於解析和處理組件配置偽指令。這種機制常常作為一個偽指令解譯器(Directive Interpreter)實現,些解譯器將組件的運行特性與它的配置相關的特性分開。

        3.4)實現動態配置機制。組件配置器使用這種機制動態地把組件連結進和解鏈出應該程式進程。

        3.5)實現動態重新設定機制。這種機制建立在上述的動態配置機制上,以觸發組件實現的動態重新設定(reconfiguration)。組件重新設定應該對應用程式進程中其他組件的執行影響最小。

      4)實現具體組件。實現具體組件包含3個子活動:

        4.1)實現具體組件並行存取模型。實現具體組件的一個重要方面,涉及到組件的並發策略的選擇。

        ·反應的\主動的執行(Reactive\Proactive Execution)。使用這些策略,就可以使用一個控制線程反應地或者主動地處理所有組件。

        ·多線程或多進程並發執行(Multi-threaded or multi-process concurrent)。使用這些策略,被配置的組件經組件配置器初始化之後,就在它們自己的線程或進程中執行。

        4.2)實現用於組件間通訊的機制。有些組件可以完全獨立地運行,而另一些組件必須和其他組件通訊。這時,組件開發人員必須選擇一種用於組件間通訊的機制。

        ·如果組件是搭配式的,則一般有兩種選擇,一是對組件間指標關係進行寫入程式碼,但這樣做不太靈活,也會喪失動態組件配置的優點;另一種方法就是使用組件倉庫“按名字”訪問組件。

        ·當組件是分布式的時候,一般也有兩種選擇,一是低層IPC機制,如使用通訊端或TCP/IP串連,此外是類似CORBA的更進階機制。使用CORBA的優點是,通過自動地確定組件是在一起的還是分布式的,ORB可以透明地最佳化得到最快速的IPC機制。

        4.3)實現重建立立組件關係的機制。實現這種機制的策略之一是設定檢查點,檢查組件對它相關組件的引用,並把它儲存在一個備忘錄(Memento)中。組件在關閉之前,可以把這個備忘錄傳遞給組件配置器。同樣,備忘錄可以包含從舊組件向新組件傳遞的其他狀態資訊,新組件安裝後,組件配置器可以把備忘錄傳遞給新組件。隨後這個組件重新安裝儲存在備忘錄中的串連和狀態資訊。

 

5.結論

優點:

      1)一致性。組件配置器模式強制採用一致的配置和控制介面來管理組件。這個一致性允許把組件作為積木塊看待,它們可以作為組件整合到一個更大的應用中。

      2)集中化管理。組件配置器模式把一個或多個組件分為一個嵌入式管理單元。這種合并通過自動地執行常用的組件初始化和終止活動。另外,模式通過確保每個組件支援相同的組態管理操作採集中化組件管理。

      3)模組性,可測試性和可複用性。通過從組件配置到進程的方式中分解出組件的實現,組件配置器模式提高了應用程式的模組性和可複用性。

      4)配置動態性和控制。組件配置器模式可以在不需要修改,重新編譯或靜態地重新連結現有代碼的情況下,動態地重新設定組件。另外,在不重新啟動組件或者和它搭配的其他主動組件的情況下,常常也可以動作項目的(重新)配置。這些特性有助於為應用程式定義的組件組態架構建立基礎設施。

      5)調整和最佳化。組件配置器模式通過從組件執行機制中分解出組件功能,為開發人員增加組件配置的選擇範圍。

 

不足:

      1)缺乏決定性和排序相關性。使用組件配置器模式難以決定或者分析應用程式的行為,直到在運行時配置它的組件。

      2)減少安全性或可靠性。使用組件配置器模式的應用程式也許比同等的靜態配置的應用程式更不安全或更不可靠。

      3)增加運行時開鎖和基礎設施複雜性。組件配置器模式在動作項目時增加了抽象和間接的級數。

      4)過度窄小公用介面。組件的初始化或者終止也許會過於複雜或者與它的語境過於耦合,以至於通過常用組件控制介面很難以一致的方式執行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.