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

Scripting 应用程序的脚本引擎主机,scripting,Scripting,我们有一个应用程序,它在某些时候需要执行“任务”来完成一些工作。这些任务目前只是命令(读:狡猾的VB脚本)被触发,然后监视进程的完成,或者在进程“超时”时中止,但是我们对执行没有足够的控制 我想集成一个脚本引擎或脚本主机,使我们能够在应用程序中执行脚本(如果可能的话,在另一个appdomain中),并对它们保持一定的控制。我设想我们的脚本遵循如下界面: void Initialize(); void Destroy(); void Execute(); void Abort(); int Get

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

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

void Initialize();
void Destroy();
void Execute();
void Abort();
int GetProgress();
当然,上面的内容可能不是代码中的内容,但是您知道。。。基本上,我们可以从应用程序中调用
初始化
,然后
执行
,轮询
获取进度
,直到返回值为100或任何值,然后在最后调用
销毁
中止
,然后
销毁
,如果需要取消或超过超时时间

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

我已经研究了几个选项来实现这一点——我已经实现了一个原型,它使用Boo作为语言,基本上是动态加载脚本,在内存中作为“程序集”进行编译和执行。我喜欢这种工作方式,但我不确定它是否会被接受,因为它不是一种“众所周知的”语言等等

我正在研究的其他选项有Python(IronPython)、Ruby(IronRuby)、PowerShell,可能还有VB,但我不确定VB的实现是否容易


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

< P>这不是很令人兴奋,但我会考虑使用内置脚本托管支持。以前我在本地C++中没有问题,而且.NET在包装上有着同样的东西(承认文章是旧的)。它是一种非常简洁高效的语言,这一点并没有坏处。

如果您希望其他人为您的系统编写脚本,那么PowerShell可能是一个不错的选择。根据我的观察,人们对学习PowerShell的抵制程度不如学习Python。可能是因为PowerShell附带了微软的批准标志。在微软的商店里,Python可能被视为太过异国情调,Ruby更是如此

很容易证明,微软世界中的每个人——无论是程序员、QA人员、支持人员还是超级用户——都会从学习PowerShell中受益。很容易证明学习PowerShell将符合他们自己的利益。cmd.exe将被废弃。每个人迟早都会学习PowerShell

这就是为什么我认为PowerShell是一个不错的默认选择

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

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


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

Lua是否支持shell和广告交互等功能?我在他们的网站上看不到它……有几个库可以访问DOM资源,我想这是最简单的。另一方面,C API非常简单,将此功能添加到主应用程序并将其公开给Lua(不一定是GUI)可能会更简单。谢谢-我已经看过了使用Vsa名称空间的情况,但是它们似乎已被弃用,取而代之的是CodeDom等。。。不过,由于环境限制(COE、Windows XP等),我们无法使用PS,主要是因为PS不是基本操作系统构建的一部分,安装这种依赖关系将给平台人员带来巨大的痛苦。这些脚本实际上也不是用于UI的,而是用于“管理员”类型的人员编写任务,然后在标准用户机器上执行这些任务。。。考虑登录脚本,但不是…我指的是UI,因为它是脚本编写者和管理员用户界面的一部分。我不是说桂。