ASP.NET MVC 项目遵循模型、视图和控制器的命名和文件夹约定。对于其他代码(例如:Action Filters、Delegating Handlers 等),是否有关于在项目文件夹结构中的何处定位这些代码的最佳实践?
2 回答
找出答案的一个好方法是查看实际的最佳实践是查看开源项目。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 项目中组织模型。可惜没有得到太多回应。 asp.net mvc 3 领域中的模型