如何在MVC中最好地定義和組織路由是否有最佳做法?管理路由/ Global.asax可維護性
我工作的公司運行一個非常廣泛,複雜的電子商務網站,每天約有600,000個獨立訪客。
這裏的問題:在我們的Global.asax.cs中,我們已經有了在大約75路由定義這個巨大的名單我們RegisterRoutes()
:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
有沒有更好的方式來定義比其他航線在Global.asax.cs中有這個巨大的列表?
因爲我們有一羣開發人員,其中一半是無能,我不能回去重構這些路線,可能需要花費幾分鐘的時間才能找出控制器負責提供URL的視圖。
我該怎麼辦?
一位開發商忙了建立一個原型,使我們能夠做到這一點在我們的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
}
在這個原型,Include()
是一個擴展方法和所有的控制器從IRoutedController
,它提供了繼承Include()
an IEnumerable<Route>
Route
s的列表添加到RouteCollection
。
但有了這個原型,我們有一個新的問題:不是翻翻的route.MapRoute()
通話清單,發現哪個控制器特定的URL所調用,我們現在必須猜測哪個控制器負責特定的URL,並檢查其IRoutedController
查看路由列表是否實際調用了我們猜測的Controller。不那麼難,但有時只要在Global.asax.cs中查看我們的75+ Route
s列表即可。
這是一個更好的解決方案嗎?
是否有任何好的解決方案?
我們應該不斷地向Global.asax.cs添加路由;我們應該讓原型成爲綠燈;還是我們應該做點別的? (假設您不能重構現有的路由URL以使它們更加合理)。
你說「他們中的一半是遲緩的。」那另一半呢? – Larsenal 2010-09-17 02:51:06