C# 局域网应用

C# 局域网应用,c#,C#,我有一个由3台PC组成的局域网。安装在PC1中的是MS SQL数据库。这台计算机将充当服务器 PC2和PC3各有一个桌面应用程序,用于显示来自PC1的数据 我这里的问题是如何使每台PC PC2和PC3具有相同的数据副本。 假设在PC2中,员工0001的名字从John更新为Peter并提交保存。在不刷新PC3中的应用程序的情况下,员工0001的名字仍然是John 最好的方法是什么?我的编程水平不是很好,但我愿意接受所有建议/概念/示例/等等 谢谢。嗯,utivich……这与web应用程序实际上是一

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

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

我这里的问题是如何使每台PC PC2和PC3具有相同的数据副本。 假设在PC2中,员工0001的名字从John更新为Peter并提交保存。在不刷新PC3中的应用程序的情况下,员工0001的名字仍然是John

最好的方法是什么?我的编程水平不是很好,但我愿意接受所有建议/概念/示例/等等


谢谢。

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

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

如果您想在数据更改后立即更新所有客户端,则需要某种通知系统,以轮询或推送方式进行

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

检查stackoverflow应答以了解WCF回调的示例

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