我正在编写一个 WCF(C#4, VS2010),它调用 4 个不同的 Web 服务,执行业务逻辑并将它们转换为应用程序实体。这些ws调用、总线逻辑和实体转换是相互独立的。平均响应时间约为 4 秒。
使用 TPL 异步执行上述操作并没有帮助(在减少响应时间方面,实际上 id 增加了约 100 毫秒);伪代码如下:
Task<Plan> planAsync = Task<Plan>.Factory.StartNew(() => return CallSvcAndGetPlanEntity());
Task<Claim> claimAsync = Task<Claim>.Factory.StartNew(() => return CallSvcAndGetClaimEntity());
Task<Account> accounAsync = Task<Account>.Factory.StartNew(() => return CallSvcAndGetAccountEntity());
//Some business logic here in loop.
Task.WaitAll(planAsync, claimAsync, accountAsync);
Plan p = planAsync.Result;
更新: 我在上述每个 CallSvc() 方法中引入了 2Sec 的 Thread.Sleep。异步方法响应时间仍为 4.1 秒线性方法响应时间高达 ~7 秒。
我错过了什么吗?异步调用 WS 和执行业务逻辑的最佳方法是什么?