在C#.net中执行Live Code

时间:2011-12-12 23:00:13

标签: c# javascript vbscript

是否可以有一个外部文件存储一些原始代码(不是C#,可能是简单的Javascript或VB Script),其中包含许多函数,参数包含来自父应用程序的数据并捕获返回数据回到C#应用程序。如果是这样,怎么办呢?

3 个答案:

答案 0 :(得分:2)

如果您想使用非CLR语言,最简单的方法可能是使用System.Diagnostics.Process向您选择的可执行文件/解释器进行shell并解析stdout。您当然也可以通过命名管道,TCP / IP,HTTP等更复杂的机制进行通信,但这需要在双方编写代码。

有一些按需c#'口译员'(http://www.csscript.net/http://www.codeproject.com/KB/dotnet/nscript.aspx),但我不推荐他们。主要是因为无法知道未来版本的.NET将获得什么样的支持。

答案 1 :(得分:1)

如果您希望创建一个永不停机的系统。我会为你的想法提出一些替代方案。

最后,我认为你的想法不会成功。除非我遗漏了某些内容,否则在向原始javascript文件添加新功能时,您仍需要更新C#代码以处理与该特定代码段之间的通信。也许你可以使用大量的xml缓解这种情况。但是,一旦你开始考虑这些术语,你就会有大量的IO,数据编组和维护噩梦。

简而言之,我认为这不是一个可行的选择。

一些替代方案:

多台服务器:如果您维护2台或3台相同的服务器,则只需关闭一台服务器,将所有用户重定向到备份,同时更新主服务器。完成后,将它们重定向回主服务器,然后更新备份。

实时修补:同样,我对这些方法知之甚少,但有一些算法和方法可以在不重新启动的情况下修补dll。做一些关于这个主题的研究,因为它可能是最可行的选择(大多数时候,人们和公司不会在没有很多理由的情况下购买更多硬件来支付成本)。

答案 2 :(得分:1)

我已经编写了许多类似脚本的应用程序。我会为初学者推荐IronPython(http://ironpython.codeplex.com/),以及How to use Microsoft.Scripting.Hosting?的说明。有几种语言可供选择...... IronPython最适合我的需求。