在Windows服务和Web应用程序之间进行选择

时间:2013-06-18 20:10:22

标签: asp.net windows-services

我们有一个ASP.NET网站,用户将项目添加到数据库。 在同一台服务器上有几个站点,每个站点都有自己的数据库。

我需要实现一种机制来检查数据库中每个项目的状态。 如果项目未处理,请将其提交给第三方Web服务。

我看到两个选项:

  1. 将代码放入webapp
  2. 将代码放入Windows服务
  3. 第一个选项的优点是代码知道要连接的数据库。

    使用Windows服务时,必须了解所有数据库,因此维护起来比较困难。此外,如果我只有一个Windows服务,则必须使用线程并行处理每个数据库中的项目。

    也许这两种方式还有另一种方法吗?

    还有哪些问题,你会推荐什么? 请解释你的选择。

2 个答案:

答案 0 :(得分:1)

这听起来像是一个涉及消息队列的好地方。每个项目都将包装成一条消息并放入队列中。 “项目处理器”(服务?)将订阅队列并在每个项目到达时执行一些工作。消息如何放在队列中取决于您,但是举个例子,您可以让每个站点将“新项目”消息发布到队列中。

一开始,队列可能是一个令人生畏的概念,但MassTransit等框架可以提供帮助。非常值得学习。

答案 1 :(得分:0)

我认为与Web应用程序相比,Windows服务是一个不错的选择,主要是因为某个Web应用程序必须由某人手动触发,而Windows服务可以随时运行,检查更新。

如果您可以访问每个现有网站的代码,还有另一种选择。为什么不编写将向第三方Web服务提交数据的Web服务。然后在每个现有网站中,修改存储数据库中更改的逻辑,以便将更改发布到自定义Web服务(甚至跳过自定义WS并直接调用第三方)。