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