【问题标题】:How are controller actions invoked Asp .Net Core?Asp .Net Core 是如何调用控制器动作的?
【发布时间】: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 存储库中的ControllerActionInvokerControllerActionInvokerCacheEntry 类。
  • 为什么不添加该评论作为答案。它完美地回答了我的问题。

标签: c# asp.net-core


【解决方案1】:

由于 ASP.NET Core 是开源的,您可以在GitHub浏览源代码。

更具体地说,请查看 dotnet/aspnetcore 存储库中的 ControllerActionInvokerControllerActionInvokerCacheEntry 类。

【讨论】:

    猜你喜欢
    • 2022-07-27
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2018-01-29
    • 2018-01-18
    • 2022-08-17
    相关资源
    最近更新 更多