我目前正在集思广益地思考如何在程序运行时升级它。(调试时不使用“生产”系统。)
但是,它需要的一件事是将修改后的源代码或已编译的字节代码实际提交到运行过程中。
伪码
var method = typeof(MyClass).GetMethod("Method1");
var content = //get it from a database (bytecode or source code)
SELECT content FROM methods WHERE id=? AND version=?
method.SetContent(content);首先,我想要实现该系统不需要复杂的面向对象的工作.这就产生了以下要求:
使用.NET (和其他人),我可以通过IoC注入一个类,从而更改源代码。但是加载会很麻烦,因为所有的东西都必须在程序集中或者通过发射来创建。也许用Java会更容易些?我认为整个ClassLoader是可以替换的。
有了JavaScript,我可以实现许多目标。简单地评估一个新函数(MyMethod_V25)并将其分配给MyClass.prototype.MyMethod。我想我们也可以用"del“来降低函数。
哪个通用平台能处理这些事情?
发布于 2009-05-17 14:58:13
在Java中,您有一个OSGi项目,它帮助您升级和更改应用程序的模块,而不涉及其他模块。
如果您不介意学习不同的东西,那么二郎编程语言是从底层设计的,考虑到了这种类型的应用程序。
发布于 2010-03-27 14:52:13
我认为任何基于图像的语言都会支持这一点。我知道Common是这样做的,因为它可能是最常见的部署Lisp web应用程序的方式之一,但我怀疑它在Smalltalk中也会同样工作。
发布于 2009-05-17 14:31:59
大多数动态语言都具有此功能。看看Ruby:您可以在运行时修改现有的方法等等。当IronRuby退出时,您也可以在.Net平台上这样做。
https://stackoverflow.com/questions/874706
复制相似问题