脚本/对象模型/ .Net应用程序的其他界面

时间:2012-10-09 09:00:53

标签: .net com

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

可以通过展示合理的对象模型来实现它。这样做的好处是,使用VBScript进行脚本编写或使用C ++进行自动化非常容易。

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

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

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

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