0

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

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

我看到两个选项:

  1. 将代码放入 webapp
  2. 将代码放入 Windows 服务

第一个选项的优点是代码知道要连接到哪个数据库。

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

也许除了这两个之外还有另一种方法?

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

4

2 回答 2

1

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

队列起初可能是一个令人生畏的概念,但诸如MassTransit 之类的框架可以提供帮助。很值得学习。

于 2013-06-18T20:19:48.960 回答
0

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

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

于 2013-06-18T20:26:12.427 回答