gpt4 book ai didi

comparison - MEF是微软的Lua版本吗?

转载 作者:行者123 更新时间:2023-12-02 05:46:57 26 4
gpt4 key购买 nike

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

最佳答案

我假设您了解这些技术之间的巨大差异并关注以下问题:

"Are both MEF and Lua forms of IoC / Dependency Injection?"

此外,我假设您是在谈论嵌入式 Lua 与 Lua 作为一种语言。

首先,让我们将依赖注入(inject)与控制反转分开。 Fowler defined Dependency Injection as a specific form of IoC因为 IoC 的想法已经变得如此普遍,以至于它不再是系统的显着特征。他的定义包括三种主要类型的依赖注入(inject):构造函数注入(inject)、Setter 注入(inject)和接口(interface)注入(inject)。在所有这三种类型中,其思想都是将类或接口(interface)的特定实现注入(inject)到需要它的类或方法中。这非常巧妙,因为它允许您将依赖项与使用它的类分离。只要他们遵守契约(Contract),您就可以编辑和交换依赖项的实现,而无需其消费者关心或受到影响。

使用这个定义,我会说 MEF 通过,而嵌入式 Lua 失败。 MEF 在很大程度上是一个依赖注入(inject)框架。它允许您动态加载和组合实现特定契约的外部类。另一方面,Lua 允许通过脚本进行扩展,但几乎没有契约方式。当然,您可以为您的应用程序提供一个 Lua API,这是一种契约,但它无法确保真正的契约得到遵守。

IoC 更广泛。( Fowler , Wikipedia )共同的主题是主程序流暂时放弃控制,但从正在执行工作的组件接收流状态更新。实现此目的的常见方法包括:事件、闭包和延续。

使用这个定义,MEF 很容易通过(控制在运行时传递给未知组件),你也可以为嵌入式 Lua 做一个论证。主程序一直运行,直到它需要一个在外部脚本中定义的函数。在那一点上,控制被传递给脚本,直到它完成或被中断。

需要注意的是,Lua 在这方面并不是特别特别。您可以嵌入 Perl、Python、Tcl 和 Ruby。事实上,IoC 的一般定义在现代编程环境中并不是特别有用。这太常见了。 Fowler 说这就是他将依赖注入(inject)作为特例引入的原因。在 GUI、事件、线程、守护进程、闭包、延续和 monad 的世界中,一切都使用 IoC。今天,当人们说“IoC”时,他们通常指的是某种依赖注入(inject)。

关于comparison - MEF是微软的Lua版本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/326514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com