2011-12-12 87 views
2

是否有可能存储一些外部文件,这些文件存储一些原始代码(不是C#,可能是简单的Javascript或VB脚本),其中包含许多函数,参数包含来自父代的数据应用程序并捕获将数据返回给C#应用程序。如果是这样,该怎么办?在C#中执行实时代码.net

+0

你想在C#中运行JavaScript? – Magnus

+0

如果你想在C#中编写脚本,你见过LinqPad吗? – DaveShaw

+1

什么?.......... –

回答

2

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

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

+0

对于将来的版本,请使用Roslyn。 – SLaks

1

如果您正在创建一个永不停机的系统。我会建议你的想法的一些替代方案。

最后,我不认为你的想法会被淘汰。除非我遗漏了某些东西,在为原始JavaScript文件添加新功能时,您仍然需要更新C#代码以处理与该特定代码段之间的通信。也许你可以用很多xml来缓解这种情况。但是,一旦你开始用这些术语思考,你就会产生IO的TON,数据编组和维护噩梦。

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

一些替代方案:

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

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