用于应用程序的脚本引擎主机

时间:2009-01-13 02:48:00

标签: scripting

我们有一个应用程序,在某些时候需要执行“任务”才能完成一些工作。这些任务当前只是命令(读取:狡猾的VB脚本)被触发,然后监视完成或中止的过程,如果它'超时',但是我们没有足够的控制执行。

我想集成一个脚本引擎或脚本主机,使我们能够在我们的应用程序中执行脚本(如果可能的话,在另一个appdomain中)并保持对它们的一些控制。我设想我们的脚本遵循类似于:

的界面
void Initialize();
void Destroy();
void Execute();
void Abort();
int GetProgress();

当然,上面可能不是代码中的内容,但是你明白了......基本上从我们的应用程序中我们可以调用Initialize,然后调用Execute,轮询{{1直到返回值为100或其他任何值,然后在结束时调用GetProgressDestroy然后调用Abort,如果我们需要取消或超过超时期限。

脚本需要做的主要事情是AD查询,并与Shell进行交互(例如,映射网络驱动器或断开网络驱动器)。

我已经研究了一些选项来实现这一点 - 我已经实现了一个使用Boo作为语言的原型,并且实际上在运行时加载脚本以在内存中编译和执行作为'程序集'。我喜欢它的工作方式,但我不确定它是多么好被接受不是一个“众所周知”的语言等。

我正在看的其他选项是Python(IronPython),Ruby(IronRuby),PowerShell,也许还有VB,但我不确定使用VB实现的简易性。

任何意见,评论,建议甚至资源都可能指向我正确的方向?

3 个答案:

答案 0 :(得分:3)

Lua旨在嵌入应用程序中。它并不会伤害它是一种非常整洁有效的语言。

答案 1 :(得分:0)

这不是很令人兴奋,但我会考虑使用内置脚本托管支持。我曾经在Native C ++中做到这一点没有任何问题,.Net似乎在http://msdn.microsoft.com/en-us/library/ms974577.aspx

包装了同样的东西(承认文章是旧的)

答案 2 :(得分:0)

如果您希望其他人为您的系统编写脚本,那么PowerShell可能是一个不错的选择。根据我的观察,人们对学习PowerShell的抵抗力低于学习Python的能力。可能是因为PowerShell附带了Microsoft的批准印章。在微软的商店中,Python可能被视为过于异国情调,而Ruby则更为如此。

通过学习PowerShell,微软世界中的每个人 - 无论是程序员,QA人员,支持人员,高级用户 - 都会受益匪浅。很容易理解,学习PowerShell会与他们自己的兴趣保持一致。 cmd.exe将过时。每个人迟早都会学习PowerShell。

这就是为什么我认为PowerShell是一个很好的默认选择。

当然,很大程度上取决于特定的要求。

一个好的测试可能是在每种候选语言中编写一个典型的脚本,看看哪一个是最自然的。听起来PowerShell非常适合您描述的内容。但如果脚本非常“算法”,那么Python或Ruby会更好。如果速度是必需的,我相信IronPython比PowerShell快得多。 (我不知道IronRuby。)等等。

更新:我只是深思熟虑:)嵌入式脚本语言是用户界面的一部分。也就是说,这是一个UI问题。您应该从用户的角度选择使用哪一个。