局域网应用程序

本文关键字:应用程序 局域网 | 更新日期: 2023-09-27 18:29:56

我有一个由3台电脑组成的局域网。PC1中安装的是MS SQL数据库。这台计算机将充当服务器。

PC2和PC3将各自具有一个桌面应用程序,该应用程序将显示来自PC1的数据。

我的问题是如何使每台电脑(PC2和PC3)都有相同的数据副本。假设在PC2中,员工0001的名字从John更新为Peter,并提交保存。如果不刷新PC3中的应用程序,员工0001的名字仍然是John。

对此,最好的方法是什么?我的编程水平不是很好,但我对所有的建议/概念/示例等都持开放态度。。

谢谢。

局域网应用程序

如果您希望在数据更改后立即更新所有客户端,那么您需要某种轮询或推送的通知系统。

您可以使用例如带有回调合约的WCF来实现推送机制。您的客户端电脑需要实现相关的回调接口,并不断连接到服务器电脑的WCF服务。回调调用实际上可以携带新数据。每个客户端都需要过滤掉由该客户端自己的更改引起的通知。推动机构是一种快速有效的方式。

请检查此stackoverflow答案以获取WCF回调的示例。

Pull机制需要所有客户端应用程序上的后台线程检查服务器是否有更改。您可以使用一个单独的数据库表和一个版本计数器,每当服务器上发生任何更改时,版本计数器都会递增。客户端应用程序将轮询该计数器,与他们拥有的最新版本进行比较,并在发现新版本时更新数据。不过,它的有效性要低得多,因为您需要经常进行轮询,并在每次有新版本时获取所有数据。您可以使版本控制更加复杂,并检测到底发生了什么变化,但对于多个客户端来说,这可能会很快变得复杂。总的来说,它的规模不是很好。不过,它通常比推送更简单,对于数据不多的简单应用程序来说,它就足够了。

您需要告诉其他机器何时更新。这可以通过使用UDP广播在网络上发送简单的消息来实现。然后另一台电脑可以执行其刷新方法。

好的utivich。。。这实际上与web应用程序是一样的。这是一个常见的问题。通常,其他客户端在重新加载记录之前都会有过时的数据,或者在保存时,服务器可能会根据sql时间戳对过时的数据抛出异常。但是,使用桌面应用程序,您可以设置一个带有事件通知的系统,就像聊天应用程序一样,服务器将事件推送给订阅者,客户端将能够更新记录或您需要做的任何事情。