sql-server - 使用 Datasnap 构建真正的数据库应用程序

标签 sql-server delphi https ado datasnap

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

是否有更简单的方法来实现与 SQL Server 的 https 通信?

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

最佳答案

如果您认为您的数据库容易受到攻击,请在使用 D2010 Datasnap 时三思。它非常非常脆弱。不要被 HTTPS 愚弄,在充分保护 channel 方面仍然缺少很多部分。例如,一旦您使用 Datasnap,SQL Server Windows 集成身份验证(基于 Kerberos...)就消失了。

有关完整说明,请参阅:Why Datasnap 2010 is a toy library 。这当然是我的个人意见,但它是基于我自 Delphi 3 以来使用 Midas/Datasnap 的经验以及我目前有关 IT 安全的工作。

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

关于sql-server - 使用 Datasnap 构建真正的数据库应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7783144/

相关文章:

sql-server - SQL Server 中存储过程的上次运行日期

delphi - Delphi 6 和 Vista Service Pack 2 上的图像列表加载失败

multithreading - 我应该如何使用临界区?

html - 解析 Google SERP 结果的 Delphi 建议

php - POST 数据加密 - HTTPS 就足够了吗?

sql - 我应该使用 sp_executesql 还是 EXEC 来运行存储过程?

sql-server - "FirstName"和 "LastName"存储在数据库 USER 或 USER_PROFILE 表中?

security - 保护没有关联域名的公共(public)服务器 IP

Tomcat 是否支持 HTTP/2.0?

SQL Case 语句返回重复行的索引