C# WCF Rest异步调用方法

C# WCF Rest异步调用方法,c#,.net,wcf,rest,asynchronous,C#,.net,Wcf,Rest,Asynchronous,我开发了一个类库,它相当于处理密集型,我目前通过WCF REST服务调用它 REST服务直接访问类库的DLL,WCF REST服务或多或少是系统的接口 假设定义了以下方法: 创建请求 启动一个线程,该线程耗时五分钟,但会立即返回进程生成的会话ID,并在完成时向数据库报告该线程使用的会话ID 检查状态 接受会话id并检查数据库以查看进程是否已完成 我不得不认为有更好的方法来“管理”正在运行的线程,但是,我的需求声明用户应该在发出请求时立即收到REST服务的响应 我正在使用WCF消息属性将XML返回

我开发了一个类库,它相当于处理密集型,我目前通过WCF REST服务调用它

REST服务直接访问类库的DLL,WCF REST服务或多或少是系统的接口

假设定义了以下方法:

创建请求

启动一个线程,该线程耗时五分钟,但会立即返回进程生成的会话ID,并在完成时向数据库报告该线程使用的会话ID

检查状态

接受会话id并检查数据库以查看进程是否已完成

我不得不认为有更好的方法来“管理”正在运行的线程,但是,我的需求声明用户应该在发出请求时立即收到REST服务的响应

我正在使用WCF消息属性将XML返回到浏览器,由于此应用程序可以从任何编程语言调用,因此我不能使用经典的WCF和回调(我想,如果我错了,请纠正我)

有时我会遇到一个问题,即发生错误,并且iscomplete事件从未写入数据库,因此“Check Status”方法表示它永远在处理

有没有人对正常情况下应该做什么以及在这种情况下可以做什么有什么想法

谢谢


Jeffrey Kevin Pry

我为导入/处理大型文件实施了类似的流程,老实说,我从来没有遇到过问题。也许解决IsComplete从未设置的原因会使它更有弹性


答案不多,但仍然..

您的服务应在初始请求时返回一个,并提供一种方式供客户端通过标题或作为内容的一部分检查当前状态

当您指示时,客户端将轮询指示的URL以检查当前状态。我还建议在这个响应中添加一点,以防客户机刚刚开始循环


如何在服务器上处理事情取决于您,与REST没有任何关系。首先,我会将所有作为后台线程执行的逻辑放在一个try/catch中,以便在发生错误时返回错误状态,并可能根据情况重试操作。

不确定这是否适用于REST,但在一定的限制条件下,理想的解决方案是使用WCF的双工通信机制进行双工通信