ASP.net MVC项目结构

时间:2009-07-07 00:16:12

标签: asp.net asp.net-mvc solution

我已经为我的新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 个答案:

答案 0 :(得分:5)

MVC网站
app - 所有静态文件
- 普通
---- 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,razor,css等

核心库
基本上所有代码......数据访问,自定义属性,实用程序等。 由于许多原因,将核心代码分离到一个库是很方便的。 您的逻辑现在并不仅限于网站。如果我需要我可以建立 在WinForms中快速前端测试一些逻辑或我可以使用相同的 数据访问层中的函数,用于为数据库构建管理前端。

我认为这种结构对我来说是最简单和最灵活的。

<强>更新
我更新了静态内容文件结构,使其更加灵活和现代化。 在使用AngularJS时,我想出了这个结构。我最终转向了 RactiveJS。转移到RactiveJS之后,相同的结构非常有效。

更新8-21-15  我最近一直在从事大型项目,并将Core库分离到自己的Visual Studio项目。这使得在使用SVN外部时更加灵活。我可以在不同的项目中使用相同的库,只需要进行SVN更新即可获得更改。同时在自己的项目中也爆发了MVC网站。

答案 1 :(得分:4)

我有类似的结构,但有一些例外:

  
      
  1. 支持名为Infrastructure(仅用于UI程序集的命名空间)
  2.   
  3. IoC处于不同的项目(全球使用的基础架构功能项目)。 UI具有仅使用程序集名称的StructureMaps Registry(IoC按惯例初始化)。从CodeCampServer源获取的方法。记录,配置部分也在这里。
  4.   
  5. Views / [ControllerName]具有部分子文件夹,可能更加分割   (这涉及到与ViewEngine混淆,因此它可以找到视图/部分视图。)
  6.   
  7. Views / [ControllerName]具有LocalResources文件夹(带有部分子文件夹)
  8.   
  9. 尚未在控制器下添加任何子文件夹(...)。我喜欢让它们干净而且非常愚蠢。
  10.   

还有一些与模型相关的例外:

  
      
  1. 所有业务逻辑都存在于Domain assembly,Domain.Model命名空间中,并提供了一些技术方面的Infrastructure层帮助。
  2.   
  3. 查看模型(我称之为ViewData)存在于ViewData文件夹下的UI程序集中,结构类似于Views。来自Kigg的挑选方法(除了我按照ViewViewData构建它们,有时甚至是部分视图)。
  4.   

到目前为止效果还不错

请注意,构建ViewData (我甚至以相同的方式构建我的javascript,View == JS文件,其中包含名为[ViewName]的对象下的所有内容)每个视图可能不适用于更复杂的Web站点。

哦......和=&gt; folder ==命名空间对我来说。我想这是一个很好的做法。

答案 2 :(得分:1)

我写了几个(小)网站,只是坚持使用与NerdDinner相同的结构,它似乎工作正常。

我认为,对于较小的项目而言,这是一个很好的方法,只要你有关注点,不要将业务逻辑放在存储库等等。较小项目的诱惑是模糊线条,但MVC倾向当你那样做时惩罚你一点。 :)

较大的项目可能会看到您实施单独的业务类项目,甚至可能是数据转换项目等。

答案 3 :(得分:1)

我认为这有点过于复杂,但如果你有意义的话。重要的是要保持平衡。

我喜欢在解决方案中使用单独的项目,因为它允许重用数据访问和业务逻辑,以供其他客户端应用程序类型(如WPF或WinForms客户端)重用。