日期:2014-05-20  浏览次数:20992 次

关于AppDomain静态变量共享的问题
在一个程序中,需要分别加载多个DLL

这些DLL需要独立运行,但是又需要共同引用一些公共的基础DLL。

场景:用Exe作为宿主进程,管理多个WCF服务。对它们进程打开、关闭、回收等操作。

1、如果不用AppDomain,则所有DLL只有一份,基础DLL中的静态属性会被覆盖,从而相互影响。
2、用了AppDomain之后,基础DLL虽然可以分别引用,但是静态变量依然是共享的,会被覆盖。
wcf AppDomain

------解决方案--------------------
引用:
1、如果不用AppDomain,则所有DLL只有一份,基础DLL中的静态属性会被覆盖,从而相互影响。

如果这个一定要纠结,那么就应该进行进程管理,而不是搞什么“一个程序中加载多个DLL”了。

进程管理、启动或者杀掉进程很简单啊?!
------解决方案--------------------
实际上,要设计一个“集中的数据总线服务系统”,你又想控制那么多东西,那么你应该设计高层次的抽象层次,就好像一个集线器/代理服务器一样。如果你打算弄一些WCF就算是“数据总线服务”了,那么我想这恐怕也太低级了。