2009-07-07 162 views
10

我已經創建瞭如下的項目結構爲我的新asp.net mvc的項目中的任何我後一些反饋,其他人是如何構建自己的項目,如果我想提高礦井...ASP.net MVC項目結構

這是我到目前爲止有:

+Assets 
-+Images 
-+Scripts 
-+Stylesheets 
-+...    'More things like the above here 
+Controllers 
-+Support 
--+Actions   'Any custom action classes 
--+Controllers  'Base controller classes 
+Models 
-+Domain   'Contains any class that specialise view specific domain logic 
--+UrlProcessing 'Encoding/decoding business entities as URL parts 
--+...    'More things like the above here 
-+Views   'Contains view models 
--+Support 
---+Views   'Base classes for any view models 
+Support 
-+Application  'Global application interface classes (i.e. class that wraps the function of the global asax) 
-+Configuration 'Typed config classes 
-+Helpers   'Where you put additional html helper classes, etc 
-+Services 
--+Bootstrap  'Tasks that run on mvc start-up that are specific to the MVC project 
--+Inversion  'Specific IoC registration registrations for this project 
--+...    'More things like the above here 
+Views 
-+Home 
-+Shared 
-+...    'More things like the above here 

乾杯安東尼

+4

夥計..下次嘗試一個屏幕截圖:( – 2009-07-07 00:34:00

+1

亞應該做的,託管的形象是一個問題,雖然... – 2009-07-08 01:17:51

回答

4

我得到了你們的類似的結構也有一些例外:

  1. 支持命名基礎結構(僅用於UI組件使用的名稱空間)
  2. IoC位於不同的項目中(項目用於全局使用的基礎結構功能)。 UI只有程序集名稱才具有StructureMaps Registry(IoC按慣例初始化)。來源於CodeCampServer源代碼。日誌記錄,配置部分也在這裏。
  3. Views/[ControllerName]具有部分子文件夾,它可能更加分割
    (這涉及與ViewEngine雜耍,以便它可以查找視圖/部分視圖)。
  4. Views/[ControllerName]具有LocalResources文件夾(具有部分子文件夾)
  5. 未在控制器(...)下添加任何子文件夾。我喜歡保持他們的乾淨和相當愚蠢。

而且一些例外,與型號有關:

  1. 所有的業務邏輯住在域裝配,Domain.Model命名空間與技術方面的基礎設施層的一些幫助。
  2. 查看模型(我叫他們ViewData)住在ViewData文件夾下的UI程序集中,結構類似於Views。來自Kigg的挑選方法(除了我像SearchViewData那樣構造它們,有時甚至是每個局部視圖)。

它的工作不夠好,到目前爲止

需要注意的是結構化的ViewData (我甚至構建我的javascript同樣的方式,查看== JS文件,其中包含下命名爲[VIEWNAME]對象的一切)對於更復雜的網站,每個視圖可能不可接受。

Oh ... and => folder == namespace for me。我想這是一個很好的做法。

1

我已經寫了一對夫婦的(小)部位,只是堅持與NerdDinner範例了,它似乎做工精細的結構相同。

我認爲對於較小的項目來說這是一個很好的方法,只要你有你的問題分離,不要將業務邏輯放入存儲庫等等。對較小項目的誘惑是模糊線條,但MVC當你這樣做的時候往往會懲罰你一點。 :)

較大型的項目可能會看到你實現一個單獨的商業類項目,甚至數據轉換項目等

1

我認爲這有點過於複雜,但是如果它對您有意義,那就去吧。重要的是保持平衡。

我喜歡在解決方案中使用單獨的項目,因爲它允許重複使用數據訪問和業務邏輯,以供其他客戶端應用程序類型(如WPF或WinForms客戶端)重用。

5

MVC網站
應用程序 - 所有靜態文件
- 普通
---- CSS
------款式,最網頁-use.css
- --imgs
------圖像 - 最網頁-use.png
---- JS
------您定製-lib.js
--files
- ---release_notes.md
---- release_notes.html
--pages
----登入
------ signin.css
------ logo.png
----- -signin.js
----儀表盤
------ dashboard.js
--vendors
---- jQuery的
------ jquery.1.11.1.js
-_references.js

控制器 - 只有薄控制器,只是代碼調用你的核心庫函數
模式 - 只用來顯示視圖
查看車型 - 只有客戶端代碼,如HTML,剃鬚刀,CSS等

核心庫
基本上所有代碼...數據訪問,自定義屬性,實用程序等 將核心代碼分離爲只是一個庫是很方便的,原因很多。 你的邏輯現在並不僅限於一個網站。如果需要,我可以在WinForms中快速創建 以測試某些邏輯,或者我可以在數據訪問層使用相同的 函數來構建數據庫的管理前端。

我覺得這個結構對我來說是最簡單和最靈活的。

更新
心中已經更新了靜態內容的文件結構更加靈活和現代化。 我在使用AngularJS時想到了這個結構。我最終搬到了 RactiveJS。在轉向RactiveJS之後,相同的結構運行得非常好。

更新8-21-15 我最近一直在研究更大的項目,並將Core庫分離到它自己的Visual Studio項目中。這使得它在使用SVN Externals時很靈活。我可以在不同的項目中使用相同的庫,只需要執行SVN更新即可獲取更改。也在自己的項目中爆發了MVC網站。