ASP.NET MVC项目遵循模型,视图和控制器的命名和文件夹约定 . 对于其他代码(例如:动作过滤器,委托处理程序等),是否有最佳实践可以在项目的文件夹结构中找到它们?
找出答案的一个好方法是查看实际的最佳实践是什么,以查看开源项目 . 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回购 .
没有标准的方式 . 不同的从业者提出了各种方法,但都有一些优点和缺点 . 但是,根据适用的设计约束,这里有一些指示:
如果您希望Action Filters,Delegating Handlers等可以重用,那么将它们放在asp.net mvc webroot中的专用文件夹中就能完成这项工作 . 这样,所有这些过滤器都具有全局范围,可以根据需要使用 .
如果想要从过滤器等创建一个可插拔模块 . 可能值得将它们放在一个单独的DLL中 . 该库可以被认为是一个黑盒子,它将所有上下文信息作为函数输入,并可以根据需要重用 . 我喜欢Orchard CMS的可插拔架构http://www.orchardproject.net/
我曾经问过一个关于如何在asp.net mvc项目中组织模型的类似问题 . 不幸的是没有得到太多回应 . Models in asp.net mvc 3 areas
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回购 .
没有标准的方式 . 不同的从业者提出了各种方法,但都有一些优点和缺点 . 但是,根据适用的设计约束,这里有一些指示:
如果您希望Action Filters,Delegating Handlers等可以重用,那么将它们放在asp.net mvc webroot中的专用文件夹中就能完成这项工作 . 这样,所有这些过滤器都具有全局范围,可以根据需要使用 .
如果想要从过滤器等创建一个可插拔模块 . 可能值得将它们放在一个单独的DLL中 . 该库可以被认为是一个黑盒子,它将所有上下文信息作为函数输入,并可以根据需要重用 . 我喜欢Orchard CMS的可插拔架构http://www.orchardproject.net/
我曾经问过一个关于如何在asp.net mvc项目中组织模型的类似问题 . 不幸的是没有得到太多回应 . Models in asp.net mvc 3 areas