目前,我正在开发一个.NET爱好项目,该项目涉及与彼此组合的对象的复杂系统。但是,我遇到了一个小问题,我无法在.NET中找到支持在运行时替换代码的机制,并且能够处理先前加载的旧代码。这意味着动态地替换模块/对象,并且几乎立即向用户显示更改,例如,当他重新启动一个过程时,而不是整个程序。.NET中的模块化系统可以在运行时进行更改
我已经考虑过为每个会话单独设置AppDomain
并将必要的程序集加载到其中的可能性,但这看起来有点太昂贵。我还应该提到,每个会话都从一个常见的程序集基础中受益,例如,连接到数据库,这意味着将这些类加载到每个会话中。来自单独的AppDomain
来回编组数据还表示额外开销(可以在数据通过网络发送到客户端应用程序时使用,代码为管理会话的主要AppDomain
中包含的代码)。
是否有一个框架或方法来取代/卸载特定部分的代码?它如何在现实世界的应用程序中完成?有没有解决方法?或者我选择了一套错误的工具?
我认为'MEF'是一个选项,但我必须再次自己做'AppDomain'管理。 – ax1mx2 2014-09-10 14:18:00