管道与过滤器
前言
當一個行業專家解決一個特定問題時,很少完全創新出一個全新的方案,更多是采用類似問題的方案來解決新問題。
在對特定應用領域的系統架構方法的抽象總結,我們稱之為系統架構風格,與設計模式類似,但層次比設計模式高,設計模式用于解決子系統或組件的實現,而系統架構風格用于描述如何劃分組件及組件之間如何協作。
管道與過濾器架構風格屬于數據流領域架構風格:數據在系統中經過各階段處理,并最終給出結果的應用領域。
簡介
系統架構定義:描述構件及構件之間的協作關系,在管道與過濾器架構中,將構件描述為過濾器,構件與構件之間的連接稱為管道
過濾器負責接收數據,處理數據及輸出數據,各過濾器之間由管道連接
過濾器有以下幾個特點:
管道:負責傳輸數據。
?
系統體系圖
?
適用場景
管理與過濾器架構風格屬于數據流架構體系,適合于處理數據需按階段處理的應用領域,數據在一個處理階段中處理,前一個處理階段的輸出被后一個階段接收并處理,
常見的示例:
編譯器:
在代碼編碼過程中,編譯器需執行詞法分析階段,句法分析階段,語義分析階段,代碼生成階段,每一個階段的輸出作為后一階段的輸入。
網絡傳輸
在網絡中計算機之間的數據通信也可以看成是管道與過濾器,計算機發送的數據通過應用程,表示層,會話層,網絡層,數據鏈路層,物理層,層層處理后發送到對方計算機。
OTS仿真
在OTS仿真系統中,設備通過物質流傳遞數據,
優點
各模塊高內聚,松耦合
各模塊可重用
方便更新或加入新的過濾器,擴展系統功能
易于理解,可將系統看成是各過濾器的簡單疊加
系統特定問題如死鎖,吞吐量等容易分析
各過濾器相互獨立,可支持并行
缺點
在復雜系統中,若過濾器之間存在相互的關系,需要設計協調相互之間的計算順序
若各過濾器傳輸的數據沒有統一的規范,各過濾器則需要做加密解析等操作,降低了性能
參考系統體系圖發現沒有統一的共享數據區,因此不能提供任務處理進度,了解各階段的處理細節。
實現技巧
由于各過濾器之間相互獨立計算,計算的結果只與輸入有關,因此在協作時,需根據過濾器的依賴關系,設計好計算拓撲圖,根據拓撲圖來保證過濾器的計算順序,保證計算正確。
總結
- 上一篇: Qt 自定义悬浮窗(带动画,类似QQ拼音
- 下一篇: Arduino 四针脚声音传感器