将Windows桌面应用程序连接到远程位置

时间:2010-10-14 22:07:32

标签: delphi remote-connections

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

以下是该方案:

Office,有几个用户在Windows桌面应用程序上工作

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

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

我们如何实现这一目标?

有时我们需要实时

有时它并不重要。

4 个答案:

答案 0 :(得分:6)

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

  1. SOAP服务作为中间层
  2. 基于REST HTTP的中间层
  3. 基于XML RPC的中间层
  4. 纯TCP / IP中间层
  5. 客户端的VPN连接
  6. 如果您从客户端建立VPN连接,那么您可以直接访问数据库,但如果客户不是来自您的公司,则可能会特别为客户提供服务。我个人可能会选择2或3,但仅仅因为我不喜欢SOAP。如果被问到,大多数人会更喜欢SOAP。

    编辑:

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

答案 1 :(得分:3)

有3种可能的解决方案路线:

  1. 编写普通桌面应用程序并使用终端服务(远程桌面服务)或Citrix XenApp(或使其成为Web基础)发布此应用程序
  2. (重新)设计您的应用程序以解决(可能缓慢和/或不可靠)WAN连接)
  3. 实施某种数据库复制并在每个办事处实施单独的数据库(服务器)

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

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