【发布时间】:2012-04-29 01:46:23
【问题描述】:
ASP.NET MVC 项目遵循模型、视图和控制器的命名和文件夹约定。对于其他代码(例如:Action Filters、Delegating Handlers 等),是否有关于在项目的文件夹结构中找到这些代码的最佳实践?
【问题讨论】:
标签: asp.net-mvc directory
ASP.NET MVC 项目遵循模型、视图和控制器的命名和文件夹约定。对于其他代码(例如:Action Filters、Delegating Handlers 等),是否有关于在项目的文件夹结构中找到这些代码的最佳实践?
【问题讨论】:
标签: asp.net-mvc directory
找出答案的一个好方法是查看实际的最佳实践是查看开源项目。 IIRC NuGet Gallery 是由 Asp.Net MVC 人员编写的,因此它可以作为他们视为最佳实践的一个很好的例子,同时仍然是一个实际的产品:
https://github.com/NuGet/NuGetGallery
看起来他们将他们的 FilterAttributes、HtmlHelpers 等添加到项目的根目录中:https://github.com/NuGet/NuGetGallery/blob/master/Website/RequireRemoteHttpsAttribute.cs
另外,Phil Haack 和 David Ebbo 曾在 Asp.Net MVC 团队工作,您可以查看他们的 GitHub 存储库,了解他们喜欢做什么。
【讨论】:
没有这样的标准方法。不同的从业者提出了不同的方法,但都各有利弊。但是,根据适用的设计限制,这里有一些提示:
可重用性
如果您希望您的操作过滤器、委托处理程序等可重用,那么将它们放在 asp.net mvc webroot 中的专用文件夹中就可以了。这样,所有此类过滤器都将具有全局范围,并且可以根据需要使用。
可插拔性
如果想从过滤器等中创建一个可插入模块。可能值得将它们完全放在一个单独的 DLL 中。该库可以被认为是一个黑匣子,它将所有上下文信息作为函数输入,并且可以根据需要重用。 我喜欢 Orchard CMS 的可插拔架构http://www.orchardproject.net/
我曾经问过一个类似的问题,关于如何在 asp.net mvc 项目中组织模型。可惜没有得到太多回应。 Models in asp.net mvc 3 areas
【讨论】: