Dot-Net

Simple Injector vs Hiro vs Autofac [關閉]

  • November 18, 2011

我是 DI 和 IoC 的新手,我正在嘗試決定要學習哪個 IoC 容器。我已經看到了幾個性能比較,其中引用的三個容器似乎表現得非常好。但是,我沒有發現包含 Hiro 或 Simple Injector 的功能比較。Autofac 的社區似乎是最大的,但 Hiro 和 Simple Injector 在基準測試中的速度非常快,特別是 Simple Injector 聲稱非常容易學習。也就是說,我不想學習一個並且不得不切換到另一個,因為功能集是有限的。出於這個原因,我傾向於 Autofac,因為它相當成熟並且功能完整(這里這裡的好文章) 並且是可用的最快的 IoC 容器之一。有沒有人使用過這三個容器中的至少兩個?你能提供任何功能比較嗎?

首先讓我說我是Simple Injector背後的首席開發人員。

我同意Mark的觀點,在大多數情況下,容器的性能不是問題。儘管如此,某些容器在某些方面的性能非常差,並且很難從性能角度直覺地感知配置的哪些部分可能存在問題。無論您使用哪個容器,大多數性能問題都可以通過更改配置(將註冊更改為單例、添加記憶體等)來解決。然而,此時配置容器會變得非常複雜。我們試圖用 Simple Injector 解決這種複雜性。我喜歡讓其他人來決定我們是否成功(或者是否擁有一個 DI 容器,或者另一個DI 容器是否有用)。

然而,當我開始項目時,性能在我的初始列表中甚至沒有那麼高(簡單性),但是(無鎖和Expression基於樹的)設計允許我進行優化,使其成為該領域最快的容器之一(同時仍然非常豐富且可擴展)。在大多數情況下,您會發現性能非常接近於手動更新實例。

這就是說,學習依賴注入作為一種模式仍然需要更多的時間,而不是學習使用特定的 DI 容器(Mark 的書對這兩者都有幫助)。容器——甚至是簡單的注射器——不會幫助你理解 DI 和SOLID(但是,它的一些限制試圖推動你擁有一個乾淨的應用程序設計)。

Simple Injector 在 DI 場景中是相當新的(或遲到的)。正因為如此,它與其他框架之間沒有太多比較(儘管有一些herehere),並且與其他框架相比,使用者數量有限但迅速增加(根據Roy Osherove 的一項舊民意調查,Simple Injector 有當時的市場份額約為 4%)。很遺憾,Simple Injector 沒有進行很多比較,因為它有很多功能(例如,請查看文件中的高級場景部分)。您在(第 1部分和第 2部分)連結的比較中缺少簡單的注射器),所以這裡是 Simple Injector 的功能列表(但請注意,Simple Injector 已添加到作者的較新比較之一):

我不知道您的要求是什麼,但我敢打賭 Simple Injector 可以在您的項目的整個生命週期內為您服務。如果您遇到問題,請在 Stackoverflow.com 或Simple Injector 論壇上詢問。Simple Injector 貢獻者和其他愛好者將很樂意為您提供幫助。不要忘記,有很多Stackoverflow 使用者可以幫助您解決一般 DI 問題。

引用自:https://stackoverflow.com/questions/8189302