用于嵌入 C#/.NET 应用程序的脚本语言? [关闭]
Posted
技术标签:
【中文标题】用于嵌入 C#/.NET 应用程序的脚本语言? [关闭]【英文标题】:Scripting language for embedding into C#/.NET applications? [closed] 【发布时间】:2010-10-02 12:23:14 【问题描述】:[我能找到的only similar question 很久以前就得到了回答,并且主要包含对 IronPython 的引用。我也想考虑其他选择]
我们有一个用 C# 编写的复杂数据分析应用程序。该应用程序应为用户提供定制其数据分析任务的复杂方法。目前,我们混合使用配置文件和 Excel 表格来指定它,但它变得笨拙,因此我们正在寻找一种脚本语言来嵌入。
用于 C#/.NET 嵌入的最佳简单脚本语言是什么?是否有可能以类似于 Excel/Word 的方式嵌入 VBA?或者是否使用了 javascript/Lua?
不用说,将一些 API 和对象从主应用程序公开到嵌入式脚本中应该很容易。
【问题讨论】:
你签出SILK了吗?它就是为此目的而设计的。 【参考方案1】:我知道其他问题参考了IronPython,但我仍然觉得它应该在这里,因为我认为这是最好的选择之一。
另一个不错的选择是IronRuby。我看到的主要区别是您的开发人员/用户是否有任何可以转移的 Python 或 Ruby 经验。
真的,最终您最好的选择将是一种最容易被用户适应的语言。除非他们接受它并且能够比使用旧方法更有效率,否则不值得付出努力。
【讨论】:
+1,根据我的经验,Python 非常易于教授和学习,非程序员也能像重型程序员一样接受它。 Python 简单易学;在 IronPython 中使用 .NET 框架类就更少了。但这是任何与框架互操作的脚本语言都会遇到的问题,而且您可能不想使用不兼容的脚本语言。我使用 IronPython,对结果非常满意。【参考方案2】:Boo 或许?
【讨论】:
它比 IronPython 好在哪里? @eliben:“更好”?有什么比 IronPython “更好”的?这不一样。它具有可选的静态类型,非常适合指定可以很好地适合您的场景的 DSL。见ayende.com/Blog/archive/2007/12/17/The-Boo-Language.aspx 是的,但它相当新,不受支持且晦涩难懂。没有机会得到一本书,用户社区很小,图书馆也不多。毕竟,我需要一个“公司”应用程序,所以 Boo 不会这样做。 图书:manning.com/rahien 库:它是一种 .NET 语言,所以 .NET 世界中的任何东西都是你的。【参考方案3】:Lua 很棒! Lua 与 .NET 配合得非常好。我写了一篇关于如何开始嵌入 Lua 和 C# 的博文,可能值得一看:
http://blog.apterainc.com/software/embedding-lua-and-c/
【讨论】:
呃!我在您的链接上收到 404。 这就是为什么 *** 要求与答案相关的链接内容包含在该答案中(以避免死链接)。【参考方案4】:我会研究仅 XAML 的 Windows 工作流。您可以重新托管设计器,并提供可以拖出并用于以他们喜欢的任何方式操作数据的自定义活动。非常直观。我目前在我的一个应用程序中使用它,用户似乎很喜欢它。虽然它有一个小的学习曲线,但它比典型的脚本语言要少得多,而且人们似乎能够很快掌握它,尤其是那些有使用流程图和 Visio 经验的人。
【讨论】:
如果所需的自定义定义相当明确且易于参数化,这将非常有用且用户友好。否则,您将返回提供脚本语言。 我同意...但这就是为什么您要构建通用活动来处理所需的尽可能多的不同流程。然后活动会取代个别语言的关键字结构,例如 if、while 等。【参考方案5】:我知道您要求脚本技术,但基本需求是非程序员的代码控制。我们使用ILOG Rules for .Net 来满足这一需求。
【讨论】:
【参考方案6】:嗯,C# 怎么样?没有理由不能让用户编写 C#,然后安全地将其加载到具有所有正确限制和保护措施的另一个 AppDomain。
【讨论】:
不,我认为 C# 对用户来说过于繁琐和复杂【参考方案7】:JScript.NET 或 PowerShell 呢
【讨论】:
【参考方案8】:我认为通过 CodeDom 使用 C# 是非常强大的解决方案
【讨论】:
【参考方案9】:已经提到了 Boo 和 IronPython,但不要忘记 IronScheme、F# 或任何已移植到 CIL 虚拟机并具有运行时编译/解释的 other languages。
【讨论】:
【参考方案10】:IronRuby 每天都看起来更好。
【讨论】:
【参考方案11】:有很多很多很多scripting languages。哪个最适合您取决于您要做什么。
您应该分析用户需要执行的任务、他们已经熟悉的符号,并选择与他们匹配的现有脚本语言。您不应该选择一种流行的脚本语言,然后强迫您的应用程序和用户适应它。
【讨论】:
【参考方案12】:我也会投票支持使用 C# 编写您的扩展。除非您有令人信服的理由,例如现有用户群已经熟悉 python、ruby 或 boo,否则引入另一种语言只会增加复杂性和培训成本。
【讨论】:
以上是关于用于嵌入 C#/.NET 应用程序的脚本语言? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章