2011-11-07 156 views
2

全部。 我使用DBExpress和C + + Builder(德尔福)2007年和MySQL,火鸟,... 我想赢取使用数据库(位于我的网络服务器)32应用程序。 我试过使用DBExpress(TSQLConnection for MySQL),它太慢了...... 我尝试使用本地数据库,然后使用Indy上传/下载.. 但它不好,并且有点复杂。 那么在win 32应用程序中使用基于web的数据库的基本方法是什么? 你有什么经验吗?或任何文件或任何评论将是如此如此优美.. 非常感谢..什么是使用Delphi的Web数据库的最佳方式?

+0

没有什么像“网络”数据库。只有局域网数据库和远程/广域网数据库。传输协议是相同的,TCP/IP,您只是遇到了Gb本地局域网和慢速广域网连接的区别。当数据库可以在局域网外访问时,还有很多安全隐患。 –

回答

0

在的DataSnap看看:通过互联网连接(使用VPN或不)info

+0

我会尝试..使用Datasnap ...非常感谢.. –

4

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

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

一级大部分成熟的产品(并将于2007年德尔福)是Data Abstract

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

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

您也可以看看我们的Client-Server ORM,它可以连接到any DB,并能实现RESTful SOA architecture with Delphi 2007,即使不使用ORM的一部分 - 也就是说,您可以使用您现有的基于dbExpress的源代码,轻松地将一些网络界面暴露给数据。它是开源的,通过安全的authentication mechanism使用JSON作为通信格式。有很多documentation included(超过700页的PDF),其中还试图介绍SOA world

+0

非常感谢,我会找到那些东西... –

+2

Datasnap **是在Delphi 2007中可用。它只是一个基于DCOM的不同实现,而不是的dbExpress。它将通过使用DCOM,套接字或HTTP的Internet工作。在D2007中也有一个基于SOAP的实现。 –

+0

@Mad你说得对。但是值得一提的是,现在DCOM已经被完全弃用了,并且真正的PITA可以与Windows Seven一起使用(至少从我的实验和愤怒的客户反馈来看)。 –

0

你需要一个数据访问库,它提供的功能:

  1. 线程安全。一般来说,您需要为每个线程使用专用连接。
  2. 连接池。为了快速创建连接((1)所需的),必须有一个连接池。
  3. 快速执行SQL命令,打开结果集,获取功能。
  4. 追踪。对于任何一个库,您都可能遇到性能问题。你需要一个工具来看看发生了什么错误。为此,您需要查看和分析客户端和服务器通信。
  5. 结果集缓存和从不同线程同时读取它的能力。您可能只有很少的只读表,您将只读取一次并缓存在应用程序中。但是你需要一个机制来从线程读取这些数据。一种InMemTable克隆。

我的回答是偏颇的,但你可以考虑AnyDAC。它具有所有这些和许多其他功能。

PS:dbExpress也可以。尝试首先找到性能问题的原因,而不是一个不同的库。因为其他库可能会发生同样的情况...

+0

OP谈到了网络访问。他/她使用DBExpress作为数据访问库,但问题不是这个速度不够快,但该数据库访问预计可以在小* ping *的本地网络上运行。更改为更优化的库(如伟大的AnyDAC)在这里帮不了什么忙,恕我直言。类似于DataSnap或RemObject(即更改为SOA架构以进行远程访问)应该是解决方案。 –

+0

非常感谢你为所有人做出的回应... –

0

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

通常情况下,当需要的子集被缓存在客户端上,被修改,并且应用到数据库是最好的方法(当然,如果变化不需要马上看到,并且冲突的可能性很低)。

如果应用程序没有设计处理慢速链接,没有中间件可以帮助您。

相关问题