3

我有一个连接到数据库的应用程序,可以在多用户模式下使用,多台计算机可以连接同一个数据库服务器来查看和修改数据。其中一个客户端始终被指定为“主”客户端。该主机还接收来自 RS232 或 UDP 输入的文本信息,并每秒将这些数据记录到本地机器上的文本文件中。

我的问题是其他客户端需要从主客户端访问这些数据。我只是想知道解决这个问题的最佳和最有效的方法。我正在考虑两种选择:

  1. 编写一个文件夹同步类,将远程(Master)计算机上的文件夹与本地(客户端)计算机上的文件夹同步。这将是一个线程化的缓冲文件复制例程。
  2. 实现一个客户端/服务器,以便主计算机可以将此数据提供给任何连接并请求数据的客户端。主机将通过 TCP/UDP 将文件发送到请求客户端。

解决方案必须考虑以下因素:

一种。日志文件每秒都被写入。它必须避免任何潜在的文件锁定问题。

湾。复制例程应该只复制在较晚日期修改过的文件,而不是已经在客户端计算机上的文件。

C。尽可能高效

d。所有机器都在一个局域网上

e. 仅需要执行同步,例如,每 10 分钟左右。

F。数据量仅为约 50MB,但一旦完成初始(第一次)同步,则要传输的数据量仅为约 1MB。这将在未来增加

哪个是更好的使用方法?有什么优点/缺点?我还看到了我正在考虑使用的快速文件复制帖子。

4

4 回答 4

6

如果您使用数据库,为什么“主”将数据写入文本文件而不是数据库,如果这些数据需要共享?

于 2011-07-05T14:36:03.933 回答
3

为什么要发明轮子?请改用rsync。Windows 软件包:cwrsync

例如,在 Master 机器上安装 rsync 服务器,在客户端机器上安装 rsync 客户端或简单地将文件放到项目目录中。每当需要时,客户端计算机上的应用程序应执行rsync.exe,请求从服务器同步必要的文件。

为了复制打开的文件,您需要设置 Windows 卷影复制服务。这是关于如何设置主计算机以允许使用 Windows 卷影复制复制打开的文件的非常详细的描述。

于 2011-07-05T16:29:18.850 回答
2

编写一个 Web 服务接口,以便客户端连接到服务器并根据需要提取新数据。或者,您可以将其编写为订阅/推送机制,以便客户端连接到服务器,“订阅”,然后服务器将所有新内容推送到注册客户端。客户端在注册时需要完全同步(获取自上次同步以来的所有更改),以防更新发生时它们处于脱机状态。

于 2011-07-05T13:31:57.653 回答
1

两种解决方案都可以在 LAN 上正常工作,选择权在您手中。您可能还需要考虑与您选择的技术相关的那些问题:

  • 部署灵活性。使用文件共享和文件复制需要文件共享才能工作,并且所有 LAN 用户都可以访问日志文件。
  • 长期计划:文件共享仅适用于本地网络,而基于 IP 的解决方案适用于路由网络,包括 Internet。
  • 与 IP 解决方案相比,基于文件的解决方案将更容易实施。
于 2011-07-05T13:32:04.613 回答