【分布計算環境學習筆記】3 軟體構件結構

來源:互聯網
上載者:User

作者:gnuhpc
出處:http://www.cnblogs.com/gnuhpc/

1.基本概念:

  • 架構:對問題的部分解決,是讓使用者整合構件的架構。
  • 構件(組件): 構件是軟體的基本單元, 既足夠小,以便於維護,又應足夠大,以使之具有功能,可以被打包和使用。
  • 對象匯流排:是一種機制,使得構件和架構能夠調用分布式環境中的另一構件或架構的服務。

構件提供軟體單元,架構把構件拼裝在一起建立許多應用程式,對象匯流排把構件和架構的能力擴充到開發網路,使數百萬獨立的軟體單元在異構環節下無縫地互動操作。

2.架構

a.引出:過程和類庫的固有缺點:被動性,它們都需要一種能提供控制流程的結構實際的情況。大量的應用程式,特別是同一領域中的應用程式,分享相似的結構。這些結構並沒有經過通常的物件導向技術而得到重用。

b.定義:架構把握了某個領域內全部問題集解決方案的不變部分,開發人員必須向架構添加變化部分代碼以把握其動作,使該應用程式成為所在領域內特定的應用程式。

c.類型:

  • 水平架構: 適用於各種應用領域, 如網路安全
  • 垂直架構: 適用於特定應用領域, 如保險,計費

架構應用程式模型:架構對相似問題集提供一種統一的解決方案(把握應用程式的結構),以架構調用方法(構件不再相互調用方法),構件可以重用,架構本身也可以為同領域的其它應用程式重用。

3.構件(組件)

a.定義:一個接近獨立的、可被替換的軟體單元,它實現一個已定義好的體繫結構上下文中的一個明確的功能,同時遵循並提供一組介面的物理實現。組件是個功能或結構單元,是一個比類較粗粒度的表達,英文Component, 組件的出現就是為瞭解決某些功能和結構的劃分,使其具有可重用性。組件將一些類和介面組織起來,對外暴露一個或多個介面,供外界調用。對於複雜的組件,還可能包含設定檔、介面、依賴的庫檔案等,組件也可以包含或者使用其它的組件,構成更大的組件。

b.特徵:

  • 自描述(內省) :構件必須能夠識別其屬性、存取方法和事件,這些資訊可以使開發環境將第三方軟體構件無縫地結合起來;
  • 可定製:可由使用者定製構件的特性值,自行配置構件。這通常意味著需提供一個圖形方式環境,使構件的屬效能通過控制台來設定,從而使開發人員能夠對一個一般化的構件加以裁剪,使其能夠滿足某些特定環境的具體需求。
  • 可整合:開發人員可將構件併入開發環境,與新的應用相連。可彙總簡單構件,獲得複雜構件.構件可以被程式設計語言直接控制。構件也可以和指令碼語言串連或者與從代碼級訪問構件的環境串連,使軟體構件可以在非可視化開發項目中使用;
  • 串連機制:構件必須能產生事件或者具有讓程式員從語義上實現相互串連的其他機制。這意味著程式員可以很容易地向按鈕添加代碼,使點中按鈕就可以影響其他構件的動作。
  • 可插用—是現成的可打包的軟體組件,可從經銷商處購得。
  • 可維護 — 構件是足夠小的,因而易於維護和升級。
  • 有功能 — 構件是足夠大的,以它所期望的方式工作。
  • 有特點 — 構件是設計用於執行某種特定任務的,它代表了整個應用程式中的一個組件。這個組件可以是細顆粒、中顆粒或大顆粒的。
  • 沒有與別的構件直接通訊的路徑 – 不直接通訊是構件可維護和可升級的必要條件。此外,它使得構件可被用於分布式環境。
  • 自我可描述 – 構件能向系統的其餘部分描述它提供的服務。這種描述通常是通過說明性的、與實現無關的介面定義語言來提供的。
  • 目標框架 – 構件通常是為一特殊的架構所建立的,這種構件不能在其它架構中運行。例如:Java Beans構件不能直接用於ActiveX環境。
  • 目標對象匯流排 – 直接與某一對象匯流排介面的構件或許不能與另一對象匯流排一起使用。要用網關來提供不同對象匯流排之間的可互通性。

c.構件介面:一組操作的集合,用於指定一個構件所提供的服務。介面規定了一個構件和別的構件互動的機制。介面用於命名一個操作的集合并指定它們的標記和協議,只注重一個給定服務的行為,而不是它的結構。介面不對它的任何操作提供實現。

d.構建和對象的比較:

相同點:

