gpt4 book ai didi

c# - 自定义依赖解析器会减慢我的 MVC 应用程序吗?

转载 作者:行者123 更新时间:2023-11-30 14:30:31 25 4
gpt4 key购买 nike

对 asp.net MVC 4 使用自定义依赖项解析器不会显着降低应用程序的速度吗?考虑到每个依赖项都会调用它,而不仅仅是我需要调用它的依赖项(如下)

有没有办法让 GetService(Type serviceType) 只在我有一个 ninject 可以解析的接口(interface)时调用,而不是像下面这样为每个依赖项调用 GetService 的 asp.net。让它更快?我正在使用 Ninject,这不是最快的开始。

或者这是我不应该担心的事情?谢谢

public class NinjectDependencyResolver : IDependencyResolver
..... unnecessary code not shown

public object GetService(Type serviceType)
{
Debug.WriteLine("GetService was called for " + serviceType.ToString());
return kernel.TryGet(serviceType);
}

正在显示输出窗口

GetService was called for System.Web.Mvc.ITempDataProvider
GetService was called for System.Web.Mvc.Async.IAsyncActionInvoker
GetService was called for System.Web.Mvc.IActionInvoker
GetService was called for System.Web.Mvc.IViewPageActivator
GetService was called for ASP._Page_Views_Home_Index_cshtml ... GOES ON and ON....

最佳答案

可能不应该担心它。

如果您的 ASP.NET MVC 站点与普通站点一样,并且具有进程外调用,例如

  • 访问数据库
  • 调用网络服务
  • 访问文件系统
  • 等等

然后页面请求时间的大部分 (95+ %) 将用在此处。

一般来说,像 NInject 这样的 DI 容器是很快的;它们是可重用的库,它们的创建者通常致力于尽可能快地制作它们。事实上,它们不会做任何 MVC 的内部 DependencyResolver 尚未做的事情。

有关此主题的更多信息,请阅读我的(与容器无关的)文章 Compose object graphs with confidence ,或查看我的演讲 Big Object Graphs Up Front .

您还应该记住 Knuth 的话,即 premature optimization is the root of all evil .如果您担心它:测量。

这就是我所做的,也是我在 Big Object Graphs Up Front 中报告的内容说话。

关于c# - 自定义依赖解析器会减慢我的 MVC 应用程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22581911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com