Dot-Net

溫莎城堡有什麼缺點嗎?

  • December 23, 2008

我一直在研究城堡項目,特別是溫莎。我對這項技術的可能性印象深刻,擁有如此鬆散耦合的系統的好處是顯而易見的。我唯一不確定的是使用這種方法是否有任何缺點,特別是在 asp.net 中?例如性能命中等。

我正試圖讓我的開發人員在這裡看到這種方法的好處,並受到以下復出的打擊:

  1. 那是使用反射,每次從容器呼叫對象時,都必須使用反射,因此性能會很糟糕。(是這樣嗎?它是否在每次呼叫時都使用反射?)
  2. 如果我依賴介面;如何處理具有附加到類上的額外方法和屬性的對象?(通過繼承)

要回答您的問題:

  1. 那是使用反射,每次從容器呼叫對象時,都必須使用反射,因此性能會很糟糕。(是這樣嗎?它是否在每次呼叫時都使用反射?)
  • 不,不是的。大多數情況下,當您註冊組件時,它很少使用反射。當你第一次從容器請求組件時,它也可能在生成代理類型時使用反射。
  1. 如果我依賴介面;如何處理具有附加到類上的額外方法和屬性的對象?(通過繼承)
  • 這都是設計問題。您不想讓容器創建每個對象。您主要將其用於服務依賴項。在這種情況下,您並不關心實際上隱藏在介面後面的是什麼類型(這就是它的全部意義,不是嗎?)。

您也可以擁有類組件,但它們有限制,您必須了解這些限制(例如,您不能攔截對非虛擬方法的呼叫)。我發現 Windsor 是最成熟的,最適合我的開發容器風格。

除此之外,Performance,我還沒有聽說過因為不可接受的性能而不得不丟棄依賴容器的項目。Windsor 真的很聰明,它記憶體了冗長操作的結果,這樣你就不必付出兩次代價。您可以在 Internet 上找到圖表,比較許多 IoC 容器的速度。關於這些需要注意兩點:所有容器都非常快。不要認為其他容器在這些圖表上比 Windsor 更快的事實意味著它們更好。Windsor 為您做了很多其他容器沒有的事情。

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