軟件架構風格

文檔名稱:軟件架構風格(software architecture style)
文檔維護:Xuefeng Chang(welfear@gmail.com)
文檔建立:2013.07.27



若是說設計模式是從代碼角度爲系統下降耦合度,那麼架構風格即是從數據角度解耦。
架構是更加宏觀和全面的視角,它再也不是解決單一的技術問題,而是爲系統提供更加
完整的解決方案。

架構風格是一種粗粒度的軟件模式,爲常見軟件問題提供解決方案,促進軟件的重用。
常見的軟件架構風格以下:

1.Pipe & Filter
2.Batch
3.VM
4.Layered Architecture

5.MVC, PAC
6.MicroKernel
7.Event System
8.Blackboard System

9.Broker, C/S, P2P, SOA

參考http://www.infoq.com/news/2009/02/Architectural-Styles-Patterns

每種架構風格適用於某種特定的問題域,好比第九項所有是分佈式計算領域的架構風格。

從用戶最多見的GUI和CUI環境視角看:
CUI經常是具備單一輸入和單一輸出,比較擅長處理有機械性、重複性和規律性的問題。
GUI更擅長有交互性的任務,它的輸入和輸出之間時常會變化並加以排列組合。

CUI和GUI是一種演化的關係:

1.當輸入是單一流或者多個單一流時,架構風格每每是Pipe & Filter/Batch/N Layered。
2.當輸入是多個流時,架構風格一般是MVC/PAC。
3.當須要合併多個輸入流時,則會使用Event System/MicrosKernel。
4.當須要合併多個輸出流時,則會使用Blackboard System。

對於1,在Linux中系統管理員和程序員經常使用Pipe & Filter處理文本流;而在流媒體系統中,
Pipe & Filter用來demux視頻流和音頻流。這種固定輸入流的任務很容易實現批量功能而
變成Batch狀態。VM虛擬機能夠簡單看做是複雜輸入而沒有相應輸出的任務。Layed Arch
是一種存在依賴的Pipe & Filter,它的處理順序和流程已經事先設定好。

對於2,MVC不單單是設計模式,當它能解決多個輸入流問題時,它成爲爲一種架構風格。
MVC以及其衍生的MVVC, MVP, PAC將輸入模塊,數據模塊和協調控制模塊分解開來。相似的
模型比較強調Control的做用。

對於3和4,它們經常和MVC共同使用。3, 4表明一種處理更復雜問題的通常思路。數據可能
是輸入或輸出,也多是一種解耦的方式。好比實現接口的虛表就是一種解耦數據。直接
傳遞數據會下降系統性能,上下文情景分析和有效數據分離都會增長計算時間開銷。
Event System每每會維護原始的上下文和當前變化數據的信息,這些數據出如今輸入流的
最開始處理階段或着是先後處理模塊的銜接過程。Blackboard System強調了Model的做用,
擁有共同的Model特別是Domain Model能夠在更宏觀的層面上爲系統解耦或接入更多的
生產者與消費者。
相關文章
相關標籤/搜索