如果你想知道各家 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)