5

私はWCFレストサービスを構築しており、それはクライアントです。私は、クライアントがサービスについてあまり知らないことを計画しています。メソッドを呼び出すための適切な URL と期待される結果です。

私のサービス契約は次のとおりです。

[WebInvoke(Method="POST", UriTemplate="/tasks")]
[OperationContract]
void SubmitTask(Transaction task);

[WebGet(UriTemplate = "/tasks/{taskId}")]
[OperationContract]
[XmlSerializerFormat]
Transaction GetTask(string taskId);

SubmitTask は次のように実現されます。

SubmitTask(Transaction task)
{
   DoSomethingWithTask(task);
   task.Status = "SomeStatus";
   DoSomethingElseWithTaks(task);
   task.Status = "SomeOtherStatus";
}

クライアントに期待すること:

ButtonClick()
{
   SubmitTask(task);
   while(true)
   {
      string status = Transaction GetTask(task.taskId).Status;
      Textbox.Text+= status;
      if(status==ok)
         break;
      Thread.Sleep(1000); 
   }
}

問題は、すべての SubmitTask 操作が完了している間、サービス側で GetTask が実行されないため、クライアント側で最後のタスク ステータスのみを取得することです。この状況で実行する非同期操作を実現するにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

3

この興味深い小さな記事を読みましたか? 非常にスケーラブルな非同期 REST API を構築するために WCF を微調整し、次の記事は非常に優れており、希望する答えが得られることを願っています。非常にスケーラブルな非同期 REST API を構築するために WCF を修正する

于 2013-05-17T08:02:09.800 に答える