2010-12-15 134 views
1

我工作的一个项目,我们必须包装,其中包含大量的C#静态变量为WCF服务的一些遗留代码。正如你可以想象的,这对于WCF服务来说是一场噩梦,其请求应该是无状态的。CreateInstanceFromAndUnwrap速度和优化

没有主要的重写,我可以想出的最好的解决方案是在单独的AppDomain中执行遗留代码,因此它是线程安全的,我使用CreateInstanceFromAndUnwrap()来实现此目的。

我得到的代码工作,但问题是,它是相当缓慢的,因为现在每一个WCF要求它必须重新加载所有的DLL 20+成的AppDomain之前的代码,甚至开始执行。

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

干杯, 奥斯卡

回答

0

短期知道你怎么能这样做,你问什么了,至少我想分享对此事我的想法:

  • ,你可以去会话状态?这并不能很好地扩展,但如果你可以为每个会话加载一个AppDomain,你可以得到很好的响应。这取决于您拥有多少个并发用户。
  • 你可以有作为的AppDomain池,从而分离创造从服务请求的AppDomain的成本一些其他的盒子?
  • 它是一种确定性的所有静态怎么走到一起的?他们可能是懒惰装载?也许有一些反思或动态方法,你可以设法在请求后擦除静态。