我正在使用ASMX Web服务处理用.NET 3.5编写的一些<gulp>
遗留代码。
Windows服务(称之为FooService)静态缓存ASMX代理,用于响应客户端请求每小时10-30次的Web服务(称之为BarWS)。
成为<gulp>
遗留代码,由于各种原因难以测试。我正在打破依赖关系以使其可测试,这个静态引用让我感到疑惑。自从我使用ASMX以来已经多年了,我记得代理是线程安全的 - 但我想知道它是否会变得不可用,就像单身/共享WCF代理在出现问题并出现故障时一样。
鉴于这种代理的轻量使用(BarWS的调用次数少于30次/小时),我认为在每次调用时创建一个新代理会更安全 - 但我只是想知道我是否会制作一个代理不必要的变化有人知道吗?
P.S。我知道WCF更好,但是现在在这个<gulp>
遗留代码库中迁移到WCF的过多了。
答案 0 :(得分:4)
衡量创建代理所需的时间。如果这是一个错误的优化(我强烈怀疑它是),那么将其更改为基于实例的创建。避免静力学一般都很好。把它放在一个工厂后面,如果你真的想要,至少你仍然可以有单身类型的行为,但这种创造性的行为会被掩盖并独立于客户。