您好,登錄后才能下訂單哦!
本文探討如下幾個問題:
如果你搜索「架構(gòu)模式和架構(gòu)風格的區(qū)別」,你會發(fā)現(xiàn)答案千差萬別:
我個人的觀點是:架構(gòu)模式是特定問題域下,架構(gòu)風格的具體應用!
我們來一個個的說!
在說架構(gòu)模式之前,我們先來看看我們常掛在嘴邊的設計模式是怎么定義的!
GOF在《Design Patterns》這本書的「What is a Design Pattern?」小節(jié),對設計模式下了一個明確的定義:
The design patterns in this book are descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context.
設計模式描述了一組類和對象的關系,用以解決特定上下文內(nèi)的某個常見的設計問題!
那我們可以這么定義架構(gòu)模式:架構(gòu)模式描述了一組組件之間的關系,用以解決特定上下文內(nèi)的某個常見的架構(gòu)問題!
Wiki上也給架構(gòu)模式做了類似的定義:
An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context
架構(gòu)模式是一個通用的、可重用的解決方案,用以解決特定上下文內(nèi)的某個常見的架構(gòu)問題!
Roy Thomas Fielding博士,在他的REST論文中,對架構(gòu)風格做出了定義:
An architectural style is a coordinated set of architectural constraints that restricts the roles/features of architectural elements and the allowed relationships among those elements within any architecture that conforms to that style.
一種架構(gòu)風格是一組協(xié)作的架構(gòu)約束,這些約束限制了架構(gòu)元素的角色和功能,以及在任何一個遵循該風格的架構(gòu)中允許存在的元素之間的關系。
Martin Flower在微服務文章中的說明,也間接支持了此定義。文中首先明確「微服務」是一種架構(gòu)風格,然后給出了微服務所具有的特征(就是約束),具有這些約束的系統(tǒng)就可以說是使用了微服務架構(gòu)風格!
微軟的Azure文檔也給出了類似的定義:架構(gòu)風格即約束!
上面我們分別給「架構(gòu)模式」和「架構(gòu)風格」下了定義!那么「架構(gòu)模式」和「架構(gòu)風格」到底有什么區(qū)別呢?
我們來看架構(gòu)模式的定義,可以抽出幾個關鍵詞:
我們再看架構(gòu)風格的定義,它僅僅就是約束!約束了組件之間的關系!
所以「架構(gòu)模式」和「架構(gòu)風格」的區(qū)別就在這里:
如果你仔細看看Wiki中列出的架構(gòu)風格和架構(gòu)模式,你就能看出點端倪了!
你會發(fā)現(xiàn),架構(gòu)風格中有「Multilayered」這個架構(gòu)風格,架構(gòu)模式里也有「Multilayered」架構(gòu)模式!好像分層架構(gòu)既是架構(gòu)風格,也是架構(gòu)模式!實際上架構(gòu)模式中的「分層架構(gòu)」是架構(gòu)風格中的「分層架構(gòu)」的實際應用。
更具有說服力的是CS架構(gòu)風格,可以看到此架構(gòu)風格后面有個闡述「2-tier, 3-tier, n-tier exhibit this style」,意思是兩層架構(gòu)、三層架構(gòu)、n層架構(gòu)都是CS架構(gòu)風格的一種表現(xiàn)形式。而可以看到,三層架構(gòu)是一個架構(gòu)模式!
你有沒有一個疑問?兩層架構(gòu)、三層架構(gòu)、N層架構(gòu)為什么不是分層架構(gòu)風格的表現(xiàn)形式?而是CS架構(gòu)風格的一種表現(xiàn)形式?
這個問題在后面的CS架構(gòu)和分層架構(gòu)中會具體闡述。
再具體一點,我們看看CS架構(gòu)的約束:
可以看到,這里只是約束了系統(tǒng)分為Client和Server,以及Server和Client之間的行為。
再來看三層架構(gòu)模式,三層架構(gòu)一般分為:
可以看到,三層架構(gòu)模式比CS架構(gòu)風格更具體,描述了每一層的作用。
當系統(tǒng)有如下需求時,就可以考慮三層架構(gòu):
用Renan Johannsen de Paula Venilton FalvoJr在《Architectural Patterns and Styles》中對架構(gòu)模式和架構(gòu)風格的區(qū)別來總結(jié)一下:
實際工作中,我們一般會說「架構(gòu)」,而沒有具體到是「架構(gòu)風格」還是「架構(gòu)模式」。這么做其實有幾點好處:
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。