我们有一个应用程序,在某些时候需要执行“任务”才能完成一些工作。这些任务当前只是命令(读取:狡猾的VB脚本)被触发,然后监视完成或中止的过程,如果它'超时',但是我们没有足够的控制执行。
我想集成一个脚本引擎或脚本主机,使我们能够在我们的应用程序中执行脚本(如果可能的话,在另一个appdomain中)并保持对它们的一些控制。我设想我们的脚本遵循类似于:
的界面void Initialize();
void Destroy();
void Execute();
void Abort();
int GetProgress();
当然,上面可能不是代码中的内容,但是你明白了......基本上从我们的应用程序中我们可以调用Initialize
,然后调用Execute
,轮询{{1直到返回值为100或其他任何值,然后在结束时调用GetProgress
或Destroy
然后调用Abort
,如果我们需要取消或超过超时期限。
脚本需要做的主要事情是AD查询,并与Shell进行交互(例如,映射网络驱动器或断开网络驱动器)。
我已经研究了一些选项来实现这一点 - 我已经实现了一个使用Boo作为语言的原型,并且实际上在运行时加载脚本以在内存中编译和执行作为'程序集'。我喜欢它的工作方式,但我不确定它是多么好被接受不是一个“众所周知”的语言等。
我正在看的其他选项是Python(IronPython),Ruby(IronRuby),PowerShell,也许还有VB,但我不确定使用VB实现的简易性。
任何意见,评论,建议甚至资源都可能指向我正确的方向?
答案 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问题。您应该从用户的角度选择使用哪一个。