Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services WCF和带线程的任务_Web Services_Multithreading_Soa_Scheduled Tasks_Pool - Fatal编程技术网

Web services WCF和带线程的任务

Web services WCF和带线程的任务,web-services,multithreading,soa,scheduled-tasks,pool,Web Services,Multithreading,Soa,Scheduled Tasks,Pool,我想使用WCF编写一些web服务 我想在我的web服务中有一个线程池。 例如,我有将近6gb的数据需要处理 我希望客户端调用webservice上的一个操作,并创建一个新任务或线程。客户端能够调用ListRunningTasks;并让Web服务返回任务列表。如果任务花费的时间太长,客户端应该能够强制终止任务,例如KillTaskint taskID;或者别的什么。我以前做过一些线程,但不是在WCF或没有状态的服务中。这可能吗?如果是这样,人们将如何着手实施这样一件事?任何阅读,链接或建议都会很好

我想使用WCF编写一些web服务

我想在我的web服务中有一个线程池。
例如,我有将近6gb的数据需要处理

我希望客户端调用webservice上的一个操作,并创建一个新任务或线程。客户端能够调用ListRunningTasks;并让Web服务返回任务列表。如果任务花费的时间太长,客户端应该能够强制终止任务,例如KillTaskint taskID;或者别的什么。我以前做过一些线程,但不是在WCF或没有状态的服务中。这可能吗?如果是这样,人们将如何着手实施这样一件事?任何阅读,链接或建议都会很好

谢谢,迈克。

你应该考虑使用创建这样的服务。状态机工作流可以作为服务公开,这样当调用方法A时,它将启动工作流任务,之后可以调用方法来停止、挂起或查询正在运行的任务。WF将处理状态转换,防止非法状态更改,并确保仅在必要时启动新任务

请注意,WF将以几乎透明的方式为您处理线程问题。

一种可能的解决方案:

为您的未完成任务实现显式队列,并考虑到它们在编写时需要20-30分钟的时间

构建一个自定义组件来管理这些队列,例如,您甚至可能希望能够持久化队列、在重新启动服务时恢复工作等

已显式创建从这些队列拾取工作的工作线程

实现WCF服务,使队列管理器可供外部系统使用


线程池更适合处理大量短期运行的任务。

我需要处理近6gb的数据。-这样的任务运行max需要多长时间?正如John所写,这可以由WWF完成。然而,根据你的任务,WWF可能有点过火。我不知道怎么做的主要事情是处理国家。WCF是无状态的。什么是显式队列?这是一个.Net的东西吗?我找不到关于那个的任何东西。此队列如何具有状态?感谢您的回答,什么是显式队列-只是一个存储未完成任务的对象。明确表示您自己创建一个队列来管理该队列。WCF是无状态的,但这并不意味着您的整个过程必须是无状态的。