私は、4 つの異なる Web サービスを呼び出し、ビジネス ロジックを実行し、それらをアプリケーション エンティティに変換する WCF (C#4、VS2010) を作成しています。これらの 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 を呼び出してビジネス ロジックを非同期に実行する最良の方法は何ですか?