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

Jam*_*rld 5 c# web-services asmx

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

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

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

鉴于这个代理的使用很少(BarWS被称为少于30次/小时),我认为在每次调用时创建一个新的代理会更安全 - 但我只是想知道我是否会做出不必要的改变.谁知道?

PS我知道WCF更好,但是现在在这个<gulp>遗留代码库中迁移到WCF的变化太大了.

Tim*_*oyd 5

测量创建代理所需的时间。如果这是一个错误的优化(我强烈怀疑它是),那么将其更改为基于实例的创建。避免静电通常是好的。把它放在工厂后面,如果你真的想要的话,至少你仍然可以有单例类型的行为,但是这种创建行为将被屏蔽并独立于客户端。