2011-04-19 29 views
5

2年前我曾與Unity合作過,並且我計劃再次使用它。我應該使用Unity嗎(它還活着)?

但是,當你谷歌它,你到微軟網站,說網頁不再維護,另一大熱門是在codeplex.com。

在codeplex上,自2010年以來還沒有發佈,他們承諾在五月/六月的電影(我假設他們的意思是2010年),但他們還沒有。

所以我想知道這個產品還活着嗎,還是MEF是新的小孩那種石頭?

PS(位offtopic)

不知道,如果我是唯一一個,但我似乎從來沒有的成熟度/狀態很好的概述/「他們會存在,明年」等。的codeplex項目,並且大多數時間的文檔是馬馬虎虎

回答

6

的幾點:

  1. MEF,是不是旨在與團結競爭產品(IOC的主要目的進行選擇時會這樣記住這一點)。微軟的一名員工,格倫座計算器上提出這here

    我們的目標不是MEF是一個 多用途的IoC。想 關於MEF的IoC的方面,最好的辦法是 實現細節。我們使用的IoC作爲 模式,因爲它是一個偉大的方式來 地址,我們會考慮 問題解決... MEF的重點是可擴展性。

  2. 也有類似的問題(上個月)對P&P forum for Unity具有以下答案:

    團結就是活得很好,有一個 團隊做這個工作,現在(我們是 ,爲Silverlight構建統一攔截支持 ,作爲 Silverlight集成包的一部分)。檢查 最新的下降,你會在那裏看到 更新。

    此外,目前有很多項目使用 Unity,包括微軟 產品。統一採用 的脈搏非常健康 - 通過EntLib支持Unity 2.0獨立版100多萬次下載 以及更多 。來自Unity論壇的訂閱者數量 是與MEF論壇相同的 。

  3. 我會強烈建議你抽象掉的選擇背後的一個瘦包裝你的IoC容器,以幫助從任何給定的容器變得過時的風險免疫自己。如果需要,它可以更容易切換到不同的容器。第Brownfield Application Development in .NET的251倡導這種做法也和示例代碼如下(我改變了一點,以避免侵犯版權):

    public class Resolve 
    { 
        public static T TypeOf<T>() 
        { 
        //… 
        } 
    } 
    
    public class SomeClass 
    { 
        public void DoingSomething() 
        { 
         var someDependency = Resolve.TypeOf<ISomeDependency>(); 
         //... 
        } 
    } 
    
+0

對於第3點的+1 ......關於#2,對於SL的攔截對於SL已經「開發中」3年。另外,您應該記住,DI容器的理想角色是您不需要編寫像#3這樣的代碼。在代碼中應該只有一個位置實際上調用了容器上的Resolve。應該將依賴項自動注入其他地方...... – Jeff 2011-04-19 14:59:47

+0

Silverlight攔截已經積壓了一段時間,但尚未開發。大約兩個月前,我做了第一個工作。 – 2011-04-19 22:01:09

+0

非常好,清楚的答案。謝謝。 – Michel 2011-04-20 10:46:01

3

我認爲MEF是新的孩子,那岩石。而且非常甜。它似乎有很好的文件記錄,它看起來會在一段時間內出現。從我看到的情況來看,它比Unity更容易。

5

當涉及到Microsoft的依賴注入產品時,MEF(託管擴展性框架)和Unity當前處於競爭的地位。就截取和AOP(面向方面​​的編程)而言,MEF並沒有真正努力解決這個問題。

歷史告訴我們,微軟並沒有很好地管理其競爭/重疊的團隊項目,其結果是往往缺乏基本功能的半焙烤實現的跟蹤記錄(查看LINQ to SQL和實體框架的一個明顯的例子 - 3年後,EF仍缺乏LINQ to SQL提供的非常基本的功能)。

我會親自去一個更成熟,更好的保持DI框架(最有也比MEF和Unity聯合更多的功能)。我喜歡溫莎城堡。 NInject,StructureMap等似乎也有良好的記錄。

+1

+1的溫莎城堡。我不確定其他容器,但溫莎產生的錯誤信息非常清晰,使得學習曲線非常平滑。 – Mike 2011-04-19 12:17:03

+0

同意,我總是覺得很難找出(就像我在這裏的統一問題),一個產品即將過期,將不斷髮展。 – Michel 2011-04-20 10:47:19

1

是的,Unity仍然存在! mef也是如此。如果我沒有弄錯,微軟的模式和做法是一樣的統一2.0?