大家好,我是IT售前工程師Bernie.
軟體架構模式是軟體開發的基礎,決定了軟體各個功能子產品之間的層級關系、依賴關系、通信方式,也影響着軟體的開發、調試、運維和更新方式。
本文重點講解在軟體開發中,8種常見的架構模式,歡迎閱讀。
分層模式
分層模式基本上是軟體中最常用、最普遍的模式。顧名思義,在分層架構中,一個軟體整體被分為多個層級,每一層擔負着不同的職責與角色。
通常情況下,一個軟體整體會分為3層:表示層、業務邏輯層和資料通路層。
表示層即使用者界面層,還有一部分對外提供的api、sdk接口服務。表示層直接面向使用者,跟使用者打交道,接收使用者的使用指令并将IO輸入下發到業務邏輯層;同時,将業務邏輯層的運算結果、靜态頁面、動态頁面顯示給使用者。
業務邏輯層作為表示層和資料通路層之間的連接配接者,對表示層提供需要的業務邏輯,同時借助于資料通路層獲得資料。主要提供的功能包括驗證、計算和業務規則。
資料通路層主要負責資料的增、删、改、查,它不包括資料庫,隻是對資料的讀寫。
采用分層架構,各層間充分解耦,結構和任務清晰明确。同時,提高了各層的可擴充性、可維護性。也可以并行開發,迅速響應需求的變化。
但是,分層架構一定程度上降低了系統的運作效率。比如原本簡單的資料查詢在表示層就可以直接做的,分層之後就必須通過業務邏輯層才可以。多了中間層,一個層級的代碼調整,會影響到多個層級都要跟着調整,級聯的修改導緻代碼修改成本增加。
管道-過濾器模式
一個事件可以導緻一系列的步驟發生,每一個步驟執行特定的功能。管道-過濾器架構是将一個大的任務拆分成多個順序執行的子任務,子任務串行處理。
就像是生産工廠中的房間的流水線一樣,原始資料在水流線上跑動,每經過一個環節就進行一次加工處理,最終變為最終的資料。
我們可以看到,每一個【管道-過濾器】就是一個功能子產品,它由輸入、業務邏輯、輸出3個部分構成。每經過一個管道-過濾器組合,資料便被處理一次。
管道-過濾器模式核心在于任務拆解,将複雜的任務化繁為簡,形成串行的多任務處理機制。隻實際開發中,存在資料封裝的要求,因為每個【管道-過濾器】組合的輸入、輸出都是有特定格式要求的。
此外,雖然對于單個任務是串行處理的,其實【管道-過濾器】組合可以并行處理多個任務,過濾器中的任務處理是獨立的,并不依賴于其他的過濾器。
用戶端-伺服器模式C/S
C/S架構中,用戶端作為服務的請求者和消費者,伺服器作為服務的提供者,兩個部分通過網絡進行連接配接和互動。
C/S模式的優點是比較容易對client和server進行模組化,但是會出現單點故障和性能方面的瓶頸。C/S架構的安全性比B/S高一些,适合金融業務、郵件業務和共享文檔等業務。
用戶端的更新也是比較複雜的事情,如果軟體需要更新,那麼需要對所有的用戶端做手動更新才可以。現在有了雲服務,用戶端更新可以做批量,這仍是一項耗時的工作。
模型-視圖-控制器模式MVC
模型-視圖-控制器模式( Model-View-Controller)又稱MVC模式。這是一種類似于分層模式的開發架構,MVC可以将使用者頁面和業務邏輯進行分離,在二者之間增加了一道控制器。
UI的顯示和業務邏輯處理要經過控制器的轉換和傳送,才可以進行互動。這樣做讓Model和View之間充分解耦,提高了整個軟體的可擴充性、複用性和靈活性。
我們知道,UI界面在開發中是改動最為頻繁的部分,那麼通過MVC模式,就可以将UI改動對于業務的影響降低到最小。
事件總線模式
事件總線模式是一種基于監聽機制的工作架構,由事件、監聽器、通道和事件總線四部分組成。
首先,監聽器訂閱事件通道,與其建立綁定關系,當事件源需要觸發某個任務時會告知特定的通道。然後,與通道建立了訂閱關系的監聽器會收到消息通知,最後執行監聽器中的各項任務。
事件總線模式類似于廣播機制,我們可以通過添加訂閱者來增加某個事件源的響應者。這種模式在Android開發中經常會用到。比如EventBus訂閱者,它可以實作Activity、Service、Fragment、等元件間的通信。
微服務模式
目前,在很多大的應用軟體,比如企業OA系統,一體化計劃建設系統等,這些系統涉及到的流程特别複雜,功能超級多。如果采用基本的浏覽器或者原生開發很難有效完成部署和更新疊代。
可以采用微服務架構,我們“化繁為簡”把某一類功能歸類,把整個系統作為一個個獨立的微服務。各個微服務之間有自己的API邊界,甚至可以采用不同的程式設計語言。
在資料庫層面可以通過API接口調用,或者用消息隊列通信。
微服務的架構使得繁雜的系統具備獨立開發、獨立部署的良好特點,特别适合龐大的企業應用軟體。
點對點模式
點對點模式又稱p2p模式(peer to peer),每個元件被稱為節點。節不同的節點既可以作為用戶端,向其他節點發請求。也可以作為其他節點的服務端,響應對方的請求。這種模式具有很強的健壯性和可擴充性。
同時,系統性能往往依賴于節點的數量,且節點之間是資源合作的關系。是以,服務品質、安全性方面可能得不到很好的保障。點對點模式常用于檔案共享網絡類型的企業應用。
在點對點模式中,生産者(producer)發送一條消息到消息隊列queue,隊列中的消息隻能被一個消費者接收到并處理。并且,消費者Consumer随時處于接收消息的狀态。
主從模式
主從模式由master、slave兩大元件構成,master元件會将工作配置設定給slave元件,并根據slave元件傳回的結果計算出最終結果。
主從模式中,服務的執行委托給具有不同實作的不同從伺服器。該模式經常用于将主資料庫視和從資料庫,并将資料同步到從庫。
以上是關于軟體開發中常用的架構模式,架構模式直接決定了開發中各個功能子產品之間的依賴關系,以及資料互動方式等等。
挂一漏萬,還有一些其他的模式沒有列舉到,希望給小夥伴們帶來一些幫助。
我是IT售前工程師Bernie,歡迎關注!下期見~