兩者都提供了描述和構造應用的元素;對象是一個問題域中的任何可識別的實體,例如對象可表示一個員工或者一個定單。在分析和設計階段,對象純粹是概念性的,在實現階段,對象在軟體中實現。而在基於構件的開發中,構件也提供了類似的構造塊。一個開發人員把一個應用看成是一組互相互動的組件的集合。當構造一個應用時,實際的構件將被構造或綜合進軟體中。最終的應用將由這些一起協調工作的構件組成。對象和構件使用類似的技術來指定。一個對象是一個物件類型的一個執行個體,物件類型指定了對象的特性。構件類型的概念和物件類型的概念極其相似  (極其相似,而不是相同。因為並不是所有的構件都有類型的概念。Java Beans中的一個Beans有類型的概念,但比如對某個遺留系統進行封裝(wrapper)後所得到的構件就沒有類型的概念)。一個特定的構件是一個構件類型的一個執行個體,並且它向外展示其指定的特性。

不同點:

構件技術是從物件導向技術中發展起來的,但它又不同於對象技術。在構件技術中,既可用物件導向的技術來實現,也可不用物件導向的技術來實現。對象技術在構件技術中不是必須的。開發人員可能使用任何非物件導向語言和環境來實現構件。而且,構件可能包括遺留的系統,這些遺留的系統可能被封裝起來以跟基於構件的軟體相互操作。在物件導向技術中,繼承、封裝和多態性是OO技術的三個基本特徵,但在構件技術中一般只突出封裝的特性,即構件是獨立可交付的軟體單元。典型地,一個構件提供比對象更為強大的功能。對象和物件類型是用於應用開發的基本組成部分。開發人員指定物件類型來包括關鍵的域和技術概念。一個應用可能包括幾百個物件類型。相反,一個應用可能只包括幾個構件。一個構件可能包括多個對象。構件提供了一個在對象級以上的一個組成部分。構件可看成是一個組織對象的一個方法。

 

4.對象匯流排

a.定義:把構件和架構的能力擴充到開發網路,使數百萬獨立的軟體單元在異構環節下無縫地互動操作。

b.對象匯流排語言:使相互連信的對象都能理解的一種公用語言。為所有對象提供了一種向匯流排描述自己的機制,這種機制通過一種說明性的、與實現無關的介面定義語言(IDL)提供。

c.舉例:最著名的對象匯流排:CORBA 、DCOM。

 

5.基於構件的軟體開發過程

 

 

6.構件模型

a.構件模型:為開發人員定義軟體構件而建立的體繫結構和API集,使開發人員可通過軟體構件的動態組合來建立應用系統。當前主流構件模型CORBA、EJB、COM( DCOM / COM+ )

構件模型 = 構件 + 容器

  • 構件 --  具有可重用特性的基本軟體組件
  • 容器 --  一組提供一系列可訪問的管理服務,只要組件符合容器要求(規範),容器就可以讓組件使用相應的管理服務,構件需要實現容器要求的API才能在容器中運行。用於存放和安排構件,實現構件間的互動。(容器也可以作為另一個容器的構件使用)

b.重量級架構:

典型代表EJB,開發的系統基本需要放置在一個容器系統中進行運行,並需要實現容器要求的介面。容器在執行個體化化業務對象後,傳給業務物件內容,而業務對象本身要通過JNDI手段來定位或者pull出其他資源或者業務對象。這些容器因為基本針對大型公司專屬應用程式,所以體積龐大,佔用資源,內在服務多,啟動比較慢。開發需要遵從的規則比較多,開發效率也比較低,很大一部分時間都用在了Deploy、Run這樣的過程上,調試和測試比較困難。重量級架構在大規模啟動並執行時候會表現出非常優異的效能,劣勢主要是開發效率較低

c.輕量級架構:

典型代表:Spring

  • Struts和WebWork面向Web架構
  • Hibernate面向資料庫映射(ORM)

以依賴注入(Dependency Injection)為代表的解耦合模式,可以讓組件不去依賴容器(運行環境)的API。輕量級容器通過反向控制(Inversion of Control)讓容器具有主動權,去管理插進來的組件,只要組件是符合標準的,就可以被輕量級容器管理。組件以POJO(Plain Old Java Object)的形式存在,只要你有Java.exe就可以運行它,不需要容器就可以實現測試行為。基於輕量級架構進行系統開發的時候非常迅速,但是在大規模啟動並執行時候,效能可能會比重量級架構差一些。

 

7.技術的重點

不在於如何進行遠程調用,RPC或者RMI技術足以支援,而真正的技術重點在於如何簡化應用的開發:由容器提供相應的各種服務,進一步地:輕量級架構技術,松耦合基於構件的應用與容器的關係,只整合需要的服務。構件之間的關係也可以在需要的時候建立。

 

作者:gnuhpc
出處:http://www.cnblogs.com/gnuhpc/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.