我必须使用我没有构建且无法控制的 .net 2.0 时代的 .asmx Web 服务。然而,该服务是高度可用的并且可以处理这个问题。
我需要帮助的是客户端,并从并发的角度正确使用 Visual Studio 生成的客户端代理。目前我正在使用 Web 参考,但如果需要,可以切换到服务参考。我对 WCF 一无所知。
我读得越多,我就越迷惑自己。
我的具体问题:
给定一个 Visual Studio 生成的 soap 客户端代理,它产生以下方法:
Foo();
FooAsync();
FooCompleted;
Bar();
BarAsync();
BarCompleted;
- 我应该/可以从多个线程中调用 Foo(),例如在 Parallel.ForEach 中吗?
- 我应该/我可以在并行 foreach 中调用 FooAsync() 吗?这似乎是多余的,因为我已经在另一个线程上?这样做安全吗?
- 我应该/可以在一个线程上调用 FooAsync(),同时在另一个线程上调用 BarAsync() 吗?
- 这些生成的soap 服务类似乎实现了EAP 模式。我是 pfx/tpl 的新手,但我一直在将任务视为一种更好地管理其中一些的方法?我已经看到了如何使用 TaskCompletionSource 将 EAP 与 Task 包装的示例。这是更好的方法吗?