【问题标题】:How can I manage routing in large asp.net mvc projects如何在大型 asp.net mvc 项目中管理路由
【发布时间】:2012-08-07 22:38:17
【问题描述】:

在大型(100 多个控制器并且还在不断增长)MVC 项目中管理 url 路由有哪些策略?区域很有帮助,但它们的用处似乎有限,因为它们不能嵌套。随着项目的发展,我注意到了几个大痛点:

  1. SEO 友好的路线(每条 seo 路线都需要特殊定义)
  2. 旧路由重定向(需要 301 个旧 url 到更新后的等价物)
  3. 测试路线(有什么比手动测试更好、比硒更轻的方法吗?)

另外,随着路由数量的增加,性能不会下降吗?定义路由的方式表明性能至少为O(n*k),其中n 是已定义路由的数量,k 是url 的长度。

【问题讨论】:

  • 您能否解释一下为什么您认为在您的情况下,“区域很有帮助,但它们的用处似乎有限”?
  • 我问的原因是我们在我们的解决方案中使用了便携式区域(使用 mvccontrib mvccontrib.codeplex.com/documentation),它对我们很有效。

标签: asp.net-mvc asp.net-mvc-routing


【解决方案1】:

需要考虑的几个问题可能会让您更轻松:

  • 控制器之间是否存在共享功能?
  • 有没有办法为您的控制器创建通用模式并使用控制器引发的一些事件来提供通用功能(即以一致的模式从数据库中提取数据)?
  • 每个控制器之间有什么根本不同?

这些问题的原因是我看到了几个潜在的解决方案:

  • 假设您在 IIS 7 或更高版本上运行,那么您可以将您的功能分解为每个区域的多个 MVC 项目。使用 IIS 7 及更高版本(对于部署而言),这变得更加容易。
  • 假设呈现数据的模式一致,通用控制器或路由可以使这更容易,允许您折叠控制器。
  • 基本控制器将允许共享功能,同时为每个单独的控制器提供您需要的专业化。

总而言之,我建议尝试根据目的将您的代码库分解为多个 MVC 项目,以帮助建立这种理智感,这种理智感似乎随着您的项目的不断发展而逐渐消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-27
    • 2011-01-06
    • 2010-11-26
    • 2018-02-13
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 2010-10-07
    相关资源
    最近更新 更多