我看到MEF和Lua之間的相似之處。兩者都允許您註冊方法並根據需要進行部署。既是MEF又是Lua形式的IoC /依賴注入?是MEF微軟的Lua版本嗎?
回答
我假設你意識到這些技術之間的巨大差異,問題:
「都是MEF和Lua形式的IoC/ 依賴注入?」
此外,我假設你在談論嵌入式Lua與Lua作爲一種語言。
首先,讓我們分離控制反轉的依賴注入。 Fowler defined Dependency Injection as a specific form of IoC,因爲IoC的想法變得如此普遍,以至於它不再是系統的顯着特徵。他的定義包括三種主要類型的依賴注入:構造器注入,Setter注入和接口注入。在所有三種類型中,這個想法是將一個類或接口的特定實現注入到需要它的類或方法中。這很漂亮,因爲它允許你分離依賴和使用它的類。只要他們遵循合同,您就可以編輯和交換依賴項的實現,而無需關心或影響其消費者。
使用此定義,我會說MEF通過並嵌入Lua失敗。 MEF主要是依賴注入框架。它允許您動態加載和編寫實現特定合同的外部類。另一方面,Lua允許通過腳本進行擴展,但合同的方式很少。當然,你可以爲你的應用程序提供一個Lua API,這是一個合同,但它沒有做任何事情來確保一個真正的合同是榮幸的。
IoC更廣泛(Fowler,Wikipedia)常見的主題是主程序流程臨時放棄控制,但從正在執行工作的組件接收流狀態更新。常見的方法包括:事件,關閉和延續。
使用此定義,MEF很容易通過(在運行時將控件傳遞給未知組件),您也可以爲嵌入的Lua生成一個參數。主程序一直巡航,直到它需要一個在外部腳本中定義的函數。此時,控制權將交付給腳本,直到完成或中斷爲止。
有一點要注意的是,Lua在這方面並不特別特別。您可以嵌入Perl,Python,Tcl和Ruby。事實上,IoC的一般定義在現代編程環境中並不特別有用。這太常見了。福勒說這就是爲什麼他將依賴注入作爲特例介紹。在GUI,事件,線程,守護進程,關閉,延續和monad的世界中,一切都使用IoC。今天,當人們說'IoC'時,他們通常意味着某種依賴注入。
MEF和Lua沒有任何關係,也不像Lua。
MEF是一個擴展框架(基本上,一個真棒插件框架)。
Lua是一個非常酷的腳本語言。 「
」兩者都允許您註冊方法並根據需要進行部署。「這句話適用於C,C++,C#,VB,SQL,DI框架,JavaScript,通用汽車,福特,醫院......
我不明白「通用汽車,福特,醫院......「 – 2008-11-29 00:00:20
- 1. 微軟SDK版本
- 2. MEF和版本
- 3. 香草PHP和微軟版本有區別嗎?
- 4. 如何檢測微軟樂隊版本
- 5. 這是微軟的問題嗎?
- 6. 微軟是否停止支持silverlight的新版本?
- 7. 什麼是微軟的MQ系列版本?
- 8. 版本[共享] MEF導出
- 9. C++的Lua 5.1版本
- 10. 是一種指定軟件包版本號的方法嗎?
- 11. 微軟自己的面向文檔的數據庫版本?
- 12. 軟件版本
- 13. 軟件版本
- 14. 爲什麼微軟提供IE虛擬機的Vagrant版本?
- 15. 離線版本的微軟TFS源代碼tken
- 16. 微軟的.net框架版本和顛覆
- 17. 微軟邊緣版本40/15剪貼板返回「text/html的」
- 18. 支持vba用戶表單的微軟版本
- 19. 揭露MEF的版本裝「插件」
- 20. MEF中的Dll版本控制
- 21. MEF - 錯誤的彙編版本
- 22. IronPython微軟。腳本異常
- 23. 在微軟有類似的OSGI嗎?
- 24. 微軟公司的MVC是新的Struts for Dot網絡嗎?
- 25. 微軟Prism是否活躍?
- 26. 微軟Edge邊緣頻道,預穩定版本
- 27. 哪個微軟服務器版本可供選擇
- 28. 無法從4.0.20710.0版本更新NuGet包「微軟ASP.NET MVC」 5.1.2
- 29. 這是微軟執行std :: thread的一個大錯誤嗎?
- 30. MEF相關性和版本號
它們完全不同。 – 2008-11-28 19:58:42