軟考架構師(15)——基於構件的開發

一:構件與軟件的重用

1:軟件重用

軟件重用(軟件複用)是使用已有的軟件產品(如設計、代碼、文檔等)來開發新的軟件系統的過程。算法

軟件重用的形式大致可分爲垂直式重用和水平式重用。sql

水平式重用是重用不一樣應用領域中的軟件元素,例如數據結構、排序算法、人機界面構件等。標準函數庫是一種典型的原始的水平式重用機制。數據庫

垂直式重用是在一類具備較多公共性的應用領域之間重用軟件構件。垂直式重用活動的主要關鍵點在於領域分析:根據應用領域的特徵和類似性,預測軟件構件的可重用性。編程

2:構件標準

  構件是軟件系統可替換的、物理的組成部分,它封裝了實現體(實現某個職能),並提供了一組接口的實現方法。能夠認爲構件是一個封裝的代碼模塊或大粒度的運行時模塊,也能夠將構件理解爲具備必定功能、可以獨立工做或與其它構件組合起來協調工做的對象。小程序

  構件應當是內聚的,並具備至關穩定的、公開的接口。設計模式

3:構件的獲取

在創建基於構件的軟件開發中,構件獲取能夠有多種不一樣的途徑:安全

(1)從現有構件中得到符合要求的構件,直接使用或做適應性(flexibility)修改,獲得可重用的構件。服務器

(2)經過遺留工程(legacy engineering),將具備潛在重用價值的構件提取出來,獲得可重用的構件。網絡

(3)從市場上購買現成的商業構件,即COTS(Commercial Off-The-Shell)構件。數據結構

(4)開發新的符合要求的構件。

4:構件管理

 構件管理的內容包括構件描述、構件分類、構件庫組織、人員及權限管理和用戶意見反饋等。

1. 構件的組織

對已有的構件分類方法能夠概括爲三大類,分別是關鍵字分類法、刻面分類法和超文本組織方法。

(1)關鍵字分類法(keyword classification):根據領域分析的結果將應用領域的概念按照從抽象到具體的順序逐次分解爲樹形或有向無迴路圖結構。每一個概念用一個描述性的關鍵字表示。

(2)刻面分類法(faceted classification):定義若干用於刻畫構件特徵的「面」(facet),每一個麪包含若干概念,這些概念描述構件在面上的特徵。刻面能夠描述構件執行的功能、被操做的數據、構件應用的語境或任意其餘特徵。描述構件的刻面的集合稱爲刻面描述符(facet descriptor),一般,刻面描述被限定不超過7或8個刻面。

關鍵字分類法和刻面分類法都是以數據庫系統做爲實現背景的。儘管關係數據庫可供選用,但面向對象數據庫更適於實現構件庫,由於其中的複合對象、多重繼承等機制與表格相比更適合描述構件及其相互關係。

(3)超文本方法(hypertext classification):與基於數據庫系統的構件庫組織方法不一樣,它基於全文檢索技術。其主要思想是:全部構件必須輔以詳盡的功能或行爲說明文檔;說明中出現的重要概念或構件以網狀連接方式相互鏈接;檢索者在閱讀文檔的過程當中可按照人類的聯想思惟方式任意跳轉到包含相關概念或構件的文檔;全文檢索系統將用戶給出的關鍵字與說明文檔中的文字進行匹配,實現構件的瀏覽式檢索。超文本是一種非線性的網狀信息組織方法,它以結點爲基本單位,鏈做爲結點之間的聯想式關聯。超文本組織方法爲構造構件和重用構件提供了友好、直觀的多媒體方式。因爲網狀結構比較自由、鬆散,所以,超文本方法比前兩種方法更易於修改構件庫的結構。

2. 構件分類

若是把軟件系統當作是構件的集合,那麼從構件的外部形態來看,構成一個系統的構件可分爲5類:

(1)獨立而成熟的構件。獨立而成熟的構件獲得了實際運行環境的屢次檢驗,該類構件隱藏了全部接口,用戶只需用規定好的命令進行使用。例如,數據庫管理系統和操做系統等。

(2)有限制的構件。有限制的構件提供了接口,指出了使用的條件和前提,這種構件在裝配時,會產生資源衝突、覆蓋等影響,在使用時須要加以測試。例如,各類面向對象程序設計語言中的基礎類庫等。

(3)適應性構件。適應性構件進行了包裝或使用了接口技術,把不兼容性、資源衝突等進行了處理,能夠直接使用。這種構件能夠不加修改地使用在各類環境中。例如ActiveX等。

(4)裝配的構件。裝配的構件在安裝時,已經裝配在操做系統、數據庫管理系統或信息系統不一樣層次上,使用膠水代碼(glue code)就能夠進行鏈接使用。目前一些軟件商提供的大多數軟件產品都屬這一類。

(5)可修改的構件。可修改的構件能夠進行版本替換。若是對原構件修改錯誤、增長新功能,能夠利用從新「包裝」或寫接口來實現構件的替換。這種構件在應用系統開發中使用得比較多。

