【问题标题】:Ninject and lazy Dependency Injection mvc 4.5Ninject 和惰性依赖注入 mvc 4.5
【发布时间】:2014-01-08 09:01:45
【问题描述】:

我已经开始使用 Ninject 开发网站并在项目中设置 DI。

我注意到您在名为 ninjectWebCommon 的 app_start 中注册了绑定依赖项。项目加载时,是否所有依赖项都已注册?例如,如果您注册了超过 50 个依赖项,这会导致资源问题吗?还是每个实例都在页面执行时注册?如果没有,有没有办法懒惰绑定依赖关系还是没有必要?

即使使用另一个 IOC 容器,是否有更好的方法来完成此任务?

【问题讨论】:

  • 你的意思是初始化而不是注册?如果他们只是被注册,应该不会有太多的开销。
  • 我的意思是注册。这是项目第一次启动的时候。例如private static void RegisterServices(IKernel kernel) { kernel.Bind().To(); }
  • 在这种情况下,Ufuk 的答案涵盖了您想知道的内容。

标签: asp.net-mvc-4 dependency-injection ninject.web.mvc


【解决方案1】:

您应该阅读有关Register Resolve Release pattern 的信息。基本上注册过程非常简单,你告诉容器使用哪些类型来解析抽象。在此过程中不会创建任何对象。当请求到达您的应用程序时,DI 容器会创建实例。根据生命周期,它们可能只创建一次或在每次请求时创建。

【讨论】:

    【解决方案2】:

    您也为其他容器进行了类似的注册,这确实不应该是资源问题。然而 Ninject 有点慢。如果您可以随意选择,那么使用像 SimpleInjector 这样的 DI 容器可能会更好。

    为了比较,我使用了a website with some benchmarks

    【讨论】:

    • 塔!我会快速浏览一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    相关资源
    最近更新 更多