我已经为我的新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
干杯安东尼
答案 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)
我有类似的结构,但有一些例外:
- 支持名为Infrastructure(仅用于UI程序集的命名空间)
- IoC处于不同的项目(全球使用的基础架构功能项目)。 UI具有仅使用程序集名称的StructureMaps Registry(IoC按惯例初始化)。从CodeCampServer源获取的方法。记录,配置部分也在这里。
- Views / [ControllerName]具有部分子文件夹,可能更加分割 (这涉及到与ViewEngine混淆,因此它可以找到视图/部分视图。)
- Views / [ControllerName]具有LocalResources文件夹(带有部分子文件夹)
- 尚未在控制器下添加任何子文件夹(...)。我喜欢让它们干净而且非常愚蠢。
醇>
还有一些与模型相关的例外:
- 所有业务逻辑都存在于Domain assembly,Domain.Model命名空间中,并提供了一些技术方面的Infrastructure层帮助。
- 查看模型(我称之为ViewData)存在于ViewData文件夹下的UI程序集中,结构类似于Views。来自Kigg的挑选方法(除了我按照ViewViewData构建它们,有时甚至是部分视图)。
醇>
到目前为止效果还不错
请注意,构建ViewData (我甚至以相同的方式构建我的javascript,View == JS文件,其中包含名为[ViewName]的对象下的所有内容)每个视图可能不适用于更复杂的Web站点。
哦......和=&gt; folder ==命名空间对我来说。我想这是一个很好的做法。
答案 2 :(得分:1)
我写了几个(小)网站,只是坚持使用与NerdDinner相同的结构,它似乎工作正常。
我认为,对于较小的项目而言,这是一个很好的方法,只要你有关注点,不要将业务逻辑放在存储库等等。较小项目的诱惑是模糊线条,但MVC倾向当你那样做时惩罚你一点。 :)
较大的项目可能会看到您实施单独的业务类项目,甚至可能是数据转换项目等。
答案 3 :(得分:1)
我认为这有点过于复杂,但如果你有意义的话。重要的是要保持平衡。
我喜欢在解决方案中使用单独的项目,因为它允许重用数据访问和业务逻辑,以供其他客户端应用程序类型(如WPF或WinForms客户端)重用。