管道-過濾器模式的體系結構是面向數據流的軟件體系結構。它最典型的應用是在編譯系統。一個普通的編譯系統包括詞法分析器,語法分析器,語義分析與中間代碼生成器,優化器,目標代碼生成器等一系列對源程序進行處理的過程。人們能夠將編譯系統看做一系列過濾器的鏈接體,按照管道-過濾器的體系結構進行設計。此外,這種體系結構在其它一些領域也有普遍的應用。所以它成爲軟件工程和軟件開發中的一個突出的研究領域。架構
在管道,過濾器架構模式中,每一個構件都有一組輸入,輸出,構件讀取輸入的數據流,通過內部處理後,產生輸出數據流,該過程主要完成輸入流的變換及增量計算。一般,將這裏的構件稱爲過濾器,其中的鏈接器就像是數據流傳輸的管道,將一個過濾器的輸出傳送到另外一過濾器的輸入。管道,過濾器輸出的正確性並不依賴於過濾器進行增量計算過程的順序。性能
管道-過濾器的組成優化
1 過濾器加密
過濾器按照對流經它的數據操做的不一樣,可分爲3類過濾器:輸入過濾器,處理過濾器和輸出過濾器。下面將對這三類過濾器進行介紹。設計
(1)輸入過濾器開發
輸入過濾器處在問題所在的外部世界與軟件系統的邊界處,是系統數據流的源點。它負責接收外界信息並轉化爲系統所需的數據流。編譯
(2)處理過濾器架構模式
處理過濾器是系統內變換數據流的部件,它有一個入口和一個出口,數據經入口流入,通過處理過濾器內部處理以後從出口流出。原理
(3)輸出過濾器軟件
從創建完備的,首尾一致的可重用的軟件部件組的角度出發,正如輸入過濾器是系統數據流的起點,那麼輸出過濾器是數據流的終點。
過濾器的實現還須知足如下三條基本原理:
隨後的處理單元從過濾器中拉出輸出數據;
前面的處理單元把新的輸入數據壓入過濾器;
過濾器以循環工做的方式,從流水線中拉出其輸入數據而且將其輸出數據壓入流水線。過濾器按照以上三種狀況可分爲兩類:主動過濾器和被動過濾器。知足前兩種狀況的過濾器稱爲被動過濾器,知足最後一種狀況的過濾器稱爲主動過濾器。
2 管道
管道做爲過濾器之間數據流動的通道的軟件部件,它的主要功能是鏈接各個過濾器,充當過濾器之間數據流的通道。管道具備數據緩衝以及提升過濾器之間的並行性操做的做用。管道由數據緩衝區,向數據緩衝區讀和寫數據,判斷管道爲空或已滿等操做定義組成
管道/過濾器模式的優勢以下。
(l)體現了各功能模塊的「黑盤」特性及高內聚、低耦合的特色。
(2)能夠將整個系統的輸入,輸出行爲當作是多個過濾器行爲的簡單合成。
(3)支持軟件功能模塊的重用。
(4)便於系統維護:新的過濾器能夠添加到現有系統中來,舊的能夠由改進的過濾器替換。
(5)支持某些特定的分析,如吞吐量計算、死鎖檢測等。
(6)支持並行操做,每一個過濾器能夠做爲一個單獨的任務完成。
管道,過漶器模式的缺點以下。
(1)一般致使系統處理過程的成批操做。
(2)須要設計者協調兩個相對獨立但又存在關係的數據流。
(3)可能須要每一個過濾器本身完成數據解析和合成工做(如加密和解密),從而致使系統性能降低,並增長了過濾器具體實現的複雜性。