Garlan和Shaw将軟件架構風格分為五大類,數據流風格、調用/返回風格、獨立構件風格、虛拟機風格和倉庫風格。
數據流風格的特征是:數據的可用性決定處理是否被執行; 系統結構由數據之間的有序移動來決定; 在純數據流系統中, 處理之間除了數據交換沒有其它的交互。
數據流的組件是各個計算單元,連接件是輸入輸出流. 然後隻有各個組件之間數據近線性流通或者有限循環流通才能應用數據流風格. 如果數據在各個組件之間雜亂無序地流通, 應用數據流風格很容易出現死鎖的現象。
數據流風格分為批處理風格和管道過濾器風格.其中批處理是各個處理單元隻有等到上一個處理單元把全部數據處理完才能開始處理這些數據, 各個處理單元相互獨立. 而管道過濾器類似自來水管, 上一個處理單元處理一條數據就會發送給下一個處理單元進行處理. 這兩種方式的主要區别是一個強調整體數據的傳輸, 一個是強調增量式的傳輸。
實際情況,通常會根據業務的需求來選擇不同的處理模型. 比如在編譯器程序裡面會選擇批處理風格, 比如先整體進行代碼分析得到抽象語法樹才會進行下一步的處理, 不同代碼文件之間有一定關聯性就要求需要整體處理分析. 在數據源源不斷産生的場景, 系統需要對這些數據進行一系列的處理, 可以利用管道過濾器風格。
數據流風格有很多優點.整個系統也可以看成是由幾個獨立的處理單元簡單合成. 複用性強, 隻要提供兩個計算單元之間的數據格式, 任何兩個處理單元都可以被連接起來. 系統維護和增強性簡單, 新的可以添加的現有的系統當中, 舊的可以被改進的過濾器替換. 有一定的并行, 特别是管道過濾器風格, 不需要等待所有數據處理完, 另外各個處理單元相互獨立, 可以并行計算。
然而數據流風格也有一些缺點.不适合适處理交互的應用. 系統性能并不高, 需要在各個管道之間複制數據, 不适合大量數據需要共享的應用上.數據傳輸格式沒有統一的标準,大部分時間用來處理格式轉換上。
數據流風格包括“批處理“風格和管道-過濾器”風格
1、批處理序列 (數據完整,整體傳遞)
構件為一系列固定順序的計算單元,構件之間隻通過數據傳遞交互。每個處理步驟是一個獨立的程序,每一步必須在其前一步結束後才能開始,數據必須是完整的,以整體的方式傳遞。
2、管道-過濾器 (數據可不完整,所有構件都有輸入 輸出)
每個構件都有一組輸入和輸出,構件讀輸入的數據流,經過内部處理,然後産生輸出數據流。這個過程通常是通過對輸入數據的變換或計算來完成的,包括通過計算和增加信息以豐富數據、通過濃縮和删除以精簡數據、通過改變記錄方式以轉化數據和遞增地轉化數據等。這裡的構件稱為過濾器,連接件就是數據流傳輸的管道,将一個過濾器的輸出傳到另一個過濾器的輸入。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!