3:人員權限管理

  通常來說,構件庫系統可包括五類用戶,即註冊用戶、公共用戶、構件提交者、通常系統管理員和超級系統管理員。他們對構件庫分別有不一樣的職責和權限,這些人員相互協做,共同維護着構件庫系統的正常運做。同時,系統爲每一種操做定義一個權限,包括提交構件、管理構件、查詢構件及下載構件。每一用戶可被賦予一項或多項操做權限,這些操做權限組合造成該人員的權限,從而支持對操做的分工,爲權限分配提供了靈活性。

5:構件重用

1. 檢索與提取構件

2. 理解與評價構件

3. 修改構件

4. 構件組裝

二:中間件技術

爲解決分佈異構問題,人們提出了中間件的概念。中間件是位於平臺(硬件和操做系統)和應用之間的通用服務,這些服務具備標準的程序接口和協議。

優點:

 中間件做爲一大類系統軟件,與操做系統、數據庫管理系統並稱「三駕馬車」,它的優越性體如今如下幾個方面:

縮短應用的開發週期、節約應用的開發成本、減小系統初期的建設成本、下降應用開發的失敗率、保護已有的投資、

簡化應用集成、減小維護費用、提升應用的開發質量、保證技術進步的連續性、加強應用的生命力。

具體地說,中間件屏蔽了底層操做系統的複雜性,使程序開發人員面對一個簡單而統一的開發環境,減小程序設計的複雜性,將注意力集中在本身的業務上,沒必要再爲程序在不一樣系統軟件上的移植而重複工做,從而大大減小了技術上的負擔。

中間件爲上層應用屏蔽了異構平臺的差別,而其上的框架又定義了相應領域內的應用的系統結構、標準的服務組件等,用戶只需告訴框架所關心的事件,而後提供處理這些事件的代碼。當事件發生時,框架則會調用用戶的代碼。用戶代碼不用調用框架,用戶程序也沒必要關心框架結構、執行流程、對系統級API的調用等,全部這些由框架負責完成。

所以,基於中間件開發的應用具備良好的可擴充性、易管理性、高可用性和可移植性。

層次:

從中間件的層次上來劃分,可分爲底層型中間件、通用型中間件和集成型中間件三個大的層次。

  底層型中間件的主流技術有JVM(Java Virtual Machine,Java虛擬機)、CLR(Common Language Runtime,公用語言運行時)、ACE(Adaptive Communication Environment,自適應通訊環境)、JDBC和ODBC等,表明產品有Sun JVM和Microsoft的CLR;

  通用型中間件的主流技術有CORBA、EJB、COM/DCOM等,表明產品主要有IONA Orbix、BEA WebLogic和IBM MQSeries等;集成型中間件的主流技術有WorkFlow和EAI等,表明產品主要有BEA WebLogic和IBM WebSphere等。

因爲中間件須要屏蔽分佈環境中異構的操做系統和網絡協議,它必須可以提供分佈環境下的通信服務,咱們將這種通信服務稱之爲平臺。

基於目的和實現機制的不一樣,咱們將平臺分爲

遠程過程調用(Remote Procedure Call,RPC)、

面向消息的中間件(Message-Oriented Middleware,MOM)、

對象請求代理(Object Request Brokers,ORB)

它們可向上提供不一樣形式的通信服務,包括同步、排隊、訂閱發佈、廣播等,在這些基本的通信平臺之上,可構築各類框架,爲應用程序提供不一樣領域內的服務。

 

三:應用服務器

就具體的產品類型來看,目前市場中主要有6種類型,分別是事務服務器、知識服務器、帶有集成開發工具的應用服務器、協做服務器、瘦服務器和主機訪問服務器。不過,具體的服務器產品並不必定會是某種特色功能,每每是兼而有之。

 

 
 

 

 

 

 

 

四:J2EE與.NET平臺

J2EE

(1)EJB。EJB是Java服務器端的構件模型。EJB容器做爲EJB構件的執行環境,提供服務器端的系統級功能,包括線程管理、狀態管理和安全管理等。

  EJB定義了訪問構件服務的分佈式客戶接口模型,經過RMI-IIOP(Java Remote Method Invocation-Internet Inter-ORB Protocol),EJB能夠同COBRA對象進行互操做。使用Java開發的EJB具備一次編寫處處運行的優勢,按照標準開發的EJB構件能夠部署到任何一個支持EJB標準的應用服務器中。使用EJB開發企業應用,能夠縮短開發週期,開發人員只須要將注意力集中在業務邏輯的實現上,底層服務徹底由EJB容器提供。使用EJB開發的業務邏輯部分具備很好的移植性,不須要更改EJB的代碼,開發人員可以將EJB從一種操做環境移植到另外一種操做環境。

(2)JDBC。JDBC是Java語言鏈接數據庫的標準,從免費的Mysql到企業級的DB2和Oracle,JDBC都提供了很好的接口。

  JDBC API有兩個部分,一個用來訪問數據庫的應用程序級的接口,另外一個用來將JDBC驅動整合到J2EE平臺中的服務提供商接口。

