2009-07-29 90 views
5

我將很快設計一些Web應用程序。他們可能會在asp.net mvc中完成。mvc web應用程序應該是3層嗎?

在我現有的web應用程序中,在delphi中完成,數據訪問層被分離成一個完全獨立的應用程序,有時運行在不同的服務器上。對於代碼重用而言,這比結構化原因更重要。這不會成爲下一個應用程序的一個因素,因爲它會全新的。

在mvc應用程序中是否有單獨的數據訪問應用程序過度使用?我將通過使用MVC將業務類分離出來,並且我將使用ORM來執行數據庫持久性。

編輯:只是爲了澄清;我使用術語層來指代單獨的物理應用程序,不僅僅是邏輯分隔或層。

+2

如果你分離buisiness類和數據庫的持續性,你已經有至少3層。 GUI/Logic/DB - 這是3層,所以你不會得到n <3。如果您需要更多模塊化,請引入額外的層次 - 但這完全取決於您的應用程序。 – 2009-07-29 08:52:13

回答

6

術語「Tier以我的經驗通常指的是物理應用的分離,例如,客戶端層&服務器層。

MVC - 指3「圖層」與擔心分離圍繞3模型(數據),視圖(UI),控制器(應用程序邏輯)的關注。

現在,我已經作出關於術語的區別..

是具有在MVC應用程序獨立的數據訪問應用程序矯枉過正?

我想說沒有(同樣取決於你的應用程序的意思),它不是矯枉過正,因爲它可能在事實上導致更易於維護的系統。您的ORM將可能允許插入新的數據訪問選項,但如果您希望添加新的ORM,該怎麼辦?擁有清晰分離的數據訪問層(DAL)將爲您的應用程序的這方面提供更大的未來靈活性。另一方面,根據應用程序的規模和願景,創建一個完全獨立的數據訪問選項可能是矯枉過正的,但簡而言之,將DAL分離爲不同的組件是非常推薦的做法實現MVC模式的應用程序的一部分。

希望這會有所幫助,如果您需要更深入的評論。

0

非常棒的評論Tobias。

我說要添加足夠的圖層,以便它對您有意義並使其更易於維護。也要保持關注的分離。

2

嗯,我客串這取決於你是否在談論(身體屬性)或(邏輯/項目)一點點。

關於分層 - 你可以看看像s#arp architecture(code.google.com/p/sharp-architecture/)這樣的例子,他們是如何做到這一點的(他們採取了一種非常極端的分層方法)。

對於這裏更簡約的觀點爲例,看看Ayende的博客:ayende.com/Blog/

關於層 - 我覺得不必要添加額外的層次,並把寄託都通過電線將正好碰到你的表現,除非你出於容量原因需要這樣做。正確地獲取圖層,並且當你需要調整容量時,它們將它們分開放置(如果你已經很好地分離了你的關注點,不應該花費太多的重構)。

相關問題