gpt4 book ai didi

asp.net-mvc - 管理路由/Global.asax 可维护性

转载 作者:行者123 更新时间:2023-12-02 00:38:08 25 4
gpt4 key购买 nike

对于如何在 MVC 中最好地定义和组织路由,是否有任何最佳实践?

我工作的公司经营着一个非常广泛、复杂的电子商务网站,每天有大约 60 万独立访问者。

这就是问题所在:在我们的 Global.asax.cs 中,我们的 RegisterRoutes() 中有大约 75 个路由定义的巨大列表。 :

routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

除了在 Global.asax.cs 中拥有这个巨大的列表之外,是否有更好的方法来定义这些路由?

因为我们有一群开发人员,其中一半不称职,而且我不能回去重构这些路由,所以可能需要几分钟才能弄清楚哪个 Controller 负责提供 URL 的 View 。

我能做什么?

一位开发人员辛辛苦苦构建了一个原型(prototype),使我们能够在 Global.asax.cs 中执行此操作:

public static void RegisterRoutes(RouteCollection routes)
{
routes.Include(new RootController());
routes.Include(new AccountController());
routes.Include(new HelpController());
routes.Include(new SearchController());
// etc., for each controller
}

在这个原型(prototype)中,Include()是一个扩展方法,所有 Controller 都继承自 IRoutedController , 它提供了 Include()一个IEnumerable<Route> Route列表s 添加到 RouteCollection .

但是对于这个原型(prototype),我们遇到了一个新问题:而不是查看 route.MapRoute() 的列表调用以查找特定 URL 调用哪个 Controller ,我们现在必须猜测哪个 Controller 负责特定 URL 并检查其 IRoutedController路由列表,以查看 URL 是否实际调用了我们猜测的 Controller 。没那么难,但有时只需要检查我们的 75+ 名单 Route Global.asax.cs 中的 s。

这是更好的解决方案吗?

有什么好的解决办法吗?

我们应该继续向 Global.asax.cs 添加路由吗?我们应该给原型(prototype)开绿灯吗?还是我们应该做点别的? (假设您无法重构现有路由 URL 以使其更符合逻辑。)

最佳答案

对不起,你在说什么? :P

routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

这个单一的路由条目有效​​地允许您使用任何参数调用任何 Controller 的任何操作方法。


Is this a better solution?

可能不会。

Is there any good solution?

是的。但您需要分享更多路线才能确定。

Should we just keep adding routes to Global.asax.cs; should we give the prototype the green light; or should we do something else?

不,不,还有。您需要分享相当数量的路线才能更好地了解情况。

(Assume that you cannot refactor existing route URLs to make them more logical.)

但是你可以确保新的适合默认路由,这样问题就不会继续增长,即 {controller}/{action}

关于asp.net-mvc - 管理路由/Global.asax 可维护性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3732310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com