自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

五大主流軟件架構模式

譯文
開發(fā) 架構
本文將向您介紹五種架構模式的各自優(yōu)勢和適用環(huán)境。您可以在程序設計與項目中,按照實際需求選擇不同的軟件架構模式,并實現(xiàn)復用。

[[330780]]

【51CTO.com快譯】

在去年底召開的全球軟件架構峰會(Global Software Architecture Summit)上,全球各界開發(fā)人員齊聚一堂,廣泛地討論了各種業(yè)界常見的軟件架構模式。在此,我為您梳理并總結這些軟件架構師給我們帶來的精彩見解。

首先,什么是軟件架構模式?

架構模式是那些由軟件架構師通過持續(xù)實踐,進而總結出的、過往已驗證的、優(yōu)秀設計架構。它們往往能夠被重復地使用到其他項目或領域之中。更具體地說,架構模式是需要在實踐中反復發(fā)掘的一組設計決策。它具有明確定義的屬性,以及一套可以被重復使用與描述的架構。

其實,開發(fā)軟件架構可以被看作是針對模式進行選擇、定制和組合的一整套過程。而軟件架構師的任務就是要決定:如何實例化模式,如何使其與特定的上下文、以及問題的約束相適應。我們將在下文中進行詳細的討論。

Mark Richards在其著作--《軟件架構模式》一書中主要介紹了5種軟件架構模式,它們分別是:微內核、微服務、分層架構、基于事件(事件驅動)和基于空間。下面我們將根據(jù)這個順序逐一進行介紹。

1.微內核模式

微內核架構模式也稱為插件架構模式。它通常是在軟件團隊創(chuàng)建具有可互換性組件(interchangeable components)的系統(tǒng)時,被使用到。

該模式主要適用于那些必須能夠適應不斷變化需求的軟件系統(tǒng)。微內核模式能夠從擴展功能、以及特定于客戶的部件中,分離出最小的功能核心。作為一種套接字(socket),它能夠插入到各種擴展之中,并協(xié)調其相互之間的協(xié)作關系。

業(yè)界通常認為:微內核架構模式是一種可被用于實施基于產(chǎn)品的應用程序的自然模式。此處所謂基于產(chǎn)品的應用程序,是一種打包的應用程序,可以作為典型的第三方產(chǎn)品版本被下載。當然,許多公司也會據(jù)此來開發(fā)和發(fā)布其內部的業(yè)務應用,例如:各種軟件產(chǎn)品、版本、發(fā)布說明、以及可插入的功能等。

微內核架構模式允許您將其他應用程序的功能作為插件,添加到核心的應用程序上,進而提供可擴展性、以及功能上的分離(隔離)。

微內核架構模式通常由兩種類型的架構組件所組成:核心系統(tǒng)和各種插件模塊。我們需要將應用程序的邏輯,在各個獨立的插件模塊和基礎核心系統(tǒng)之間進行劃分,以提供基于應用功能,和自定義處理邏輯的可擴展性、靈活性和隔離性。在傳統(tǒng)概念上,微內核架構模式的核心系統(tǒng),僅包含那些系統(tǒng)運行所需的最少功能。

微內核架構的最佳示例是Eclipse IDE。通過下載基本的Eclipse產(chǎn)品,您只會獲得一個編輯器。而只有在您添加了各種插件之后,它才能成為一個高度可定制的、實用的產(chǎn)品。

優(yōu)勢:

  • 具有極大的靈活性和可擴展性。
  • 在某些實現(xiàn)場景中,允許應用程序在運行的時候被添加插件。
  • 具有良好的可移植性。
  • 易于部署。
  • 能夠快速地響應不斷變化的環(huán)境。
  • 插件模塊既可以單獨地被測試,又可以由核心系統(tǒng)來輕松地進行模擬,以演示或原型化某項特定的功能,進而達到對核心系統(tǒng)的盡少、甚至不做修改。
  • 由于您可以通過自定義和簡化應用程序,來僅包括那些必需的功能,因此它能夠提供優(yōu)越的性能。

適合性:

  • 那些需要從不同來源獲取數(shù)據(jù),并在轉換數(shù)據(jù)之后寫入不同目標的應用程序。
  • 工作流程類應用程序。
  • 任務與作業(yè)計劃類應用程序。

2.微服務模式

當您將應用程序作為一組微服務進行編寫時,實際上是在編寫可以協(xié)同工作的多個微型應用程序。每個微服務都有自己的“職責”,團隊可以獨立于其他微服務進行開發(fā)。他們之間唯一的依賴便是溝通。當微服務彼此進行通信時,您必須確保它們之間發(fā)送的消息能夠向后兼容。

優(yōu)勢:

  • 您可以單獨地編寫,維護和部署每一個微服務。
  • 您可以靈活地僅擴展那些需要的微服務。
  • 由于應用程序的各個部分較小,并且與其他部分的耦合較寬松,因此您可以輕松地進行重寫。
  • 新的團隊成員很容易快速上手。
  • 能夠使得應用程序易于被理解和修改。
  • 通過提供良好的可維護性和可測試性,以實現(xiàn)快速且頻繁的開發(fā)和部署。
  • 團隊無需與其他團隊協(xié)調,便可獨立地部署其服務。

