大家好,我是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組件返回的結果計算出最終結果。
主從模式中,服務的執行委托給具有不同實現的不同從服務器。該模式經常用于將主數據庫視和從數據庫,并將數據同步到從庫。
以上是關于軟件開發中常用的框架模式,框架模式直接決定了開發中各個功能模塊之間的依賴關系,以及數據交互方式等等。
掛一漏萬,還有一些其他的模式沒有列舉到,希望給小伙伴們帶來一些幫助。