使用Delphi使用Web数据库的最佳方法是什么?

时间:2011-11-07 04:07:46

标签: mysql delphi dbexpress

所有。 我正在使用DBExpress和C ++ Builder(Delphi)2007和MySQL,firebird,...... 我想制作使用数据库(位于我的网络服务器上)的win 32应用程序。 我尝试使用DBExpress(TSQLConnection for MySQL),它太慢了...... 我尝试了本地数据库,然后使用Indy上传/下载.. 但它并不好,也不复杂。 那么在win 32应用程序中使用基于Web的数据库的基本方法是什么? 你有经验吗?或任何文件或任何评论将是如此优雅.. 非常感谢..

4 个答案:

答案 0 :(得分:4)

通过互联网链接(使用VPN或不使用VPN)的数据库连接速度很慢 - 你是完全正确的。恕我直言的主要原因是每个请求的“ping”延迟,这在本地网络上是非常低的,并且通过因特网更高。所以直接连接不是一个好主意。

在Delphi的最新版本中,您拥有DataSnap组件,这是进行远程访问(包括Web访问)的新“标准”(或Embarcadero推荐)方式。即使它被发现at first to be a bit limited,最新版本也是完全可用的,并且正在成为使用Delphi进行跨平台应用程序构建的关键产品。但它不适用于Delphi 2007。

一个成熟的产品(可用于Delphi 2007)是Data Abstract

  

Data Abstract是一个用于构建数据库驱动的应用程序的框架   使用多层数据访问模型,适用于各种平台。

当然,这不是免费的,但这是经过验证的有效解决方案。

您还可以查看我们的Client-Server ORM,它可以连接到any DB,并且能够实现RESTful SOA architecture with Delphi 2007,即使不使用ORM部分 - 也就是说,您可以使用您现有的基于DBExpress的源代码,并轻松地向数据公开一些Web界面。它是开源的,并使用JSON作为安全authentication mechanism上的通信格式。有很多documentation included(超过700页的PDF),它也试图引入SOA world

答案 1 :(得分:0)

看看Datasnap:info

答案 2 :(得分:0)

您需要一个数据访问库,它提供以下功能:

  1. 线程安全。通常,您需要为每个线程使用专用连接。
  2. 连接池。要快速建立连接((1)所需的连接),必须有连接池。
  3. 快速执行SQL命令,打开结果集,获取功能。
  4. 跟踪。对于任何一个库,您可能会遇到性能问题。你需要一个工具来查看出错的地方。为此,您需要查看和分析客户端和服务器通信。
  5. 结果集缓存以及从不同线程同时读取它的能力。您可能只有几个只读表,您将获取一次并在应用程序中缓存。但是你需要一个机制来从线程中读取这些数据。一种InMemTable克隆。
  6. 我的回答有偏见,但您可以考虑AnyDAC。它具有所有这些和许多其他功能。

    PS:dbExpress也应该运行。首先尝试找出性能问题的原因,而不是另一个库。因为其他图书馆可能会发生同样的事情......

答案 3 :(得分:0)

慢速链接上的数据库应用程序需要与使用快速链接的方法不同的方法。您必须小心移动的数据量,以及应用程序执行的往返次数。

通常是一种方法,当需要的子集缓存在客户端上,修改后,应用到数据库是可取的(当然,如果不需要立即看到更改,并且冲突的可能性很低)。

如果应用程序的设计不考虑慢速链接,那么没有中间件可以帮到你。