1. 程式人生 > >軟件體系架構在工作中的總結

軟件體系架構在工作中的總結

aaa aaaaa data 發生 wid 觀察者 AC 思想 訂閱

軟件系統架構風格的知識,其中介紹了五種主要的架構風格,分別是:數據流風格,倉庫風格,調用、返回風格,構件風格和虛擬機風格。因為平時一直是CODING,沒有真正花時間來學習架構相關的知識。其實,在平時的工作中,我們已經是有意或者無意中應用到了上面的一些架構風格,只是沒有去理論化和系統化。即使以前做過的一些系統雖小,但其思想,或多或少也體現了一些架構上的風格。

(一)數據流風格之過濾器/連接器風格

以前搞過一個檢索的系統,功能大概是根據查詢的關鍵詞,在SHARE POINT索到相關文件的二進制流,然後把二進制流反序列轉換為對應的文件,最後通過PDF轉化處理,統一轉化為PDF的文件格式呈現出來,如果考慮到查詢時的分詞,圖示可以如下:
技術分享圖片

1)構件:方框部分:有一個輸入的數據流和輸出與的數據流,分詞,檢索,反序列和轉PDF,分別對輸入的數據流進行運算和轉化。分詞構件的輸入數據為關鍵詞,輸出分詞後的關鍵詞。檢索構件的輸入數據為分詞後的關鍵詞,輸出二進制流。反序列構件的輸入數據為二進制流,輸出為對應的文件。轉PDF構件的輸入數據為文件,輸出為PDF。

2)連接器:箭頭部分,連接各個構件。

3)采用這個架構,有利於將問題域的分解,而且也有利於各個構件的替換,和系統的升級。

(二)構件風格之事件驅動風格(或隱式事件調用風格)

以前搞過一個監控系統,功能是對儀器采集出來的數據進行實時監控(串口通信),如果數據超標,則實時報警,從設計模式來看,典型的觀察者模式,在系統架構風格裏面,應該是事件驅動比較合適了,在這個系統中,數據采集構件公布了報警事件,其他希望獲得報警消息構件的過程在這個事件上註冊,一旦檢測數據超標,那麽數據采集構件統一調用註冊在報警事件上的各個過程,

圖示如下:
技術分享圖片
1)構件:對象或者過程,細分為:過程或者函數,和事件。
2)連接件:事件-過程綁定。
3)采用這種架構,將事件的發布者和訂閱者解耦,有利於事件訂閱者的擴充。
4)在.NET裏,主要用委托,數據采集是事件源,公布報警事件。

(三)調用,返回之分層風格
這種風格的應用多得那裏去了,典型的WEB三層就是這種架構了,用的太多了,分別是:WEB,BLL,DAL.之前一直不明白BLL層,覺得它可有可無,其實不是這樣的,這層,一來,作為WEB和DAL之間的橋梁,當DAL發生變化時,BLL可以為WEB層提供透明的“服務”。二來,可以放一些業務上的判斷。

軟件體系架構在工作中的總結