AppDomain通信和性能

pet*_*ace 7 c# reflection performance appdomain

我正在托管一个WCF服务,其中的要求是调用一个WCF服务未直接引用的类型的对象,并在其上运行一些(常见的)方法.所以类型是通过反射和AssemblyResolve创建的:这没关系.

但后来我开始思考 - 我们预计可能会有50到100个这样的装配/类型到货,特别是当我们对它们进行版本控制时.由于所有这些程序集都在mem中引用,因此这应该是膨胀(仍然在理论上而不是实践中)服务主机应用程序的内存和性能.

所以我们应该卸载:但唯一的方法是通过appdomain.我们的想法是,每个程序集都会以某种方式运行在它自己的appdomain中,而WCF服务实际上只是将消息传递给相应的appdomain.如果appdomain未用于some_period_of_time,那么我们只需卸载appdomain即可.

我可能会因此而被标记下来,但是一些指导对我们有用:

  1. 这是一个疯狂的想法吗?
  2. 该进程应该在内存中运行~100个程序集吗?
  3. 与appdomains的通信可能会花费一些成本(通过远程处理/命名管道):这是否取消了这个想法的资格?
  4. 创建一个appdomain基本上服务一种类型的.dll会涉及很多appdomains,这是否会延迟?

我没有这方面的经验.如果我不做这样的事情,我担心的是应用程序的大小和性能.然而,根据应用领域的想法,这基本上听起来像是大规模的过度工程.托管这个未知的.dll的要求不是我可以改变的.

我想我的整体问题是:

这个想法听起来像是愚蠢的,与它相关的专业人士/骗子是什么?

Hen*_*man 2

当内存中有大约 100 个程序集时,该进程应该运行良好吗?

您必须尝试(创建模型很容易),但您只能使用代码。因此,如果每块 1 MB,您将使用 100MB 的可丢弃内存,我预计不会出现问题。

前提是您的实例已释放并收集。