数以百计的ASP.NET MVC路由

时间:2011-01-20 22:06:56

标签: asp.net asp.net-mvc performance routes

所以我有一个我在工作的应用程序,我们有几百个客户端正在运行。我们正在为一个品牌打开新的ASP.NET MVC 3应用程序,我正在研究这个应用程序的路线。

我最近发布了一个我为动态路由提出的解决方案,它在Sql Express DB中的一些条目上工作正常。 Essentiall它为我在此DB中的每个条目创建路由。

所以,我的问题是......如果我要在企业应用程序上实现这一点,那么在我的应用程序中添加数百条(如果不是数千条)路由会产生任何负面影响吗?

4 个答案:

答案 0 :(得分:3)

关于动态路线表,您似乎 recommendation follow already

  

使用命名路由。命名路由是   路由的可选功能。名字   仅适用于URL生成 - 他们   永远不会用于匹配传入   网址。当您指定名称时   生成一个我们只会尝试的URL   匹配那条路线。 这意味着   即使您指定的指定路线   是路线表中的第100条路线   我们会直接跳到它并尝试   匹配。

除了客户/路线的数量,您还应该考虑每天的估计请求数量(您应该担心更多,恕我直言),并考虑您的Web服务器的可扩展性(工作线程,硬件, ......)因此。

答案 1 :(得分:2)

如果您的客户在您的应用程序中使用自己的域,请在路由中使用自定义IRouteConstraint来检查请求域并仅过滤此路由。 Tt的解决方案还可以保护路由免受冲突。

因此,最好的方法是两个任务 - 路由请求和构建链接 - 使用缓存路由。

  1. 您可以继承和扩展默认的MVC Route类
  2. 加速链接构建:覆盖从RouteData值计算哈希的GetVirtualPath,并使用它来向缓存中输入和获取URL值。
  3. 加速路由:覆盖GetRouteData以使用带有url哈希的兑换RouteDate。
  4. 此解决方案可能需要更多内存,但在大多数情况下,您在页面上设置了有限的网址。

答案 2 :(得分:1)

你的问题有点不清楚。 “动态路由”是指您根据请求解析路由的DB层,还是查询数据库以创建路由表的源文件?

在第一种情况下,表现应该是不变的。 (根据您拥有的用户数量检查数据库的开销不会改变。)因此,您应该立即看到性能影响。

在第二种情况下,如果要检查的项目很多,我希望路由代码会更慢 - 但是很容易测试。

答案 3 :(得分:0)

一旦你开始超过一定的路线阈值,就会出现性能上升。我没有任何硬性基准,但我现在重新设计了一些表现不佳的网站。

您可以越多地使用相同的路线为许多不同的网址添加参数越好。

从观察开始,当你开始接近1k路线时,它就会开始真正触底。