2010-10-17 94 views
4

從設計了模塊化企業應用程序的每個人,我都有興趣知道您如何看待模塊化以及您的參數究竟是什麼?用於Web應用程序的一般模塊化設計

  1. 是基於層的模塊化(如控制器/網絡模塊,服務模塊,域模塊)更好的方法?
  2. 還是基於特徵的模塊化更好?爲什麼?
  3. 如果基於特徵的模塊化,您如何防止/解決依賴於彼此服務的各種特徵模塊之間的循環依賴關係?

它更多的是一個基於經驗的設計問題,因此涉及基於該經驗的綜合意見。

回答

3

由於基於圖層的模塊化帶來的好處很少,因此您應該採用基於功能的方法。當然,這並不意味着你應該完全忽略(軟件)層。

如果您將模塊視爲可部署組件(例如Maven構件,JARs within EAR),其主要動機之一是將應用程序分解爲可爲特定客戶/部署打開和關閉的部分。在這種情況下,基於特徵的模塊化是顯而易見的方法。

即使您確定不需要這種部署,我仍然會建議使用基於功能的模塊化。特徵模塊之間的接口往往比層之間的接口小得多(因而更容易管理)。另外,在相鄰兩層工作的人通常都是相同的,所以強制模塊分離是很困難的,而且往往會阻礙隔離帶來的好處。

除非你正在考慮「大層」(UI,業務邏輯,數據庫),在這種情況下它是可行的。對於這種情況,我建議使用「矩陣模塊化」(即功能和層模塊化),但建議使用基於特徵的團隊/個別責任,併爲硬件部分提供一些專業角色。例如,一位GUI設計人員和幾位程序員分別工作在不同的功能模塊中,其中包括GUI。

至於問題3:嘗試分解這兩個模塊甚至更多。他們通常太粗糙。如果他們不是經過一些思考/討論後,你應該人爲地分裂他們,以避免循環。如果那感覺不對,尤其是。如果你以非常小的模塊結束,將它們合併成一個模塊。只是不要嘗試合併作爲第一步。