gpt4 book ai didi

c# - 使用基于 DLR 的语言而不是 C# 来执行脚本任务的原因是什么?

转载 作者:太空狗 更新时间:2023-10-29 23:35:33 26 4
gpt4 key购买 nike

我正在考虑将一种脚本语言嵌入到我的一个软件项目中,并确定了两个选项:在运行时通过 CodeDOM 编译 C# 并嵌入一种基于 DLR 的脚本语言。这两个选项都可以让我完全访问 .NET Framework。

我要编写脚本的操作将是 DataRow 和一组元数据的用户定义转换,从而生成经过修改的 DataRow。我希望这些转换是可组合的并且会被频繁调用。当然,我希望最终用户能够提供和修改这些转换。

考虑到这种工作负载,使用一种方法比使用另一种方法有什么明显的优势吗?

最佳答案

出于显而易见的原因,对于用户而言,通常最好使用语法更宽容的语言。所以我建议使用基于 DLR 的语言。如果你有时间和资源,专门的 DSL 是最好的选择,因为你可以提供一个小而易于学习的语法,并且更容易防止用户做他们不应该做的事情(比如访问文件系统,例如……)

我无法从经验中得出结论,但据我所见,DLR 可以相当快(IronPython 比原生 Python 做得更好!)。但是动态调度总是需要一些开销。在紧握的手上,跨 AppDomain 调用非常昂贵。虽然动态调度成本在脚本中随处支付,但跨 AppDomain 成本仅在每次脚本调用时支付一次。哪一个做得更好取决于您的脚本能做多少。

嵌入 DLR 脚本宿主是 not difficult at all .困难的是推出自己的 DSL,如果您选择那样的话。

您还可以查看 boo .由于类型推断,它是一种看起来像 Python 的静态 CLI 语言。它的编译器具有高度可扩展性,我已经成功地在其上编写了一些小型 DSL。您还可以查看 Oren 的书 Writing DSLs with boo .

关于c# - 使用基于 DLR 的语言而不是 C# 来执行脚本任务的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1772824/

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