CreateInstanceFromAndUnwrap速度和优化

时间:2010-12-15 22:07:04

标签: c# wcf appdomain

我正在开发一个项目,我们必须将包含大量C#静态变量的遗留代码包装到WCF服务中。可以想象,这对于WCF服务来说是一场噩梦,其中请求应该是无状态的。

如果没有重大改写,我可以提出的最佳解决方案是在单独的AppDomain中执行遗留代码,因此它是线程安全的,我使用CreateInstanceFromAndUnwrap()来实现这一点。

我得到了代码工作,但问题是它非常慢,因为现在每个WCF请求都必须在代码开始执行之前将所有20多个DLL重新加载到AppDomain中。

我只是想知道有没有人知道如何优化CreateInstanceFromAndUnwrap()?例如,无论如何我可以在不加载类的情况下预先加载所有程序集,这样每次请求进入时都会重置静态变量吗?

干杯, 奥斯卡

1 个答案:

答案 0 :(得分:0)

如果不知道你怎么能完全按照自己的要求去做,至少我想分享一下我对此事的想法:

  • 你能参加会议状态吗?这不能很好地扩展,但如果您可以为每个会话加载AppDomain,您可以获得良好的响应。这取决于您拥有多少并发用户。
  • 您是否可以使用其他一些用作AppDomains池的方框,从而将创建AppDomain的成本与提供请求分开?
  • 所有静力学如何结合在一起是否具有确定性?他们可能懒得装?也许通过一些反射或动态方法,您可以设法在请求后擦除静态。