適合性:

  • 適合帶有小型組件的站點。
  • 有明確邊界的企業(yè)級數(shù)據(jù)中心。
  • 快速發(fā)展的新業(yè)務和Web應用。
  • 具有遍布全球的開發(fā)團隊。

3.分層架構模式

最常見的架構模式當屬分層架構模式。它是我們用來設計大多數(shù)軟件的傳統(tǒng)方法,同樣有具有一定的獨立性。分層架構模式是一種多層模式,每個層面上都有多個組件。這就意味著所有的組件雖然是互聯(lián)的,但是彼此之間并不依賴。在應用程序中,分層架構模式的每一層都有特定的角色和職責。例如:表示層將負責處理所有用戶界面和瀏覽器之間的通信邏輯,而業(yè)務層將負責執(zhí)行與請求相關的特定業(yè)務規(guī)則。

分層架構模式的主要特點在于各個組件各司其職,相互分離。也就是說,某個特定層面上的組件,僅會處理與該層有關的邏輯。

優(yōu)勢:

  • 由于在該架構中,組件只屬于某個特定層面,而其他層面可以被模擬出來,因此該模式具有良好的易測試性。
  • 由于該模式實現(xiàn)起來并不太復雜,而且大多數(shù)公司都能夠通過逐層分離的功能集,來開發(fā)應用程序,因此它非常易于被開發(fā),當然也就成為了大多數(shù)業(yè)務應用的自然選擇。
  • 具有可維護性。
  • 易于分配單獨的“角色”。
  • 方便對不同層面進行單獨地更新與增強。

適合性:

  • 標準化的業(yè)務線應用程序,且在功能上不限于CRUD(增刪改查)操作。
  • 需要快速構建的新應用。
  • 團隊中有并不了解其他架構、或經(jīng)驗不足的開發(fā)人員。
  • 那些需要具有嚴格的可維護性和可測試性的應用。

4.基于事件(事件驅動)的模式

這是用于開發(fā)具有高度可擴展性系統(tǒng)的最常見分布式異步架構。該架構由那些可用于監(jiān)聽事件,并能夠異步處理事件的組件所組成。事件驅動類架構構建出一個能夠接收所有數(shù)據(jù)的中央單元。該單元可以被委托給那些具有處理特定類型能力的單獨模塊。

優(yōu)勢

  • 容易適應復雜且混亂的環(huán)境。
  • 可被輕松地擴展。
  • 當出現(xiàn)新的事件類型時,能夠方便地進行擴展。

適合性:

  • 那些具有異步數(shù)據(jù)流的異步系統(tǒng)。
  • 各種用戶界面。

5.給予空間的模式

基于空間的架構模式被專門設計為解決那些可擴展性和并發(fā)性的問題。對于那些具有不定因素和不可測并發(fā)用戶數(shù)的應用來說,它同樣也是一種非常實用的架構模式。該模式通過消除對中央數(shù)據(jù)庫的約束,以及使用可復制的內存中數(shù)據(jù)格(data grids),來實現(xiàn)良好的可擴展性。

此外,基于空間的架構可以通過在多個服務器之間進行拆分處理與存儲,以避免高負載下的功能性崩潰。

優(yōu)勢

  • 能夠快速地響應不斷變化的環(huán)境。
  • 盡管該架構通常無法實現(xiàn)解耦和分布式,但它是動態(tài)的。那些基于云端的復雜工具,能夠將應用程序輕松“推送”到服務器處,以簡化部署。
  • 可以通過內存中的數(shù)據(jù)訪問,以及該模式中內置的緩存機制,來達到高性能。
  • 由于較小地、甚至并不依賴于集中式數(shù)據(jù)庫,因此該模式具有非常好的可擴展性。

適合性

  • 具有大體量數(shù)據(jù)的場景,例如:點擊流(clickstreams)和用戶日志。
  • 低價值數(shù)據(jù)的偶爾丟失并不會造成嚴重后果的場景。
  • 社交網(wǎng)絡環(huán)境。

總的說來,上述介紹的五種架構模式各有自己的優(yōu)勢和適用環(huán)境。您可以在程序設計與項目中,按照實際需求選擇不同的軟件架構模式,并實現(xiàn)復用。

原標題:5 Major Software Architecture Patterns,作者: Ekaterina Novoseltseva

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

 

責任編輯:龐桂玉 來源: 51CTO
相關推薦

2024-10-21 16:34:15

2023-06-16 13:34:00

軟件架構模式

2022-07-27 20:37:45

主流企業(yè)架構

2021-07-02 06:54:45

軟件架構模式

2019-04-23 09:30:51

PythonWeb框架

2009-10-14 11:19:11

桌面虛擬化模式

2016-03-17 09:59:40

Apache流計算框架分布式流處理

2012-12-25 15:08:28

vSphere 5.1Xenserver 6Hyper-V 3.0

2020-06-28 10:15:39

架構模式軟件

2017-09-14 09:30:38

軟件架構模式

2023-09-11 11:18:44

軟件開發(fā)架構

2024-06-25 13:02:25

2011-09-07 09:21:01

設計模式

2019-06-04 10:40:07

2012-01-13 10:45:56

企業(yè)應用架構

2024-02-05 08:11:30

架構模式單體

2011-07-15 13:20:18

瀏覽器

2024-03-26 13:35:19

模型架構框架

2024-09-02 10:07:52

2015-05-04 14:07:54

點贊
收藏

51CTO技術棧公眾號