使用Datasnap构建REAL数据库应用程序

Fre*_*ell 4 sql-server delphi https ado datasnap

我在D2010中使用ADO和devexpress构建了一个广泛的2层应用程序.我想将此升级为使用Datasnap主要是为易受攻击的SQL服务器提供HTTPS通信而不仅仅是TCP/IP.我已经按照我能找到的所有Datasnap教程进行了操作.我有Cary Jensen的深度Delphi:ClientDatasets.一切都很好,但是这些示例非常无用,因为在REAL数据库应用程序中,网格是通过将多个表连接在一起而几乎从不在单个表中填充的.这样可以避免客户端数据集的"自动解决"功能.即使是提议的beforeupdateevent处理程序也不能在datasnap应用程序中工作,因为DB只能由datasnap服务器访问.因此,在我看来,我必须在datasnap服务器上创建一个方法,用于我将需要的EACH插入/更新,然后将这些方法公开给客户端并根据需要从客户端调用它们以请求datasnap服务器执行所需的操作更新/插入.这似乎很多工作!

有没有更简单的方法将https通信实施到SQL Server?

哦,如果您想知道,该应用程序已经是伪3层,因为网格连接到TdxMemData,而且从不直接连接到TADOQueries.我自己处理所有插入/更新的方式与我使用TClientdatasets时所需的方式相同.

小智 6

如果您认为您的数据库易受攻击,请考虑使用D2010 Datasnap.它非常非常脆弱.不要被HTTPS欺骗,仍然有很多部分缺少完全保护频道.例如,一旦你使用Datasnap,SQL服务器Windows集成身份验证(基于kerberos ...)就不见了.

有关完整说明,请参阅:为什么Datasnap 2010是一个玩具库.这当然是我的个人意见,但这是基于我自Delphi 3以来使用Midas/Datasnap的经验,以及我目前关于IT安全的工作.

无论如何,你对插入/更新/删除错了.您必须使用提供程序的事件来控制它们在datasnao服务器端.它比在双层应用程序中处理它们要复杂一些,但是每个操作都不需要特殊方法.