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); 
   }
}

问题是 - GetTask 没有在服务端执行,而所有 SubmitTask 操作都已完成,所以我只得到客户端的最后一个任务状态。在这种情况下如何实现异步操作?

提前致谢!

4

1 回答 1

3

你读过这篇有趣的小文章吗?调整 WCF 以构建高度可扩展的异步 REST API以及以下非常好的文章,希望能提供您想要的答案修复 WCF 以构建高度可扩展的异步 REST API

于 2013-05-17T08:02:09.800 回答