如何使用Delphi实现Internet访问系统?

时间:2010-10-29 07:55:02

标签: sql-server delphi delphi-6

我即将开始研究一个新系统,该系统需要支持多个用户,并可能允许通过Internet访问数据库。

系统将是win32,而不是基于Web的,数据库将只在办公室中,并且可以在任何地方访问。我不确定这是否是一种安全明智的危险方法,我愿意接受建议

数据库将是SQL Server,系统将在Delphi 6中实现

有谁知道我如何开始这个?我还需要考虑记录锁定。

如果有人可以提供赞赏的好文章的链接。

干杯

4 个答案:

答案 0 :(得分:6)

恕我直言,最简单的方法是创建一个VPN,通过Internet安全地公开您的数据库。

安全性非常好,因为只有通过可信的VPN连接才能访问数据库。

您的数据库将随处可用,使用Internet作为隧道来安全地传输数据包。

因此,您的Delphi代码将像往常一样使用TCP / IP连接通过VPN安全隧道连接到数据库。

无需添加额外的Delphi工件,如Indy组件等。 并且您将能够连接到非Delphi客户端的数据库,这可能是使用某些数据库浏览工具的好主意。

答案 1 :(得分:2)

在互联网上公开数据库存在安全风险。安全漏洞很容易被远程利用。

解决方案是:

  1. VPN,如其他答案所述。简单而安全,但需要在两个端口(客户端和VPN服务器)上进行一些设置,并且可能需要在服务器上使用适当的软件 - 或VPN路由器/设备 - 如果您不使用标准VPN,则需要在客户端上协议)。
  2. n层应用程序,其中只有应用程序服务器暴露给Internet。您仍然需要正确保护应用程序服务器和传输通道。客户端可能需要较少的设置。 Delphi 6提供Datasnap作为n层库(它仍然支持CORBA,但它自D7以来被删除)。 DCOM不是非常防火墙(但可以配置为跨越它们)但可以自己保护通道,另外两个选项(套接字和HTTP)更容易设置但安全性稍差(它们使用DCOM代理,从而客户身份丢失,并需要自定义代码或证书来保护渠道。
  3. 第三种解决方案可能是让用户通过远程桌面远程连接,但它需要许可证和能够支持远程会话负载的机器。
  4. 记录锁定由数据库本身处理 - 仔细阅读有关SQL Server锁定模式的文档,以避免以后出现意外情况。如果连接速度不够快,您可以选择在客户端缓存一些数据(TClientDataset适用于此),它也可以减少锁定问题,但它可能会引入udpate冲突。

答案 2 :(得分:1)

您可能是指通过TCP / IP进行通信的客户端服务器系统。

您可以使用Indy组件创建它。请务必查看示例,因为它们不易使用,但您几乎可以创建与之相关的任何网络。

答案 3 :(得分:1)

实际上,根据您的经验,偏好和工具,有许多可能的技术。我建议你使用ADO连接到数据库而不是BDE。为此,您可以使用属于Delphi的ADO组件或将msado15.dll类型库导入到项目中以使用原始ADO API调用。后者将需要更多的经验!
SQL Server能够将自己暴露给Internet,尽管这会产生安全风险。仍然,想要访问它的人需要用户名和密码才能获得连接,您需要打开SQL Server使用的端口。但从技术上讲,要通过Internet使用ADO,您需要知道的是工作服务器的IP地址以及登录信息。但这是一个安全风险。因此,大多数开发人员不会将SQL Server暴露给数据库,而只是编写Web服务来包装您想要公开的特定数据库函数。
记录锁定是SQL Server将为您做的事情,如果您使用交易可以使其更加安全。

最后,您需要学习和阅读的内容在很大程度上取决于您希望在应用程序中执行的操作。因此,在开始编写代码之前,请先编写一个功能设计,以便概述您想要的内容以及您需要的内容。从本文档开始编写技术文档,以更准确地描述代码需要执行的操作。一旦你有了这个,你可以直接询问你需要的东西,但目前还不知道。