.Net应用程序的脚本编写/对象模型/其他接口

.Net应用程序的脚本编写/对象模型/其他接口,.net,com,.net,Com,我正在开发一个.Net应用程序,用于通过串口控制科学仪器。要求允许用户“编写”某些操作的脚本,例如打开阀门、等待X秒、向仪器发送xyz数据等。将有几十种不同的操作可供选择,加上逻辑/程序流(if语句、gotos等) 该软件的前一个版本使用了一个基本的UI,用户可以从一系列可能的操作中进行选择,逐步建立一系列要运行的命令。它很有效,对非程序员来说很好,但不是特别灵活。如果发生错误,报告确切的问题或在脚本中发生的位置并不容易 对于重写,我正试图想出一个更好的解决方案,比如使用“真正的”脚本语言。程序

我正在开发一个.Net应用程序,用于通过串口控制科学仪器。要求允许用户“编写”某些操作的脚本,例如打开阀门、等待X秒、向仪器发送xyz数据等。将有几十种不同的操作可供选择,加上逻辑/程序流(if语句、gotos等)

该软件的前一个版本使用了一个基本的UI,用户可以从一系列可能的操作中进行选择,逐步建立一系列要运行的命令。它很有效,对非程序员来说很好,但不是特别灵活。如果发生错误,报告确切的问题或在脚本中发生的位置并不容易

对于重写,我正试图想出一个更好的解决方案,比如使用“真正的”脚本语言。程序流/逻辑显然是语言本身的一部分,所以我只需要关注暴露/处理不同的工具操作。脚本语言还可以提供更好的运行时错误,而intellisense则是一个额外的优势

我的第一个想法是将我的.Net“action”类公开为某种COM对象模型,允许更多的脚本语言选择(VBScript、Python、Javascript?),但我有点不愿意走COM路线,因为它是一种古老的技术(tbh是我作为开发人员多年来一直努力避免的一种黑色艺术)。没有关于支持哪种语言的要求,因此C#和VB.Net也是可选的

我真的只是在寻找一些关于如何在我的应用程序中实现脚本的想法/建议。脚本编辑器不必集成到应用程序中,尽管这会很好。

您可以通过展示一个合理的对象模型,使用COM来实现这一点。这样做的好处是,使用脚本来实现VBScript相当容易,或者C++用于自动化。 然而,就所需的努力而言,我不确定这是否是最好的办法。你可以考虑以下选项:

  • 公开.NET模型并使用IronPython或Boo编写脚本(如果您更喜欢静态类型)。IronPython非常适合这样做
  • 公开.NET模型并使用C#编写脚本
后者是我在上一个应用程序中选择的,我需要这样的功能,另外,它应该可以直接从应用程序本身编写脚本。决定使用C#的驱动因素是,我们希望提供静态类型和良好的智能感知,因为脚本的目标用户是我们的测试人员,他们发现这样做容易得多,因为API更容易发现,我们可以动态编译脚本,至少提供一些关于脚本内容的健全检查


该应用程序公开了一个.NET脚本模型,而编辑器和intellisense功能由SharpDevelop项目的组件实现。这使得在一天内通过语法突出显示编辑器和intellisense实现脚本支持成为可能。

感谢您的输入。在发布我的Q之后考虑过这个问题,我也得出了同样的结论,C#可能更适合我们正在尝试的工作。