在之前的 Unity(一):從ObjectBuilder說起 一文中,介紹了Unity的底層框架ObjcetBuilder。同時我稍微也提了一句:他們(patterns & practices)再次犯了拖期的老毛病(說句公道話,這個毛病當屬其中的Enterprise Library團隊最為突出)。沒想到,今天看到Unity的掌門Grigori說:Unity release date is moved to April 7。又有得等了:)
實在不想針對目前的不穩定版本做介紹,主要是看到3月12號的版本比一個月前的CTP有了很大的改動,怕了!不想等正式版出來之後,目前的介紹中的代碼編譯一下n多錯誤——如果不徹頭徹尾的改一遍的話。這裡有篇文章介紹了這兩個版本之間的改動:IoC Container, Unity and Breaking Changes Galore。Huh!之前TerryLee也有一篇介紹的文章:依賴注入容器Unity Application Block(1):快速入門,是針對2月的CTP的,嗯,沒錯,他的示例代碼中用到的API現在都變了...
不過,在這個時候做一些總體性的介紹還是合適的,畢竟大的方向已經不會變的。嗯,至少我是這麼想的...
Unity是什麼?
Unity是patterns & practices團隊開發的一個輕量級、可擴展的依賴注入容器,具有如下的特性:
1. 它提供了創建(或者裝配)對象實例的機制,而這些對象實例可能還包含了其它被依賴的對象實例。
2. Unity允許將預先配置的對象注入到類中,實現了inversion of control (IoC)的功能。在Unity中,支持constructor injection(構造器注入), property setter injection(屬性設值注入)以及method call injection(方法注入)。ps:這裡的方法注入與Martin Fowler定義的接口注入類似而稍有區別。
3. 支持容器的體系結構。一個容器可以有子容器,允許從子容器到父容器的對象定位查詢。
4. 可以通過配置文件進行准備和配置容器。
5. 不會影響到類的定義(屬性設值注入和方法注入除外),這也是輕量級容器的一個體現。
6. 支持自定義的容器擴展。