【问题标题】:Best way to get database information to a program (windows and mac)将数据库信息获取到程序的最佳方式(windows 和 mac)
【发布时间】:2011-11-25 08:17:00
【问题描述】:

我目前正在使用delphi,并且有一个程序连接到另一个程序(服务器),该程序上有mysql数据库并将数据发送回客户端。我有一个具有服务器程序和数据库的 Web 服务器,但我的问题是我可以直接从我制作的客户端程序(Windows 和未来的 Mac)到 Web 服务器上的 mysql 数据库吗?还是我真的需要服务器程序?如果是这样,我需要做什么才能通过 Internet 将我的客户端程序连接到 MySQL 数据库?

【问题讨论】:

  • 直接通过互联网访问mysql是可能的,但是尝试保护它需要额外的努力,而且可能不可能。
  • 你说你有一个“有服务器程序的网络服务器”——这个“服务器程序”现在做什么?不要重新发明轮子,尤其是在你接管别人的代码时。
  • 2 层或 3 层。就是这个问题。

标签: windows delphi


【解决方案1】:

只要您为允许远程访问的数据库创建了用户/密码组合,您就应该能够直接访问 mysql 数据库(安全性讨论除外)。然后,您需要搜索一个兼容的 mysql 库,以简化您的程序和 mysql 之间的通信。在最远的技术端,您可能必须直接读取/写入 mysql 套接字,但这也是可能的。

【讨论】:

    【解决方案2】:

    取决于您的客户端程序是否将继续是本机应用程序,或者您是否计划迁移到基于浏览器的客户端。

    如果它们是本机应用程序,您可以获得用于编写它们的语言的库组件,这些组件将能够直接与 MySQL 数据库通信。 Delphi 有很多选择;我不熟悉哪些选项可用于原生 Mac 开发(当然,Embarcadero 正在推出可以生成 Mac 应用程序的 Delphi)。

    但是,如果您打算让您的客户端基于浏览器,ajax 解决方案希望与 Web 服务器而不是数据库服务器通信。在这种情况下,您将需要维护您的中间件。有关让基于浏览器的应用程序直接与数据库服务器通信是否可能或可取的讨论,请参阅this question

    【讨论】:

      【解决方案3】:

      我会为此使用 SOAP/XML,并将 SQL 完全排除在客户端之外。

      【讨论】:

        【解决方案4】:

        这是一个典型的用例,其中 REST(例如使用 JSON 编码的数据库记录)可能会有所帮助。使用 lkJSON 或 SuperObject 很容易实现 Delphi 客户端,将来自 HTTP 响应的数据库记录放入 TClientDataSet。

        【讨论】:

          【解决方案5】:

          是的,这是可能的,但这是个好主意吗?

          here 是关于 2 层 v 3 层架构的基本讨论

          【讨论】:

            猜你喜欢
            • 2010-10-07
            • 2013-08-18
            • 1970-01-01
            • 2021-05-19
            • 1970-01-01
            • 2020-10-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多