使用 WS 寻址的异步 Web 服务
Posted
技术标签:
【中文标题】使用 WS 寻址的异步 Web 服务【英文标题】:Asynchronus Web service using WS Addressing 【发布时间】:2010-09-21 22:36:56 【问题描述】:我需要实现一个启用 WCF WS 寻址的 Web 服务,该服务基于方法的参数执行长时间运行的进程。
客户端不需要等待结果,因为它会直接传递到数据库表中。但是,Web 方法确实需要返回一个“跟踪 ID”号(实际上是一个 GUID),以便客户端可以使用它来从数据库中检索结果。
-
Web 方法只接受接收到的参数,创建一个新的 GUID 并将所有这些信息存储在数据库表(或 MSMQ 队列)或类似的东西中。然后它将跟踪 GUID 返回给客户端。外部服务(可能是 Windows 服务)会不断轮询“收件箱”,为每个请求执行长时间运行的过程,并生成结果并响应回调服务
提前致谢
塞卡
【问题讨论】:
【参考方案1】:你的问题是什么?但是根据您的描述,网络服务本身并不是异步的。在 java webapp 中,我会像这样实现一个简单的 webapp:
存储数据、启动线程并返回 guid 的 Web 服务 线程执行长期任务并为其 guid 存储结果 一个 web 服务返回一个 guid 的结果,如果还没有完成的话。最佳实践是为长期任务使用自己的守护线程组,每个线程都以 guid 命名。覆盖组的 uncaughtException() 方法以将异常存储为任何错误的 guid 的结果。
【讨论】:
以上是关于使用 WS 寻址的异步 Web 服务的主要内容,如果未能解决你的问题,请参考以下文章
使用 WS 安全性在 WCF .NET 中向 Java Web 服务发送请求