ASP.NET MVC 和组件架构

Posted

技术标签:

【中文标题】ASP.NET MVC 和组件架构【英文标题】:ASP.NET MVC & Component Architecture 【发布时间】:2012-11-06 19:21:30 【问题描述】:

我想问的问题一直是asked before,但我还想知道2010年以来的问题:

    如果服务包或 MVC4 改进了故事(尤其是视图)? 是否有一种技巧可以让“以通常方式”从单独的程序集中访问“添加控制器”向导? 是否有一种技巧可以让“以通常方式”从单独程序集中的控制器操作中访问“添加视图”向导?

咆哮 这个咆哮不是我问题的一部分,但我觉得它代表了房间里的白象。

在我链接的上述问题中发现的一个回复表明,单独的 MVC 程序集与 MVC“关注点分离”无关。我觉得这个答案有点像说“未来的 C# 版本将不支持程序集之间的交互,因为这种交互与面向对象的关注点分离无关。”

这两种说法在技术上可能都是正确的,但两种说法都忽略了关注点分离适用于不断增加的范围级别。换句话说,它不仅适用于对象或 MVC 级别,还适用于组件架构级别。

换一种说法,仅仅因为 ASP.NET MVC 在对象(或区域)级别支持“关注点分离”,并不意味着故事已经结束。我希望看到微软通过添加“ASP.NET MVC 组件”模板来简化故事,它允许控制器和视图(都带有工作向导)很容易成为单独程序集的一部分。

也许有人已经做了这样的事情?

【问题讨论】:

【参考方案1】:

旁注:包括咆哮在内的任何问题都会被否决,因为它不是很客观。对未来的友好建议:保持问题的客观性。

是的,确实有一些技巧可以让工具在其他程序集中工作。我这里已经详细描述过了:http://blog.gauffin.org/2012/05/griffin-mvccontrib-the-plugin-system/

基本上你需要做到以下几点:

    编辑类库的.csproj文件,添加以下内容:<ProjectTypeGuids>E53F8FEA-EAE0-44A6-8774-FFD645390401;fae04ec0-301f-11d3-bf4b-00c04f79efbc 创建一个可以从其他程序集读取视图的VirtualPathProvider 指示 ASP.NET 构建管理器在查找控制器时包含您的类库。

.. 或者直接使用我的开源项目 Griffin.MvcContrib.

【讨论】:

以上是关于ASP.NET MVC 和组件架构的主要内容,如果未能解决你的问题,请参考以下文章

asp.net core 中的 MVC 架构模式

ASP.NET MVC 大型项目架构 [关闭]

MVC(ASP.NET MVC)带3层架构如何协同工作?

Orchard 发布1.0版本和ASP.NET MVC 3 RTM

ASP.NET中MVC的理解

asp.net三层架构与asp.net MVC各自的区别,各自应该应用在啥场合,在啥情况下用三层,啥情况下用MVC