2008-11-28 69 views
2

我看到MEF和Lua之间的相似之处。两者都允许您注册方法并根据需要进行部署。既是MEF又是Lua形式的IoC /依赖注入?是MEF微软的Lua版本吗?

+0

它们完全不同。 – 2008-11-28 19:58:42

回答

8

我假设你意识到这些技术之间的巨大差异,问题:

“都是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'时,他们通常意味着某种依赖注入。

5

MEF和Lua没有任何关系,也不像Lua。

MEF是一个扩展框架(基本上,一个真棒插件框架)。

Lua是一个非常酷的脚本语言。 “

”两者都允许您注册方法并根据需要进行部署。“这句话适用于C,C++,C#,VB,SQL,DI框架,JavaScript,通用汽车,福特,医院......

+0

我不明白“通用汽车,福特,医院......“ – 2008-11-29 00:00:20