使用WS Addressing的异步Web服务

时间:2008-11-12 06:35:31

标签: wcf ws-addressing

我需要实现一个启用了WCF WS Addressing的Web服务,该服务根据方法的参数执行长时间运行的过程。

客户端不需要等待结果,因为它将直接传递到数据库表。但是,Web方法确实需要返回“跟踪ID”号(实际上是GUID),因此客户端可以使用它来从数据库中检索结果。

  1. Web方法只接受收到的参数,创建一个新的GUID并将所有这些信息存储在数据库表(或者那个问题的MSMQ队列)或类似的东西中。然后它将跟踪GUID返回给客户端。外部服务(可能是Windows服务)将不断轮询“收件箱”,为每个请求执行长时间运行的流程,并生成结果并响应回调服务
  2. 提前致谢

    谢卡尔

1 个答案:

答案 0 :(得分:2)

你的问题是什么?但是根据您的描述,Web服务本身并不是异步的。在java webapp中,我将实现一个简单的webapp:

  • 存储数据的web服务,启动一个线程并返回guid
  • 线程执行长期任务并存储其guid的结果
  • web服务返回guid或fould的结果,如果还没有完成。

最佳做法是为长期任务使用自己的deamon线程组,每个线程都使用guid命名。重写组的uncaughtException()方法,将异常作为guid的结果存储在任何错误中。