【问题标题】:LAN Application局域网应用
【发布时间】:2012-04-03 13:54:25
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

    标签: c#


    【解决方案1】:

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

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

    检查thisstackoverflow 答案,例如 WCF 回调。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2018-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多