Nes*_*tor 35 asp.net-mvc conventions naming-conventions asp.net-mvc-3 asp.net-mvc-2
当我开始使用.NET Webforms时,我找不到要跟随的文件夹结构,因为VS提供了像"App_Code"这样的应用程序文件夹,大多数应用程序示例都在其中放置了"BLL","DAL"等等.
但是现在在MVC中,我检查的每个例子都使用不同的结构,这次没有标准,我没有在Google或SO上找到一个好的解决方案.
所以,也许我们可以分享我们如何组织我们的MVC项目,可以帮助其他人做出自己的想法.这是我使用的中小型项目的结构:
App_Data
Areas
Admin
Controllers
Models
Views
MyAccount
Controllers
Models
Views
Content
Images
Scripts
Styles
Controllers
HomeController.cs
Helpers
ExtensionMethods // I.e. based on HtmlHelper, use "helper" suffix
MenuHelper.cs // to be called as html.Menu()
Utilities.cs // Other generic (static) libraries, no suffix used
Models
ViewModels // for passing models to Views
RegisterViewModel.cs // use "ViewModel" suffix
Customer.cs // to extend models like adding Model Validation
Repositories
CustomerRepository.cs // use "Repository" suffix
Services
CustomerService.cs // use "Service" suffix, to move code away from controllers
Views
Home
Index.cshtml
Register.cshtml
Shared // Site Layouts (Master templates), also put partials here
SiteLayout.cshtml
Run Code Online (Sandbox Code Playgroud)
你的呢?
MJ *_*son 15
我发现它简化了部署,使网站项目只包含内容(没有编译代码).
就像是:
Web.Site项目
Content
Images
Css
Scripts
Views
web.config
Run Code Online (Sandbox Code Playgroud)
并将所有编译的代码移动到另一个项目:
网络项目
Controllers
Filters
Models
...
Run Code Online (Sandbox Code Playgroud)
然后,您可以将Web.Site项目中的所有内容视为需要部署,并且所有必需的程序集都将位于Web.Site\bin中.
无论您是进行简单的xcopy部署,还是使用WiX构建MSI软件包,这都会让生活变得更轻松.
我是第二个项目方法.吉米博加德也有一个很好的帖子(确保通过所有评论).
我个人发现,当我在应用程序的一部分上工作时,我使用相关的服务,控制器,存储库等等.当你将这些文件放在不同的文件夹中时,它会变得乏味来回寻找它们.经过一些游戏,我一直在遵循这种格式:
AppName.Web.UI
Scripts
Content
View
Run Code Online (Sandbox Code Playgroud)
AppName.UI.Core
Attributes
Filters
Formatters
Helpers
Models
Company
Interfaces
IController.cs
IRepository.cs
IService.cs
ViewModels
ViewModel1.cs
ViewModel2.cs
Controller.cs
Repository.cs
Service.cs
User
....
Plugins (mailchimp, Twitter OAuth, etc..)
Global.asax (define all the code here rather than in the UI project)
Run Code Online (Sandbox Code Playgroud)
测试项目
...
Run Code Online (Sandbox Code Playgroud)
我认为这取决于您的项目有多大,以至于您是否进一步分解并使用Interface和ViewModel子文件夹.它并不完美,但我发现它与我的思维方式相比更好.
还可以将您的服务和存储库放入第三个项目(AppName.Core),使AppName.Web.Core项目仅封装Web关联部件(Attributes,Controllers.ViewModels等).这又与项目的复杂性有关.
只要事情清楚,它就没那么重要了.我认为这只是在您的组织/团队中保持一致的问题.
| 归档时间: |
|
| 查看次数: |
26624 次 |
| 最近记录: |