使用单例ASMX Web服务代理是否可以?

时间:2011-02-03 15:04:26

标签: c# web-services asmx

我正在使用ASMX Web服务处理用.NET 3.5编写的一些<gulp> 遗留代码

Windows服务(称之为FooService)静态缓存ASMX代理,用于响应客户端请求每小时10-30次的Web服务(称之为BarWS)。

成为<gulp> 遗留代码,由于各种原因难以测试。我正在打破依赖关系以使其可测试,这个静态引用让我感到疑惑。自从我使用ASMX以来已经多年了,我记得代理是线程安全的 - 但我想知道它是否会变得不可用,就像单身/共享WCF代理在出现问题并出现故障时一样。

鉴于这种代理的轻量使用(BarWS的调用次数少于30次/小时),我认为在每次调用时创建一个新代理会更安全 - 但我只是想知道我是否会制作一个代理不必要的变化有人知道吗?

P.S。我知道WCF更好,但是现在在这个<gulp>遗留代码库中迁移到WCF的过多了。

1 个答案:

答案 0 :(得分:4)

衡量创建代理所需的时间。如果这是一个错误的优化(我强烈怀疑它是),那么将其更改为基于实例的创建。避免静力学一般都很好。把它放在一个工厂后面,如果你真的想要,至少你仍然可以有单身类型的行为,但这种创造性的行为会被掩盖并独立于客户。