asp.net-mvc - 如何在大型 asp.net mvc 项目中管理路由

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

在大型(100 多个 Controller 和不断增长的)MVC 项目中管理 url 路由的策略是什么?区域很有用,但它们的用处似乎有限,因为它们不能嵌套。随着项目的发展,我注意到了几个大的痛点:

  • SEO 友好的路线(每条 seo 路线都需要一个特殊的定义)
  • 旧路由的重定向(需要 301 个旧 URL 到更新的等效项)
  • 测试路线(有没有比手动测试更好、比 Selenium 更轻的东西?)

  • 此外,性能不会随着路由数量的增加而降低吗?定义路由的方式表明性能最低 O(n*k) ,其中 n是定义的路由数量和 k是网址的长度。

    最佳答案

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

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

  • 这些问题的原因是我看到了几个潜在的解决方案:
  • 假设您在 IIS 7 或更高版本上运行,那么您可以将您的功能分解为每个区域的多个 MVC 项目。使用 IIS 7 及更高版本(对于部署而言),这变得更加容易。
  • 假设呈现数据的模式一致,通用 Controller 或路由可以使这更容易,允许您折叠 Controller 。
  • 基本 Controller 将允许共享功能,同时呈现您对每个单独 Controller 所需的特化。

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

    关于asp.net-mvc - 如何在大型 asp.net mvc 项目中管理路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11845175/

    相关文章:

    asp.net-mvc - "You do not have permission to view this directory or page."仅在 Azure 上切换到生产环境后才出现错误

    asp.net-mvc - 我可以使用同一解决方案中单元测试项目中的 Selenium 来测试 ASP.NET MVC Web 项目吗?

    asp.net-mvc - 当我使用 mvc 在 https 中发布表单时,密码可见

    c# - MVC - 给定路由名称,我可以获得默认操作名称和 Controller 名称吗?

    c# - 动态修改 RouteValueDictionary

    asp.net-mvc - 在运行时使用 Unity 属性注入(inject)注入(inject) IPrincipal

    asp.net-mvc - 使用 HTML Action 链接指向一个 div

    asp.net - 带可选启动参数的asp.net mvc路由

    c# - ASP.NET Core 2.0 webApp 在发布到 iis 后显示 'view Index was not found...'

    javascript - 如何使用 ui.router 和 ASP.NET MVC 在 AngularJS 中处理页面刷新