DI 容器的比較表

如果你想知道各家 DI 容器的差別,除了針對自己感興趣的功能,實際寫程式測試一下,另一個比較快的方法是上網搜尋。我發現 Daniel Palme 有維護一份各家 DI 容器的效能比較表:IoC Container Benchmark - Performance comparison,可以參考看看。

根據 Palme 的文章,我從中摘出幾個比較常見的 DI 容器,再加上自己上網查證的結果,整理成一張簡表(與 Palme 的文章略有出入),如下圖所示。

說明:
  • 「設定方式」指的是設定 DI 容器的方式,包括:以程式碼來設定、使用 XML、以及自動設定。設定的內容則主要是型別註冊的相關資訊。
  • 「自動匹配」的英文是 auto-wiring,指的是 DI 容器在建立特定型別的物件個體時,會根據容器現有的設定來尋找合適的建構函式。
  • Autofac 是否提供自訂生命週期的功能,這個部分有待進一步釐清。Palme 似乎認為 Autofac 提供的 ILifeTimeScope 不能算是自訂生命週期。因此,這裡給個橘色的勾勾。

我打算把這張圖納入 DI 書籍的第三章。由於這些 DI 容器可能隨時有更新或變動,我會在表格下方註明最近更新時間,以盡量維持資訊的正確性(還好是電子書,可以隨時更新)。

(DI 容器真是百家爭鳴啊!有時候選擇太多也是挺困擾的...orz)

3 則留言:

  1. 我喜歡「自動匹配」這個詞!
    期待煥麟大哥的書 :)

    回覆刪除
  2. 91 兄:感謝! (狀態顯示為開始脫離撞牆期....orz)

    回覆刪除
  3. 我剛剛複習了一遍 91 兄先前在 http://huan-lin.blogspot.com/2012/07/unity-5.html 提出的問題,發現我的回答挺爛的耶 XD
    寫書過程中,物件組合、過度注入、組合根、相依性洩漏(好詭異的詞?)等問題一一浮現。這些問題,我看我還得好好想想....

    回覆刪除

技術提供:Blogger.