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