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

Sql server 如何用Delphi实现Internet访问系统?,sql-server,delphi,delphi-6,Sql Server,Delphi,Delphi 6,我即将开始一个新系统的工作,该系统将需要支持多个用户,并可能允许通过互联网访问数据库 该系统将是win32,而不是基于web的,数据库将只是在办公室中,可以在任何地方访问。我不确定这是否是一种危险的安全方法,我愿意接受建议 数据库将是SQL Server,系统将在Delphi 6中实现 有人知道我是怎么开始的吗?我还需要考虑记录锁定 如果有人能提供链接到好文章,将不胜感激 干杯 Paul您可能指的是通过TCP/IP进行通信的客户机-服务器系统 您可以使用Indy组件来创建它。请务必检查这些示例,

我即将开始一个新系统的工作,该系统将需要支持多个用户,并可能允许通过互联网访问数据库

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

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

有人知道我是怎么开始的吗?我还需要考虑记录锁定

如果有人能提供链接到好文章,将不胜感激

干杯


Paul

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


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

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

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

您的数据库将在任何地方都可用,使用Internet就像隧道一样安全地传输您的数据库数据包

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

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

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

解决办法是:

  • VPN,如其他答案所述。简单且安全,但需要在两个终端端口(客户端和VPN服务器)上进行一些设置,并且可能需要在服务器(或VPN路由器/设备)上安装适当的软件,如果不使用标准VPN协议,还需要在客户端安装适当的软件)
  • 一个n层应用程序,其中只有应用程序服务器向internet公开。您仍然必须正确保护应用程序服务器和传输通道。可能需要较少的客户端设置。Delphi6将Datasnap作为一个n层库提供(它仍然支持CORBA,但从D7开始就被删除了)。DCOM对防火墙不太友好(但可以配置为跨防火墙工作),但可以自己保护通道,其他两个选项(套接字和HTTP)更容易设置,但安全性稍差(它们使用DCOM代理工作,因此客户端身份丢失,需要自定义代码或证书来保护通道)
  • 第三种解决方案可能是让用户通过远程桌面远程连接,但它需要许可证和能够承受远程会话负载的机器

  • 记录锁定由数据库本身处理-请仔细阅读有关SQL Server锁定模式的文档,以避免以后出现不好的意外情况。如果连接速度不够快,您可以选择在客户端缓存一些数据(TClientDataset可以很好地实现这一点),它还可以减少锁定问题,但可能会引入udpate冲突。

    实际上,根据您的经验、偏好和可用的工具,有几十种可能的技术。不过,我建议您使用ADO连接到数据库,而不是BDE。为此,可以使用Delphi中的ADO组件,或将msado15.dll类型库导入到项目中,以使用原始ADO API调用。后者需要更多的经验
    SQL Server能够将自己暴露在Internet上,尽管这会带来安全风险。但是,想要访问它的人需要用户名和密码才能获得连接,并且您需要打开SQL Server使用的端口。但从技术上讲,要在Internet上使用ADO,您只需要知道工作服务器的IP地址,以及登录信息。但这是一种安全风险。因此,大多数开发人员不会将SQL Server公开给数据库,而只是编写web服务来封装您想要公开的特定数据库功能。
    SQL Server会为您提供记录锁定功能,如果您使用事务,则可以使其更安全。
    ,您需要学习和阅读的内容在很大程度上取决于您希望在应用程序中执行的操作。因此,在您开始编写一些代码之前,先开始编写一个功能设计,以了解您需要什么以及需要什么。从本文档开始,开始编写技术文档,以更精确地描述代码需要执行的操作。一旦你有了这些,你就可以对你需要的东西提出更直接的问题,但目前还不知道。

    “通过互联网访问”如中所述,用Delphi编写的客户端将访问远程数据库上的记录?或者像在中一样,可以通过浏览器访问?一个普通的win32数据库,唯一的区别是数据库在伦敦的一个办公室中,而用户可能在苏格兰,不需要在这样的体系结构中添加这样一个只有Delphi的层。一个VPN就可以了。实际上,我有一个SQL Server数据库直接在家里连接,还有一个客户端应用程序在工作,它只使用ADO直接连接到这个数据库,而不需要任何TCP/IP组件。ADO内置了这种支持。那么印第?不要使用它,除非你也想从服务器上检索其他东西……我希望事情尽可能简单。我仍然在实现客户机-服务器类型和允许客户机直接写入数据库之间左右为难任何数据库库都有连接到数据库的“内置支持”,通常是对TCP/IP的“内置”支持:)ADO本身使用底层数据库驱动程序支持的任何东西连接到数据库。谢谢