0

现在,我有一个像这样工作的程序。旧的遗留系统将一行放入数据库。该行是状态 0。我在 .Net 中有一个 Windows 控制台应用程序,它每 5 秒检查一次数据库,并向打印机发送打印命令。

这种架构确实消耗了大量运行控制台应用程序的计算机上的资源。本质上,有大量的空命令可以运行。仅偶尔将打印命令放入数据库中。但是,一旦数据库获得打印命令,程序就需要尽快处理它。

关于如何使这项工作更好的任何建议?我认为按需的东西可能会更好 - 即遗留系统向我的程序发送某种信号。不知道如何做到这一点。

任何帮助都是极好的。

4

1 回答 1

0

使用消息队列?

将通知从 SQL 通过 MSMQ(?) 推送到应用程序。从触发器创建和发送消息,或者如果适用,从存储过程创建和发送消息。消息可以像字符串一样简单。一个例子可以在这里找到

轻量级,对性能的损害比与应用程序直接通信要小。还消除了应用程序轮询更改的需要。

下一个改进可能是将控制台应用程序更改为作为服务运行,因此它不需要 UI,并且可以预期(在范围内)始终运行。

进一步的改进可能是拆分控制台应用程序(或服务)并将性能重的部分分配给不同盒子上的专用实例。只需重新路由这些任务的消息,对 SQL 实例透明。

无需更改旧版应用程序,它允许逐渐发展出耦合度更高的可扩展解决方案。

于 2013-10-22T15:45:37.480 回答