1

我想知道如何将远程办公室连接到中央数据库。

这是场景:

有多个用户在 Windows 桌面应用程序上工作的办公室

此应用程序从办公室服务器的数据库中获取数据。

现在,1 个或多个远程(办公室、商店等)需要访问相同的数据。

我们怎样才能做到这一点?

有时我们需要实时

有时它并不那么重要。

4

4 回答 4

6

由于安全性,您需要在客户端和数据库之间建立某种中间层。将数据库直接暴露在互联网上是非常危险的。许多应用程序在这种情况下使用 SOAP,因为它被广泛采用。您创建一个 SOAP 服务,定义协议和功能,然后客户端调用它。其他选项是,您可以创建一个基于 REST 的服务/服务器来执行相同的操作,或者甚至创建一个普通的 TCP /IP 层。所以你的选择是:

  1. SOAP 服务作为中间层
  2. 基于 REST HTTP 的中间层
  3. 基于 XML RPC 的中间层
  4. 纯 TCP /IP 中间层
  5. 客户端的 VPN 连接

如果您从客户端建立 VPN 连接,那么您可以直接访问数据库,但这可能是为了特别为非您公司的客户提供服务。我个人可能会选择 2 或 3,但这只是因为我不太喜欢 SOAP。如果被问到,我猜大多数人会更喜欢 SOAP。

编辑:

由于我看到这些是远程办公室,因此您可以考虑使用永久 VPN 连接。如今,大多数路由器都具备这些能力。然后,您的应用程序可以像在本地一样以远程方式工作。

于 2010-10-15T05:49:11.740 回答
3

有3种可能的解决途径:

  1. 编写一个普通的桌面应用程序并使用终端服务(远程桌面服务)或 Citrix XenApp(或使其成为 Web 库)发布此应用程序
  2. (重新)设计您的应用程序以在(可能缓慢和/或不可靠的)WAN 连接上工作)
  3. 实现某种数据库复制并在每个办公室实现一个单独的数据库(服务器)
于 2010-10-15T11:12:02.843 回答
1

选择采用什么的标准之一是远程办公室和中央服务器之间的连接速度、可靠性和成本。如果速度足够,可靠性还可以,成本也很平 VPN 是要走的路。它不需要更改您的应用程序(如果它不是为了下载整个数据库而编写的......)它还将处理您的数据的身份验证和加密。如果 VPN 不是一种选择,您可以使用 Runner 答案中的一种远程技术,但它们通常需要重新设计(和重写)应用程序,该模型与“经典”客户端/服务器应用程序有点不同。基于 HTTP(S) 的防火墙通常没有问题,但通常需要无状态且不支持回调,安全需要证书生成和部署。其他与其他协议(即 DCOM,dbExpress Datasnap)更灵活,但设置和/或正确保护可能更复杂。如果连接不够快速和可靠,或者过于昂贵,您可能需要与远程服务器正确同步的本地缓存 - 这可能不容易实现,具体取决于应用程序的需要。

于 2010-10-15T07:14:16.877 回答
1

您可以轻松地使用DataSnapRemObjects将现有数据库包装和公开为中间层服务器,然后针对它编写客户端。为了连接到这个,我强烈建议您在遥控器和中间层之间建立 VPN 连接。这样您就不必担心保护通信链路的安全……除非您传输的数据是低风险数据(没有任何价值)。

您将希望非常熟悉TClientDataset。它使您能够在无需访问主数据库的情况下操作远程系统,并减少通过网络传输的流量(您可以在本地进行过滤和排序)。

更新大部分性能将取决于后端服务器的速度以及传输的数据类型和数量。它对于大多数用途来说已经足够快了,如果你发现自己不得不通过管道发送大量数据,我发现做一些客户端缓存是值得的。通过添加更新触发器来为每条记录设置更新的时间戳,您可以通过仅请求比您收到的最后一条记录更新的记录来更新缓存。

于 2010-10-15T15:50:11.170 回答