如何在其他应用程序实例上显示一个Windows应用程序实例所做的更改

时间:2016-09-21 16:05:13

标签: c# wpf windows distributed-computing

以下是我的情景:

我必须在C#.NET中开发一个WPF应用程序,它有两个主要用户:Team Lead(TL)和Operating Technician(OT)。此应用程序将在同一网络上的多个单独计算机上运行。操作技术人员将使用该应用程序查看作业编号列表,团队负责人将能够根据需要更新作业编号列表。

我的问题是,我不确定如何在Team Lead制作后向操作技术人员显示这些更改。

在OT和TL的机器上都会运行应用程序的唯一实例。

我的第一个想法是让TL的实例更新数据库并让OT的实例定期检查数据库的更新,但这看起来很笨拙而且设计很差。

有没有办法一旦TL更新了作业号列表,我可以通过网络向OT的实例发送“触发器”,告诉它更新?

5 个答案:

答案 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)

为什么不使用数据库事件来通知客户端数据库更新。

https://msdn.microsoft.com/de-de/library/ms189453.aspx

答案 4 :(得分:0)

我决定尝试使用MQTT协议为不同的应用程序提供发布/订阅服务。这将解决一些问题,因为实际上有多个团队负责人都将拥有自己的操作技术人员。

现在了解如何使用.NET实现MQTT。

任何?