代码之家  ›  专栏  ›  技术社区  ›  Jeffrey Cameron

依赖注入最佳实践

  •  8
  • Jeffrey Cameron  · 技术社区  · 16 年前

    我在代码中使用依赖项注入(使用 Ninject )我一直认为我做得很好,直到我遇到了一个性能问题,这个问题是由对DI容器在代码中的位置的误解引起的。似乎有很多关于如何使用DI框架的信息,但没有太多关于在哪里不使用它们或如何最好地使用它们的信息(至少我可以找到)

    我想我会写下我认为的一些最佳实践,看看其他人是否同意我的观点,以及人们能想出哪些其他最佳实践。

    • 每个应用程序或AppDomain使用一个内核
    • 与属性或字段注入相比,更喜欢构造函数注入
    • 其他??指向好的博客实体/文章的指针??
    2 回复  |  直到 9 年前
        1
  •  7
  •   Mark Seemann    16 年前

    以下是最重要的要点的简短列表(其中一些也出现在OP中):

    • 代码应该不知道使用了哪个DI容器(如果有的话)
    • 在应用程序的根目录(合成根目录)中合成整个应用程序
    • 偏好构造函数注入

    我不能说我同意你关于单态和瞬态对象的观点。DI的全部要点是,外部机制(如DI容器)决定任何给定依赖项的生命周期,而不是其他依赖项,因此您需要让所有依赖项都由DI容器管理。

        2
  •  4
  •   flukus    16 年前

    仅将DI容器用于长寿命单例对象,将工厂(或其他方法)用于长寿命瞬态对象)