組件化設計
“軟件組件化”是一種理想的軟件開發理念,它主張軟件產品的開發應當像制造工業產品那樣,首先通過專業化分工生產出不同功能的“零部件”,然后再將這些“零部件”合理地組裝起來,形成所需的產品。“軟件組件化”,真正實現了軟件復用和組件化生產,極大節約軟件產品的開發時間和開發成本。
組件技術與面向對象的開發方法不同的是,面向對象的技術強調對個體的抽象,組件則更推廣了對象封裝的內涵,側重于復雜系統中組成部分的協調關系,強調實體在環境中的存在形式。 為了說明組件化為什么是軟件工廠的技術基礎,我們先來看看組件的基本屬性。
從廣義上來說,組件有如下的幾個基本屬性:
1、組件是可獨立配置的單元,因此組件必須自包容;
2、組件強調與環境和其他組件的分離,因此組件的實現是嚴格封裝的,外界沒機會或沒必要知道組件內部的實現細節;
3、組件可以在適當的環境中被復合使用,因此組件需要提供清楚的接口規范,可以與環境交互;
4、組件不應當是持續的,即組件沒有個體特有的屬性,理解為組件不應當與自身副本區別。
面向對象
面向對象是一種自下而上的程序設計方法,不像過程式設計那樣一開始就要用main概括出整個程序,面向對象設計往往從問題的一部分著手,逐步構建出整個程序。面向對象設計以數據為中心,類作為表現數據的工具,是劃分程序的基本單位,而函數在面向對象設計中成為類的接口。
面向對象設計自下而上的特性,允許開發者從問題的局部開始,在開發過程中逐步加深對系統的理解。這些新的理解以及開發中遇到的需求變化,都會再作用到系統開發本身,形成一種螺旋式的開發方式。在這種開發方式中,對于已有的代碼,常需要運用Refactoring技術來做代碼重構以體現系統的變化。
1.1.1 以SOA體系結構和組件化的設計為主要技術路線
采用SOA架構有利于項目的建設,它可以根據需求通過網絡對松散耦合的粗粒度應用組件進行分布式部署、組合和使用。服務層是SOA的基礎,可以直接被應用調用,從而有效控制系統中與軟件代理交互的人為依賴性。
在基于SOA架構的系統中,具體應用程序的功能是由一些松耦合并且具有統一接口定義方式的組件(也就是service)組合構建起來的。
SOA架構模型如下圖所示:
本項目將基于SOA架構模型進行系統的規劃、設計與建設。
1.1.2 基于J2EE技術體系開發應用系統
技術體系上選用J2EE技術,采用Browser/WebServer/DataBaseServer三層結構進行應用系統的開發。
1.1.3 系統架構采用B/S
本系統架構采用比較靈活的B/S方式實現,瀏覽器Browser/WEB服務器Server/數據庫服務器Database是解決公共信息服務以及交互相應動態服務最適用的一種應用模型。實現了真正意義上的瘦客戶,大大簡化了應用系統的分發、配置管理和版本管理工作。
1.1.4 構建總線式的應用系統集成環境
服務總線是一種體系結構模式,支持虛擬化通信參與方之間的服務交互并對其進行管理。它提供服務提供者和請求者之間的連接,即使它們并非完全匹配,也能夠使它們進行交互,此模式可以使用各種中間件技術和編程模型實現。另外,連接到 ESB 是集成部署決策,應用程序源代碼不會受到影響。
如上圖,在總線模式中,服務交互的參與方并不直接交互,而是通過一個總線交互,該總線提供虛擬化和管理功能來實現和擴展 SOA 的核心定義。因此 ESB 模式使請求者不用了解服務提供者的物理實現——從應用程序開發人員和部署人員的角度來看均是如此。
總線負責將請求交付給提供所需功能,提供者接收他們要響應的請求,而不知道消息的來源。數據服務總線本身對使用它的服務請求者和提供者均不可見。應用程序邏輯可以使用各種編程模型和技術調用或交付服務,而無需考慮是直接連接還是通過總線傳遞的。
應用組件和應用功能可根據各類用戶的需要,按照統一的規范包裝成webService注冊到總線上,由數據服務總線統一管理,統一編排,統一提供外部服務。