1

我目前正在做一个项目,这个项目基本上是一个网站,它作为它的主要功能,运行一个很长的计算任务(这个任务由1-10个子任务组成)-(大约需要30-40秒才能完成平均而言)并向用户返回结果,因为它的代码在站点本身中使用了多线程(我不太喜欢这个想法),因此该站点在单击按钮后继续运行,而这个线程在后台继续计算。

理想情况下,我希望将此计算移至单独的服务中,以停止与在 Web 应用程序中运行线程相关的问题。我的想法是它应该是一个单独的服务,每 X 秒运行一次,以查看数据库中是否存在任何作业,如果有,运行它们,但我在编写重复出现的 Windows 服务方面经验不足,想知道是否有人对此事有任何想法,这是执行此类任务的正确方法吗,是否有人有做类似事情的经验,有人可以推荐我应该继续进行的任何特定方法吗?

4

2 回答 2

0

我正在做一个类似的项目。我正在考虑像您一样创建一项服务,但我没有看到我的案例的好处。我必须进行一些长时间的计算,并将其放入缓存中。我不知道这是否是最佳实践,但我所做的是在 global.asax 上创建一个计时器,执行我的计算并将其放入缓存中。当请求到来时,我给出最后一个缓存的值。

我希望这对你有帮助。

于 2012-10-16T10:46:06.587 回答
0

在这种情况下,我总是更喜欢创建一个接受来自客户端的请求的 tcp 侦听器。如果我使用 .net,我的首选是带有 tcp 或命名管道绑定的 wcf 服务。然后当我收到请求时,我启动一个线程来处理请求。当长时间运行的进程最终结束时,我向客户端返回一个回调,该回调是在对调度程序的第一个请求中指定的 url。恕我直言,这是最好的方法。

但是,您可能希望在 NServiceBus、RhinoBus 等经过验证的框架上构建您的应用程序。您也可以在它们上实现相同的业务。

于 2013-10-06T11:01:50.310 回答