更新客户端PC与彼此的活动(插入,更新,删除)

时间:2012-02-26 13:00:39

标签: c# sql winforms client-server

我正在使用带有SQL Server 2008的C#.NET Winforms开发客户端 - 服务器应用程序。客户端PC通过LAN连接到数据库服务器。

我想要实现的任务是在一台客户端PC上执行插入(或更新或删除)时,所有其他客户端必须实时获取该更新。

我目前正在使用计时器,因此每个客户端每15秒查询一次数据库,然后刷新gridviews,组合框和列表框。但这会使应用程序变得缓慢而笨重。

在这种情况下使用的正确方法是什么。什么是这样的操作(正确的术语)?我应该使用Windows服务吗?或与后台线程相同的应用程序?

2 个答案:

答案 0 :(得分:2)

首先,它的Windows,所以它永远不可能是实时的。

Igby Largeman建议的解决方案很有可能。它的缺点是它可能导致非常繁重的网络流量,因为每次数据库中的某些变化时,它都会被广播给所有客户端。

您还必须考虑某些事情堵塞服务器与一个或多个客户端之间的通信的可能性,因此实时性是不可能的。

答案 1 :(得分:1)

这太棘手了! 如果您真的希望在PCA上打开网格的用户看到插入PCB上的数据而不执行任何操作,则需要一个计时器来刷新网格。但我不认为这是一个很好的方法,你可以很容易地超载系统。

此处的良好做法是仅显示由于操作而导致的数据。例如,假设您想要更改客户端的名称。您可以构建一个带有网格的搜索表单,用户可以在其中通知搜索参数(过滤数据),一旦找到并更改了客户端,就会对数据库执行另一次搜索以获取并显示新数据。

但是让我们说另一个用户在执行更改之前打开了相同的网格显示客户端。它显示旧值,但是一旦点击它以查看详细信息,您将执行搜索到DB以获取新数据,这样就可以了。