0

我最初的方法是在应用程序 A 的数据库中使用存储过程,在插入时触发以收集其他数据并调用由应用程序 B 托管的 Web 服务,以在那里进行必要的映射和持久性。应用程序 A 和应用程序 B 可能不在同一台机器上。最初的要求是在应用程序 A 端支持 SQL Server 数据库。想到了一个 CLR 存储过程。但是,有人认为调用 Web 服务会在 SQL Server 引擎中产生严重的性能影响,并且还需要提升 DBA 不喜欢提供的过程的权限。

我现在正在考虑在数据库 A 上创建某种形式的引用表的过程以及使用这些数据并在应用程序 B 处理后进行清理的轮询应用程序。但是,我不能不认为还有更好的方法来做这件事轮询数据。

应用程序 A 仅适用于 Windows。应用程序 B 可以是 Windows、UNIX 或 LINUX,因此 Java 显然是这方面的选择。

4

1 回答 1

0

您已经向我们提供了您考虑过的方法列表,但除了这个问题的一句话标题之外,您还没有真正概述您要完成的工作、您的目标是什么等。你能具体说明你的要求是什么吗?

应用程序之间的异步消息传递的标准答案是使用 JMS。每当应审核的事件发生在应用程序 A 中时,应用程序 A 将消息放入队列中,而应用程序 B 被写入以一定速率使用队列中的消息(如果您想要“实时”,那么您可以非常频繁地轮询队列)。然后应用程序 B 可以对这些消息做任何需要的事情——将它们写入数据库,将它们发送到另一个 Web 服务等。

这样,应用程序 A 中的操作(您要审核的内容)和应用程序 B 的行为(您希望如何审核消息)彼此完全分离。这允许您更改任何一方的内容 - 审核新类型的事件、更改消息的有效负载、将消息输出到其他地方等 - 而无需更改另一方。

它还允许您独立地扩展两个应用程序 - 您可以添加更多的 A 实例而不影响 B,A 可以以比 B 消费它们更高的速率产生消息,并且 A 不等待 B 完成消费消息在它能够响应用户的操作之前。

于 2010-08-12T13:14:01.870 回答