如何在大型ASP.NET MVC项目中管理路由?

4
在一个大的MVC项目中(100个以上的控制器),有哪些管理url路由的策略?区域已经很有帮助了,但是它们的使用范围似乎有限,因为它们不能嵌套。随着项目的增长,我注意到了一些痛点:
  1. SEO友好的路由(每个seo路由都需要特殊定义)
  2. 传统路由的重定向(需要301旧url到更新后的等价物)
  3. 路由测试(是否有比手动测试更好、比selenium更轻的东西?)
此外,当路由数目增加时,性能会降低吗?路由定义方式表明性能至少为O(n*k),其中n是定义路由的数量,k是url的长度。

你能澄清一下为什么你认为在你的情况下“Areas有帮助,但它们的实用性似乎有限”吗? - mbx-mbx
我问这个问题的原因是我们在解决方案中使用了可移植区域(使用mvccontrib http://mvccontrib.codeplex.com/documentation),这对我们非常有效。 - mbx-mbx
1个回答

2
考虑以下几个问题,这可能会让你更容易解决问题:
  • 控制器之间是否存在共享功能?
  • 是否有一种方式可以创建一个通用模式的控制器,并使用某些由控制器引发的事件来提供通用功能(例如以一致的模式从数据库中提取数据)?
  • 每个控制器之间有什么根本区别?
这些问题的原因是我看到了几个潜在的解决方案:
  • 假设您正在运行IIS 7或更高版本,则可以将功能分成多个MVC项目,每个项目对应一个区域。这在IIS 7及更高版本中变得更加容易(对于部署而言)。
  • 假设呈现数据的模式是一致的,则通用控制器或路由可以使此过程更加容易,从而使您可以折叠控制器。
  • 基础控制器将允许共享功能,同时呈现每个单独控制器所需的专业知识。
总的来说,我建议尝试将代码库拆分为多个MVC项目,根据目的进行划分,以帮助确立那种随着项目不断增长而逐渐消失的理智感。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接