0

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

该软件的前一个版本使用基本 UI,用户可以从可能的操作列表中进行选择,以逐步构建一系列命令以运行。它很有效,非常适合非程序员,但不是特别灵活。如果发生错误,则很难报告确切的问题,或者它在脚本中发生的位置。

对于重写,我正在尝试提出更好的解决方案,例如使用“真正的”脚本语言。程序流/逻辑显然是语言本身的一部分,所以我只需要关注暴露/处理不同的仪器动作。脚本语言也会提供更好的运行时错误,而智能感知将是一个好处。

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

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

4

1 回答 1

0

可以通过展示一个合理的对象模型来使用 COM 来做到这一点。这样做的好处是使用 VBScript 编写脚本或使用 C++ 进行自动化相当容易。

但是,我不确定这是否是所需工作量的最佳方法。您可以考虑以下选项:

  • 公开 .NET 模型并使用 IronPython 或 Boo 编写脚本(如果您更喜欢静态类型)。IronPython 非常适合这个。
  • 公开 .NET 模型并使用 C# 编写脚本。

后者是我为上一个需要此类功能的应用程序选择的,此外它应该可以直接从应用程序本身编写脚本。决定使用 C# 的驱动因素是我们希望提供静态类型和良好的智能感知,因为脚本的目标用户是我们的测试人员,他们发现这样工作更容易,因为 API 更容易发现并且我们可以编译动态脚本至少提供一些关于脚本内容的完整性检查。

该应用程序公开了一个 .NET 脚本模型,而编辑器和智能感知功能由 SharpDevelop 项目中的组件实现。这使得在一天内使用语法高亮编辑器和智能感知实现脚本支持成为可能。

于 2012-10-09T13:28:42.783 回答