繁体   English   中英

c#从数据库编译源代码

[英]c# compile source code from database

我想建立一个主要解释的应用程序框架。 假设源代码将存储在可由用户编辑的数据库中,并且始终会执行最新版本。

谁能给我一些想法,一个人是怎么实现的呢!

欢呼声

在.Net中,您可以使用反射和CodeDOM即时编译代码。 但是,这两种方法都不是非常简单或实用的。 Mono也具有即时解析c#的能力,但是我还没有仔细研究它。

另一种选择是将诸如Boo或IronPython之类的.Net解释语言用作数据库代码的语言。

无论哪种方式,请确保您都认真考虑了平台的安全性。 允许用户执行任意代码始终是充满风险的练习。 寻找一个简单的eval()方法常常很诱人,即使存在一个方法,对于这种情况也不够好。

尝试Mono( http://www.monoproject.org )。 它支持许多脚本语言,包括JavaScript。

如果您不想使用任何脚本,则可以使用CodeDOM或Reflection(请参阅Reflection.Emit)。

这里是有关该主题的有用链接:

通常,本程序对可编写脚本的部分使用脚本语言,即Lua或Javascript。

要回答您的技术问题:您不想编写自己的语言和口译员。 这是您要做的太多工作。 因此,请选择其他语言,例如Python或Lua,然后寻找可让您的C程序将其执行的代码块交给您的文档。 当然,脚本需要能够执行某些操作,因此您需要找到如何将程序的对象暴露给脚本。 另外,如果客户端在数据库中更新其源代码时正在运行该程序,将会发生什么? 客户端应该重新启动吗? 您要将整个程序作为一行存储在此数据库中,还是要存储各个函数? 这会影响您构建更新的方式。

要解决有关您的问题的其他问题:为什么要这样做? 将“解释语言”作为系统设计规范的一部分通常不是一个好兆头。 真正的要求是否是这样的:“我经常更新程序,并且希望用户始终拥有最新副本?” 如果是这样,还有其他更好的方法可以解决此问题(只给我们您的实际情况和要求)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM