【发布时间】:2011-06-20 17:49:27
【问题描述】:
我正在使用一些<gulp>遗留代码使用 ASMX Web 服务以 .NET 3.5 编写。
Windows 服务(称为 FooService)为 Web 服务(称为 BarWS)静态缓存一个 ASMX 代理,它每小时响应客户端请求约 10-30 次调用该代理。
作为<gulp> 遗留代码,由于各种原因,测试起来非常困难。我正在打破依赖关系以使其可测试,这个静态引用让我想知道。自从我使用 ASMX 以来已经有好几年了,我记得代理是线程安全的 - 但我想知道它是否会变得不可用,就像单例/共享 WCF 代理在出现问题并出现故障时一样。
鉴于此代理的轻量使用(BarWS 的调用次数少于 30 次/小时),我认为在每次调用时创建一个新代理会更安全 - 但我只是想知道我是否会创建一个不必要的改变。有人知道吗?
附:我知道 WCF 更好,但是现在在这个 <gulp> 旧代码库中迁移到 WCF 的变化太大了。
【问题讨论】:
-
legacy和.NET 3.5...哇...我感觉老了! :) -
斜体两次的legacy code有什么意义?
-
@James:您不必将服务更改为 WCF,但可以考虑更改为使用“服务引用”而不是“Web 引用”。
-
遗留代码的一个定义是没有测试的代码,因此您也可以在 .NET 4.0 中轻松编写遗留代码
-
公平地说,大部分遗留代码是用 .NET 2.0 编写的,随后又重新编译。斜体强调的更多是 legacy 是一种俚语,表示非常糟糕的未经测试的代码(参见 Michael Feathers 的开创性“使用遗留代码”,它推广了这个定义)。假设这个代理出现在一个包含 8000 行代码的方法的类中......
标签: c# web-services asmx