(3)Java Servlet(Java服務器端小程序)。在Servlet技術中封裝了HTTP協議,開發者不須要處理複雜的網絡鏈接和數據包,就能夠擴展Web服務器的功能。相似於其餘的服務器端程序,Servlet徹底運行於Web服務器中,具備不錯的效率和更好的移植性。

(4)JSP(Java Server Page,Java服務器頁面)。能夠認爲是一種高層的Servlet,在服務器端,JSP老是首先被編譯成Servlet運行的。如同在ASP(Active Server Page,動態服務器頁面)中直接使用VBScript同樣,使用JSP能夠直接在HTML代碼中嵌入Java代碼,並提交給服務器運行。使用JSP便於邏輯和表現形式的分離。

(5)JMS(Java Message Service,Java消息服務)。JMS是一個消息標準,它容許J2EE應用程序創建、發送、接收和閱讀消息。它使得創建鏈接簡單的、可靠的和異步的分佈式通訊成爲可能。

(6)JNDI(Java Naming and Directory Interface,Java命名目錄接口)。JNDI提供命名的目錄功能,爲應用程序提供標準的目錄操做的方法,

  例如,得到對象的關聯屬性、根據它們的屬性搜尋對象等。使用JNDI,一個J2EE應用程序能夠存儲和從新獲得任何類型的命名Java對象。由於JNDI不依賴於任何特定的執行,應用程序可使用JNDI訪問各類命名目錄服務,這使得J2EE應用程序能夠和傳統的應用程序和系統共存。

(7)JTA(Java Transaction API,Java事務API)。JTA提供事務處理的標準接口,EJB使用JTA與事務處理服務器通訊。JTA提供啓動事務、加入現有的事務、執行事務處理和恢復事務的編程接口。

(8)Java Mail API(Java郵件API)。J2EE應用程序可使用Java Mail API來發送電子郵件。Java Mail API包含兩部分,分別是應用程序級接口和服務接口。

(9)JAXP(Java XML解析API)。JAXP支持DOM、SAX(Simple API for XML,簡單應用程序接口)、XSLT(eXtensible Stylesheet Language for Transformation)轉換引擎。JAXP使得應用程序能夠更簡單的處理XML。

(10)JCA(J2EE Connector Architecture,J2EE鏈接架構)。JCA是對J2EE標準集的重要的補充,它注重的是用於將Java程序鏈接到非Java程序和軟件包的中間件的開發。JCA包括三個關鍵的元素,分別是資源適配器、系統界面、通用客戶界面。JCA在功能上比Web服務要豐富,可是它發佈起來更難,並且限制了只能從Java環境訪問它們。

(11)JAAS(Java Authentication Authorization Service,Java認證和受權服務)。JAAS提供靈活和可伸縮的機制來保證客戶端或服務器端的Java程序,它讓開發者可以將一些標準的安全機制經過一種通用的,可配置的方式集成到系統中。

VO(View Object):視圖對象,用於展現層,它的做用是把某個指定頁面(或組件)的全部數據封裝起來。
DTO(Data Transfer Object):數據傳輸對象,這個概念來源於J2EE的設計模式,原來的目的是爲了EJB的分佈式應用提供粗粒度的數據實體,以減小分佈式調用的次數,從而提升分佈式調用的性能和下降網絡負載,但在這裏,我泛指用於展現層與服務層之間的數據傳輸對象。
DO(Domain Object):領域對象,就是從現實世界中抽象出來的有形或無形的業務實體。
PO(PersistentObject):持久化對象,它跟持久層(一般是關係型數據庫)的數據結構造成一一對應的映射關係,若是持久層是關係型數據庫,那麼,數據表中的每一個字段(或若干個)就對應PO的一個(或若干個)屬性。

 

 

.NET平臺

(1)操做系統是.NET平臺的基礎,在操做系統方面,Microsoft有着強大的開發能力,目前的.NET平臺能夠運行在多個由Microsoft提供的操做系統中。

(2).NET Enterprise Servers提供了包括Application Center、BizTalk Server、CommerceServer等一系列服務器產品,經過這些產品能夠縮短構建大型企業應用系統的週期。

(3).NET Building Block Services指的是一些成型的服務,例如,由Microsoft提供的NET Passport服務等。.NET的開發者能夠以付費的方式直接將這些服務集成在本身的應用程序中。

(4).NET Framework位於整個.NET平臺的中央,爲開發.NET應用提供低層的支持。.NET Framework的核心部分是CLR。CLR是.NET程序的執行引擎,.NET的衆多優勢也是由CLR所賦予的。CLR同JVM的功能相似,提供了單一的運行環境。任何.NET應用程序都會被最終編譯成爲IL(Intermediate Language,中間語言),並在這個統一的環境中運行。也就是說,CLR能夠用於任何針對它的編程語言,這也就是.NET的多語言支持功能。CLR還負責.NET應用程序的內存管理、對象生命期的管理、線程管理、安全等一系列的服務。

(5)Visual Studio.NET是.NET應用程序的集成開發環境,它位於.NET平臺的頂端。Visual Studio.NET是一個強大的開發工具集合,裏面集成了一系列.NET開發工具,如:C#.NET、VB.NET、XML Schema Editor等。

相關文章
相關標籤/搜索