2011-10-15 114 views
1

数据库编程的问题我知道,我听说过有很多方法来连接到德尔福(XE2)一dabatase服务器:套接字的DataSnap,web服务,远程数据模块(?¿),dbExpress的,和其他像UniDAC一样的派对。我通常使用UniDAC,但我想知道何时以及如何正确使用它们。 DataSnap显然是Delphi的旗舰。我还没有找到有用的教程来回答这些问题。因此,对于Win32应用程序,考虑到以下因素,这将是开发客户端应用程序的推荐选项:安全性,灵活性和可伸缩性?关于德尔福XE2

对于客户端Win32应用程序,是否有任何方法可以对数据库访问更改进行透明处理?也就是说,如果我分发了100个客户端应用程序,并且想要更改数据库访问的密码,那么必须更新每个客户端应用程序才是问题。

建议您与客户端应用程序的数据库有唯一的连接吗?

我试图测试的dbExpress(用Delphi XE2捆绑)和AnyDAC连接到我的远程MySQL数据库,但我有VendorLibs问题。有没有一种方便的方法来解决这个问题,而不必安装我想测试的每个RDBMS?

是DBExpress免费还是我必须支付更多功能?

任何人都可以推荐非常好的书籍来了解DataSnap,中间件应用程序等等?

在此先感谢。

+0

你是说你在客户端存储数据库密码? :-O 从安全角度来看,这是一个很大的风险。 –

回答

1

如果您有多个分布式客户端,您希望使用在服务器端运行单个持久数据连接的多层解决方案(如DataSnap或DataAbstract),并且每个客户端只需连接到该服务器应用程序以请求数据。

的DataSnap提供了多种不同的客户端/服务器连接情况的解决方案:套接,REST等,所以它的你来决定什么是最适合你的系统(S)。 DataAbstract似乎是市场上最流行的多层数据应用程序解决方案之一,并且我碰巧知道许多开发人员因为各种原因而发誓(安全性就是其中之一,易用性是另一个)。

我一直认为,如果你的客户端应用程序要求对数据库的直接连接,你就错了!

如果你正在寻找有关的DataSnap更多信息,还有在最近CodeRage事件就可以了一些有趣的会话。您可以在Embarcadero's CodeCentral subsite下载/观看任何这些会议(免费)。

至于书籍,以及你最好的选择永远是马可·坎的德尔福手册(特别是XE书,这在很大程度上仍然适用于的DataSnap的条款XE2)。

请务必记住,DataSnap仅随Delphi的Enterprise,Ultimate和Architect版本一起提供......它不适用于Pro或Starter!

尽管如此,你总是可以在你自己的服务器层上使用ODBC连接到任何ODBC数据库(包括MySQL,MSSQL,Oracle甚至MS Access,如果你喜欢享受“过去的爆炸”),然后使用您喜欢的任何网络套接字解决方案(例如与Delphi [所有版本]一起提供的Indy作为标准)将您的客户端应用程序链接到服务器层!看看TADOConnection,TADOQuery等

希望你会觉得这个信息有用!

+0

非常感谢很多 –

+0

顺便说一句,你正在使用的头像......我是为@RRUZ做的;) – LaKraven

0

根据实际的应用需求,您必须在2层(数据库和胖客户端)或n层(数据库,应用服务器,瘦客户端)解决方案之间进行选择。 2层解决方案开发起来更简单,而n层更复杂。

dbExpress,UniDAC,ecc。是数据库访问库。 Datasnap,Web服务等是RPC(远程过程调用)框架,可以使用访问远程数据(使用服务器端的db访问库)。套接字只是非常低级别的通信设备。

因此,您必须使用这些组件的堆栈来构建数据库访问层。例如,您可以使用dbExpress访问DB和Datasnap作为中间层。

从安全角度来看,Datasnap非常不安全,但是由于使用了algortithms和密码/证书管理,因此DCOM实现非常不安全。如果你在你的客户端存储数据库密码,那么无论如何你都有一个很大的安全问题。有些操作系统验证等方法可以使用用户帐户安全性连接到数据库。对数据库使用单个“连接”可能意味着失去一些(或更多)安全性,因为数据库访问控制将限于该连接用户的权限。另外,审计可能会丢失。

当引入一个新图层时,必须设计可伸缩性并将其良好地编码到该图层中。数据库服务器的设计和编码是可扩展的,不好的中间层可能成为瓶颈。

MySQL通常对你用来连接的lib有什么挑剔,其他数据库都少。