一、 軟件架構設計的概念
1. 架構設計的一個核心問題是能否達到架構級的軟件複用
2. 架構風格反映了領域中眾多系統所共有搭檔結構和語義特性,並指導如何將各個構件有效地組織成一個完整的系統
3. 架構風格定義了用於描述系統的術語表和一組指導構建系統的規則
二、 軟件架構風格
1. 數據流風格
1) 批處理序列:構件為一系列固定順序的計算單元,構件之間只通過數據傳遞交互。每個處理步驟是一個獨立程序,每一步必須在其前一步結束後才能開始,數據必須是完整的,以整體搭檔方式傳遞。
2) 管道-過濾器:每個構建都有一組輸入和輸出,構建讀輸入的數據流,經過內部處理,然後產生輸出數據流。這個過程通常是通過對輸入數據流的變換或計算來完成的,包括通過計算和增加信息以豐富數據、通過濃縮和刪除以精簡數據、通過改變記錄方式以傳化數據和遞增地轉化數據等。這裡的構建稱為過濾器,連接件就是數據流傳輸的管道,將一個過濾器的輸出傳到另一個過濾器的輸入
3) 編譯可以用管道過濾器,是否表明是分步驟一步一步走,數據是否要完整
2. 調用/返回風格
1) 主程序/子程序:單線程控制,把問題劃分為若干個處理步驟,構件即為主程序和子程序,子程序通常可合成為模塊。過程調用作為交互機制,即充當連接件的角色。調用關係具有層次性,其語義邏輯表現為主程序的正確性取決於它調用的子程序的正確性。
2) 面向對象:顯示調用。構件是對象,對象是抽象數據類型的實例。在抽象數據類型中,數據的表示和它們的相應操作被封裝起來,對象的行為體現在其接受和請求的動作。連接件即是對象間交互的方式,對象是通過函數和過程的調用來交互的
3) 層次結構:構件組織成一個層次結構,連接件通過決定層間如何交互的協議來定義。每層為上一層提供服務,使用下一層的服務,只能見到與自己鄰接的層。通過層次結構,可以將大的問題分解為若干個漸進的小問題逐步解決,可以隱藏問題的複雜度。修改某一層,最多影響其相鄰的兩層(通常只能影響上層)
3. 獨立構建風格
1) 進程通信:獨立構件。構件是獨立的過程,連接件是消息傳遞。構件通常是命名過程,消息傳遞的方式可以是點對點、異步或同步方式,以及遠程過程(方法)調用等
2) 事件驅動系統:隱式調用。構件不直接調用一個過程,而是觸發或廣播一個或多個事件。構件中的過程在一個或多個事件中註冊,當某個事件被觸發時,系統自動調用在這個事件中註冊的所有過程。一個事件的觸發就導致了另一個模塊中的過程調用。這種風格中的構件是匿名的過程,它們之間交互的連接件往往是以過程之間的隱式調用來實現的。主要優點是為軟件複用提供了強大的支持,為構件的維護和演化帶來了方便;其缺點是構件放棄了對系統計算的控制
4. 虛擬機風格
1) 解釋器:
2) 基於規則的系統:
5. 倉庫風格
1) 數據庫系統:數據共享。構件主要有兩大類,一類是中央共享數據源,保存當前系統的數據狀態;另一類是多個獨立處理單元,處理單元對數據元素進行操作
2) 黑板系統:包括知識源(數據)、黑板和控制三部分。知識源包括若干獨立計算的不同單元,提供解決問題的知識。知識源響應黑板的變化,也只修改黑板;黑板是一個全局數據庫,包含問題域解空間的全部狀態,是知識源相互作用的唯一媒介;知識源響應是通過黑板狀態的變化來控制的。黑板系統通常應用在對於解決問題沒有確定性算法的軟件中(信號處理,問題規劃和編譯器優化等)
3) 超文本系統:構件以網狀鏈接方式相互連接,用戶可以在構件之間進行按照人類的聯想思維方式任意跳轉到相關構件。超文本是一種非線性的網狀信息組織方法,它以節點為基本單位,鏈作為節點之間的聯想式關聯。超文本系統通常應用與互聯網領域
6. 兩層C/S架構(Customer/Service,胖客戶端)
1) 表示層和數據層(服務層,數據庫)
2) 開發成本較高
3) 客戶端程序設計複雜
4) 信息內容個和形式單一
5) 用戶界面風格不一
6) 軟件移植困難
7) 軟件維護和升級困難
8) 新技術不能輕易應用
7. 三層C/S架構(瘦客戶端)
1) 比兩層C/S架構多個功能層
2) 功能層放業務邏輯層
3) 各層在邏輯上保持相對獨立,整個系統的邏輯結構更為清晰,能提高系統的軟件的可維護性和可擴展性
4) 允許另個有效地選用相應的平臺和硬件系統,具有良好的可升級性和開放性
5) 各層可以並行開發,各層也可以選擇格子最合適的開發語言
6) 功能層有效地隔離表示層與數據層,為嚴格的安全管理奠定了堅實的基礎;整個系統的管理層次也更加合理和可控制
7) 通信效率極差
8. 三層B/S架構(零客戶端)
1) B/S架構缺乏對動態頁面的支持能力,沒有集成有效的數據庫處理功能
2) B/S架構安全性難以控制
3) 採用B/S架構的應用系統,在數據查詢等響應速度上,要遠遠低於C/S架構
4) B/S架構數據提交一般以頁面為單位,數據的動態交互性不強,不利於OLTP應用
9. 混合架構
10. 富互聯網應用(RIA)
1) RIA結合了C/S架構反應速度快、交互性強的優點,以及B/S架構傳播範圍廣及容易傳播的特性
2) RIA簡化並改進了B/S架構的用戶交互
3) 數據能夠被緩存在客戶端,從而可以實現一個比基於HTML的響應速度更快且數據往返於服務器的次數更少的用戶界面
4) AJAX
5) mushup
11. 基於服務的架構(SOA)
1)服務是一種為了滿足某項業務需求的操作、規則等的邏輯組合,它包含一系列有序活動的交互,為實現用戶目標提供支持
2)所有服務通過服務總線(service bus)或流程管理器來連接服務和提高服務請求的路徑
3)Web服務實現SOA
4)ESB
ü 提供位置透明性的消息路由和尋址服務
ü 提供服務註冊和命名的管理功能
ü 支持多種消息傳遞範型
ü 支持多種可以廣泛使用的傳輸協議
ü 支持多種數據格式及其相互轉換
ü 提供日誌和監控功能
閱讀更多 許石石石石石石 的文章