构建客户端 - 服务器Windows应用程序

时间:2012-01-12 22:10:56

标签: c# mysql client-server

我正在尝试使用以下方法构建客户端 - 服务器应用程序:

c#,MySql Server

这个想法是<我有两台PC(客户端)连接到另一台PC(服务器)

如下所示:enter image description here

我的问题:

  1. 如何在更改表格时在两个客户端中显示实时数据,视图将在另一台PC上更改
  2. 如何构建一种方法来管理客户端对共享资源(db)的访问以防止错误 -

    编辑:我不需要源代码,只需要通过路径过马路

3 个答案:

答案 0 :(得分:1)

有两种广泛的方法可供选择。

1)让每个客户端定期轮询服务器以获取更新。不推荐但易于实施。
2)让服务器通知客户端有变化。实现效率更高,但实施起来可能很棘手。

答案 1 :(得分:1)

要通知客户其他客户的更改,您应该执行以下操作:

  1. 除了你的连接线程,你应该存储对所有当前连接的客户端的引用,在某种同步集合中(以确保没有竞争条件)。
  2. 现在,如果任何客户端提交任何更改,服务器将迭代其他客户端,并通过“实体X已更改,您应该再次加载”消息或仅通过推送更新来通知每个客户端有关更改实体到客户端,希望客户能做出相应的反应。
  3. 如果您使用第一种方法,客户现在可以选择加载更新的实体,也可以在下次访问时加载它。第二种方法将强制客户端缓存数据(或者不是,因为客户端可能只是缓存ID并在另一时间重新加载实体,就像服务器刚刚通知它有关更新一样,如第一种方法)。 LI>

    如果您(无论出于何种原因)不信任数据库的并发访问安全性,您应该使用类似单线程任务队列的东西(在最简单的情况下......有更多优化方法,允许并行读取操作并优先考虑,但实施真的痛苦。)

答案 2 :(得分:0)

首先,您可能需要考虑一个与客户端和数据库(ASP?,COM?,Custom Built?)交互的中间层。否则,各个客户端很可能需要计时器来检查数据库上次更新的时间。

AFA共享问题,它是一个数据库。数据库是为并发访问而设计的,所以......不确定错误部分。我正在使用c#,并且非常担心,ADO.NET具有连接到数据库的“pesimistic”模式,但代价是性能。