跨客户端GUI更新

时间:2014-04-23 22:22:21

标签: c# sql-server multithreading user-interface client

以下是我的简化方案,每个客户端都是局域网上的PC:


Client 1:

Add the maximum number: _
Maximum number: 0

Client 2:

Add the maximum number:
Maximum number: 0

所以客户端1 保存" 1 "作为最大数量,客户端2 应自动接收更新并更改为:


Client 2:

Add the maximum number: _
Maximum number: 1 (last updated by Client 1 on 23/04/2014 at 19:16) 

使用c#winforms和sql sever 2012实现这一目标是最好的方法(用于保存数字)。

1 个答案:

答案 0 :(得分:0)

有很多方法:

1-Polling:每个用户定期向数据库服务器请求更新

    Pros: very easy to implement, secure
    Cons: consumes too much bandwith and db server process

2-Centralized TCP server:专用计算机侦听连接,每个客户端连接到它并通知事件,服务器将这些事件重定向到相应的客户端。

    Pros: minimum bandwith, not much process required
    Cons: more complex to program, need a machine to act as server

3 - 分散式UDP通知:如果客户端位于同一个LAN中,则可以在该网络中广播UDP数据包,这样每个客户端都将收到任何客户端发送的每个通知。

    Pros: minimum bandwith, 0 process required, no need for central server
    Cons: it's not guaranteed a packet arrives it's destination (but in a close LAN usually they do).

所以,这些是最常见的方法,现在你必须平衡你的要求并选择一个。

在您的情况下,我会尝试使用UDP方式,如果您需要确保接收数据包,那么您的客户可以等待事件目标的响应,如果在X时间内他们不接收然后,响应再次广播该数据包,这样您就可以确保接收。