【发布时间】:2020-03-04 23:08:17
【问题描述】:
我一直想知道在请求与基于配置的路由的操作匹配后,如何在 Asp .Net Core 中调用控制器操作。
它们是通过反射调用的吗?如果以这种方式调用它们,将会对性能产生相当大的影响。
或者是以某种方式动态编译路由和相应的控制器,以便直接调用来自控制器的操作。
【问题讨论】:
-
为什么你认为调用预生成的反射方法调用实例与 asp.net 的所有其他开销相比具有严重的性能开销?
-
那里没有什么可担心的。在这种情况下,所有反射调用都会执行一次,然后会缓存结果。 ASP.NET Core 目前在 TechEmpower Web Framework plain text benchmark 中排名第 10 位,仅落后于前 9 名,后者主要提供更窄的功能集。
-
这可能是一项艰巨的任务,但如果您对框架的内部运作感到好奇,您可以随时查看:github.com/dotnet/aspnetcore
-
更具体地说,查看
dotnet/aspnetcore存储库中的ControllerActionInvoker 和ControllerActionInvokerCacheEntry 类。 -
为什么不添加该评论作为答案。它完美地回答了我的问题。
标签: c# asp.net-core