【发布时间】:2014-10-29 18:12:05
【问题描述】:
我最近在做使用ASP.NET MVC 5的项目。使用属性路由非常简单方便。我想知道在大型应用程序中比较属性路由与传统路由方法哪个更有效。
【问题讨论】:
标签: c# asp.net-mvc performance asp.net-mvc-routing attributerouting
我最近在做使用ASP.NET MVC 5的项目。使用属性路由非常简单方便。我想知道在大型应用程序中比较属性路由与传统路由方法哪个更有效。
【问题讨论】:
标签: c# asp.net-mvc performance asp.net-mvc-routing attributerouting
MVC 路由仅在启动时缓存一次。在启动时执行反射会有一点性能损失。启动后就没什么区别了。当我说微小时,对于大型网站来说,从 0.1 毫秒到 1 或 2 秒不等。
但此时不要预先优化。无论如何,MVC 都是基于反射的。
将路由保持在控制器操作旁边(用于维护)的好处远远超过它引入的微小性能开销。
【讨论】:
我会说,作为对这么多问题的答案,“这取决于。”
效率定义为您从流程中获得的有用输出量与所花费的总努力量之比。因此,按照这个定义,我会关注人的效率,因为一小时的程序员时间大概相当于一个月在 Amazon EC2 上的计算能力。
根据微软:
当路由定义与动作位于同一源文件中,而不是在外部配置类上声明时,它可以更容易地推断 URI 和动作之间的映射。
我会更进一步,说更容易弄清楚什么去哪里,什么做什么。这样做为我节省了无数时间;事实上,我对集中式映射策略感到非常沮丧,以至于我将所有服务都转换为使用基于属性的格式。
【讨论】: