在c# .net中执行实时代码

本文关键字:实时 代码 执行 net | 更新日期: 2023-09-27 18:17:43

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

在c# .net中执行实时代码

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

有一些按需c#"解释器"(http://www.csscript.net/, http://www.codeproject.com/KB/dotnet/nscript.aspx),但我不会推荐它们。主要是因为没有办法知道未来的。net版本会提供什么样的支持。

如果您正在寻找创建一个永远没有停机时间的系统。对于你的想法,我可以建议一些替代方案。

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

一些选择:

多个服务器:如果您维护2或3个相同的服务器,那么您可以简单地关闭一个,将所有用户重定向到备份,同时更新您的主服务器。完成后,将它们重定向回主服务器,然后更新备份。

Live patches :同样,我对这些方法了解相对较少,但是有一些算法和方法可以在不重新启动的情况下实时修补dll。对这个话题做一些研究,因为这可能是最可行的选择(大多数时候,人们和公司不会在没有大量理由的情况下购买更多的硬件)。

我已经编写了许多这样的可脚本化应用程序。我建议初学者使用IronPython (http://ironpython.codeplex.com/),以及如何使用Microsoft.Scripting.Hosting?有几种语言可供选择。IronPython最适合我的需求。