局域网应用

时间:2012-04-03 13:54:25

标签: c#

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

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

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

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

感谢。

3 个答案:

答案 0 :(得分:2)

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

您可以使用例如具有回调契约的WCF来实现推送机制。您的客户端PC需要实现相关的回调接口,并始终连接到服务器PC的WCF服务。回调调用实际上可以携带新数据。每个客户端都需要过滤掉客户自己更改产生的通知。推送机制快速有效。

检查this stackoverflow答案,例如WCF回调。

Pull机制需要所有客户端应用程序上的后台线程检查服务器是否有更改。您可以使用带有版本计数器的单独数据库表,每次服务器上发生任何更改时,该计数器都会增加。客户端应用程序将轮询该计数器,与其拥有的最新版本进行比较,并在发现新版本时更新数据。它是一种效率低得多的机制,因为您需要经常进行轮询并在每次有新版本时获取所有数据。您可以使版本控制更复杂,并检测到哪些内容确实发生了变化,但是多个客户端可能会很快变得复杂总体而言,它不能很好地扩展。它通常比推送更简单,对于没有太多数据的简单应用程序来说就足够了。

答案 1 :(得分:0)

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

答案 2 :(得分:-2)

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