譯 Orchard架構設計模式

2022-01-30 02:55:47 字數 1218 閱讀 8225

【問】:

我目前正在研究軟體架構、分層,並為此看了許多開源的.net專案,其中包括orchard cms。 我認為orchard是乙個很好的設計範例。

據我所知,良好的架構應該是ui,service,repositories和entities應該被分離在不同的程式集中。但是在orchard裡面,我看見service,repository,entity相關的類和介面都在相同的資料夾和命名控制項下。

請問這是乙個反模式麼?或者說這樣設計架構對麼?

【答】:

首先,程式集並不是分離架構的必要條件。

對於你的問題,回答是否定的。判斷是否正確真正重要的是他們確實已經被分離了,而不是他們是否應該在不同的程式集中。而且,與大部分系統不一樣,開發乙個可擴充套件的cms的所要考慮的因素是不同的。在乙個可擴充套件的cms系統中,正確的分離方式應該是解耦那些將來隨時可能新增或者移除的features。然而在乙個平常的分層系統中,則要求通過分層解耦來降低他們互相影響的風險。真正應該拿來比較的應該是分層系統和orchard中的乙個模組,而不是將他與整個orchard進行比較。當然了,正如orchard所實現的那樣,好的實踐都在模組裡面使用了。

按程式集劃分是基於分離考慮,這本身已經偏向於技術性的東西而不是架構了。你可以把程式集看成乙個包含了**的容器,這個容器是為了**復用和動態鏈結。但不是實現分層的方法。這也是為什麼他們使用模組來進行**復用的原因。

另外我們從現實層面考慮:好的架構有乙個主要的目的,就是使得程式可以更方面和廉價的進行維護(同時並不是像設計宇航系統那樣設計出只有他們自己看得懂的架構)。其次乙個目的是編寫出可擴充套件和效能良好的應用程式(儘管這個目的更加難以實現,因為他很容易導致過早優化,這是許多軟體的災難源泉)。

對於第乙個目的,概念分離是很重要的,但是具體通過什麼方式進行分離卻不是那麼重要。

而第二個目的則恰好與使用程式集進行分層的理念相違背:在你新增額外的模組之前,orchard已經有了許多的程式集。這些程式集從來都不是無限制使用的。在orchard中,他們需要被動態的編譯,載入,jit翻譯,並通過記憶體來執行等等。從效能方面來看,你通常應該降低程式集的數量來達到效能優化的目的。

對於現今的orchard來說,如果你要將orchard劃分到不同的程式集中,然後將每個模組依次劃分到這些程式集。那麼你將需要分層數*模組數的程式集,成百個的程式集到時候會需要被載入,顯然不好。事實上,我們甚至考慮過將所有的程式集動態的編譯到乙個程式集中。

設計模式與架構設計

論設計模式在架構設計中的運用 設計模式 在我們現實的軟體專案開發中,常常會遇到一次又一次的關於軟體設計上的問題,而設計模式就針對那些問題提供了一系列的解決方案。設計模式是一種較高層次程式結構的設計策略 是一種技巧,它著重於為軟體系統 子系統內部的各物件間提供乙個良好的通訊平台,協調各者之間的關係,使...

iOS設計模式與架構設計

ios開發中常用的設計模式有以下幾種 1 mvc模式 2 委託 模式 3 觀察者模式 架構設計 好的架構設計可以提高開發效率 減少 冗餘 提高元件模組的可復用性等優點。ios開發中通常採用是是分層架構設計,其目的是降低耦合,同時提高應用的可復用性 可擴充套件性。1 表示層 ios中的表示層是由uik...

架構設計(3) 架構模式

架構設計學習思維導圖 架構設計系列主要的adm 架構開發方法 主要基於togaf9或者togaf9.1來論述。這是個人學習實踐和總結筆記,專注並不斷積累和更新,努力精進自己。個人拙見,僅供參考。1 架構概述 了解架構基礎知識 架構定義 分類 級別 應用架構演進 架構是否合理 架構誤區等。談談架構 2...