繁体   English   中英

构建该轮询Windows服务的哪个选项更好?

[英]Which option for building this polling windows service is better?

我的团队正在编写Windows服务,该服务需要从第三方系统轮询数据(第三方系统提供了我们使用的Web服务)。
该过程将如下所示:
1.呼叫第三方WS
2.将收到的原始数据保存到我们的数据库中
3.处理原始数据
4.将处理后的数据保存到我们的数据库中
5.重复

团队同意我们实际上有两种不同的逻辑运算:
1.获取和保存原始数据
2.处理原始数据并保存结果

我们正在尝试确定以下哪个设计选项更好:
选项1:在同一个Windows服务上执行两项操作,每个操作均在其自己的线程上
选项2:在Windows服务上执行第一个操作,并为第二个操作异步/单向调用wcf服务

您认为哪种选择更好?
如果您认为自己有更好的选择,请分享。

谢谢。

这取决于。

假设您有一个显然是顺序的过程,为什么还要使用单独的线程读取然后处理数据? 最简单的方法是在读取,处理和大概等待某个时间的地方循环一个线程,这样您就不会受到第三方的限制。

但是,如果处理需要很长时间,则可能需要在单个轮询线程和一组处理数据的工作器之间分配工作。

最简单的选择通常是您最初实施的正确选择。 在需要之前添加线程和WCF服务调用很少是正确的选择。

为了提供更好的答案,您确实需要提供更多信息:第三方服务是否会限制您一次可以拨打多少电话或您拨打电话的速度如何,处理需要多长时间,您需要多久轮询一次, ...

根据您的评论,我想说您有一个线程,该线程每秒轮询一次第三方服务并启动两个任务。

任务1将原始数据存储到数据库。 任务2将处理原始数据并将结果存储在数据库中。

如果轮询线程检索到1000个条目,则应立即进行轮询,没有延迟。

您可以使用System.Threading.ThreadPool或System.Threading.Tasks.Task。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM