以下是我的情景:
我必须在C#.NET中开发一个WPF应用程序,它有两个主要用户:Team Lead(TL)和Operating Technician(OT)。此应用程序将在同一网络上的多个单独计算机上运行。操作技术人员将使用该应用程序查看作业编号列表,团队负责人将能够根据需要更新作业编号列表。
我的问题是,我不确定如何在Team Lead制作后向操作技术人员显示这些更改。
在OT和TL的机器上都会运行应用程序的唯一实例。
我的第一个想法是让TL的实例更新数据库并让OT的实例定期检查数据库的更新,但这看起来很笨拙而且设计很差。
有没有办法一旦TL更新了作业号列表,我可以通过网络向OT的实例发送“触发器”,告诉它更新?
答案 0 :(得分:0)
您可以在操作技术人员的计算机上拥有TCP侦听服务,并在Team Lead的计算机上拥有TCP客户端 http://www.codeproject.com/Articles/2418/Making-Socket-Based-Application-Using-TcpListener
答案 1 :(得分:0)
您可以在WPF应用程序中托管WCF服务(例如此处为described)。该服务将在OT机器的某个端口上运行,并将侦听来自TL机器的传入事件(应该知道OT机器的地址和端口)。当然,仍需要数据库来共享数据,但不需要轮询该数据库。
答案 2 :(得分:0)
也许最简单的解决方案是使用某种消息总线,例如RabbitMQ或ZeroMQ,处于发布/订阅模式。 OT的实例将订阅一个主题,TL的实例将发布包含作业号的更新。
答案 3 :(得分:0)
为什么不使用数据库事件来通知客户端数据库更新。
答案 4 :(得分:0)
我决定尝试使用MQTT协议为不同的应用程序提供发布/订阅服务。这将解决一些问题,因为实际上有多个团队负责人都将拥有自己的操作技术人员。
现在了解如何使用.NET实现MQTT。
任何?