Delphi Web 和 Web 服务开发的当前选择是啥

Posted

技术标签:

【中文标题】Delphi Web 和 Web 服务开发的当前选择是啥【英文标题】:What are the current choices for Delphi Web & Web Service DevelopmentDelphi Web 和 Web 服务开发的当前选择是什么 【发布时间】:2010-12-04 21:10:02 【问题描述】:

我在玩 Delphi。我的大部分桌面开发都是在 .Net 中完成的,而嵌入式系统使用 C REST 或 SOAP)与本机客户端和 Web 客户端。

因为我最近重新获得了学习 Delphi 的灵感,所以我很好奇使用 Delphi 构建 Web 服务和 Web 客户端的选项有哪些。大多数 Delphi 文档都有点过时,但到目前为止我已经找到了以下选择:

数据快照 网络快照 网上经纪服务 内网 来自 RemObjects 的数据抽象和 RemObjects SDK

我觉得 WebSnap 已经死了,但其他技术仍在开发中。是否有关于调查哪种技术的指导?

附言我意识到 Delphi 并不是一个广受欢迎的 Web 开发选择,但我很想尝试一下,因为我在学习 VCL 时很开心。

【问题讨论】:

DataSnap 和 Data Abstract 是数据访问框架,而不是 Web 开发框架。您可以在 Intraweb、WebBroker 或 WebSnap 应用程序中使用它们,但它们不会为您提供此类特定于 Web 的功能。 我认为 DataSnap 和/或 DataAbstract 能够构建 Web 服务是否正确?似乎 DataSnap 被宣传为构建 REST 服务的框架,但也许我误解了。如果是这样,似乎这些将填补我项目的服务方面。 类似问题:***.com/questions/3793112/… @mjustin:是的,我首先阅读了这个问题,但它没有直接解决 DataSnap、WebBroker、WebSnap(尽管讨论了 Intraweb)。它似乎专注于经典的 Web 框架,而不是具有多个客户端的 Web 服务。 DataSnap 和 RemObjects SDK 都提供远程处理。 Data Abstract 包含 RemObjects SDK 作为其中的一部分,所以是的,它也提供 Web 服务。 【参考方案1】:

Web Service Toolkit 是 FPC、Lazarus 和 Delphi 的 Web 服务包; “Web Service Toolkit”旨在简化 FPC、Lazarus 和 Delphi 用户的 Web 服务消费和创建。最好从 svn 签出,因为 0.5 版本实际上已经过时了。

【讨论】:

【参考方案2】:

您或许可以将我们的Synopse SQLite3 Framework 添加到您的列表中。

有一些有趣的功能:

ORM 方法在服务器端和客户端管理您的数据(即定义和访问您的数据作为常规 Delphi 类) - 类似于 RoR 中的 ActiveRecord ;) ; Multi-tier architectured; 没有要部署的数据库或dll(使用嵌入式SQLite,没有任何外部dll)-您甚至可以不使用SQLite,而是使用纯Delphi编写的简单快速的内存数据库(我已经开始fork of Zeos,独立于数据库); 非常优化的 HTTP/1.1 多线程服务器(但您可以通过其他协议进行通信,甚至可以在同一进程中纯粹在本地进行通信,无需任何客户端/服务器); 数据传输使用标准 JSON,因此您可以在 Delphi 客户端或 AJAX 客户端中接收相同的数据; 客户端/服务器是 RESTful 并用非常优化的 Delphi 代码编写(为了速度和低内存使用,有些部分甚至在分析后用 asm 编写); 也可用于定义类似 DataSnap 的 Client-Server JSON RESTful Services,如果 RESTful 方法对您来说不够用; 完全开源,从 Delphi 6 到 XE 都可以编译和工作(所有版本都完全支持 Unicode,因为它基于引擎核心的 UTF-8)。

【讨论】:

我一定会看看这个。感谢您指出,这是另一个我没听说过的框架。 更新:从那时起做了大量的工作。您可以通过接口定义服务。您可以使用任何数据库层(MS SQL、Oracle、OleDB)。请参阅mormot.net - 它已更名为 mORMot,因为它现在不仅限于 SQLite3。【参考方案3】:

作为 ISAPI dll 托管的 RESTful 服务器端方法调用或仅使用 Indy HTTP Server 组件。这确实是一种非常简单且功能强大的方法,可让您快速入门,无需大量学习曲线。

【讨论】:

我也喜欢这种方法。它简单而灵活,并且没有很多抽象层。在许多情况下,这已经足够了。 我指的是 ISAPI 方法。您可以使用 Indy HTTP 来托管 ISAPI 或仅使用 Apache 或 IIS。 ... 但是您必须手动编写所有 RESTful 机制,即进行所有 XML/JSON 生成/解析,因为 Indy HTTP 服务器的目标是提供 HTTP 页面。对我来说,如果你愿意的话,依赖一个基于 Indy 的更高级别的框架听起来会更好。 这是一个很好的提示,即使我最终利用了更高级别的框架,我认为这是理解和熟悉机制的好方法。有点像在进入大型框架之前学习使用 Java servlet。 我一直不愿发布指向xxm.sf.net 的链接,因为该问题专门针对 WebServices 和框架,但如果 R​​ESTful 是一个选项,请查看 xxm,因为它具有良好的自动编译功能InternetExplorer,以及一个很好的 IIS 自动更新功能。 (并且可以使用 Apache 或 CGI 或“普通 HTTP”运行相同的输出库)【参考方案4】:

DelphiMVCFramework 是一个强大的 RESTful 框架,也用于网站开发 https://github.com/danieleteti/delphimvcframework

DMVCFramework 功能

符合 RESTful(RMM 级别 3) 带有参数映射的精美网址 使用 Mustache 模板生成的服务器端页面 使用 STOMP 和 Apache ActiveMQ 或 Apache Apollo(测试版)的消息传递扩展 可用于使用 Redis 或 mysql 作为状态服务器的负载均衡环境 集成 RESTClient 适用于 DelphiXE3 或更高版本 集成日志系统 使用起来非常简单。您可以在几分钟内提高工作效率!

这里是 DMVCFramework 开发者指南 https://danieleteti.gitbooks.io/delphimvcframework/content/

如果需要支持,有600多人的官方facebook群https://www.facebook.com/groups/delphimvcframework/

我是主要开发者,但有超过 6 个活跃的贡献者。

【讨论】:

【参考方案5】:

WebHub 是另一个成熟但鲜为人知的第三方 Delphi Web 框架。

【讨论】:

【参考方案6】:

以下是可用于构建 Web 服务服务器的几个其他选项,与 datasnap 或 remobjects/dataabstract 有点相似。几年前我用 kbmMW 做过一些工作,它是一个可靠的库。我认为 kbmMW 和 RealThinCLient 都有免费和/或开源版本:

RealThinClient

kbmMW

【讨论】:

【参考方案7】:

我们有一个用 Delphi Prism/ASP.NET 编写的 Delphi 服务器应用程序的 Web 前端。它运行良好,让我们能够在 .NET 环境中利用我们的 Delphi 语言技能。

【讨论】:

感谢您的建议。你的 Delphi 服务器应用程序是用原生 Win32 Delphi 编写的,只有一个 ASP.Net 前端,还是整个项目都是一个 Prism 项目? 我们使用来自 RemObjects (dataabstract.com) 的 DataAbstract。它允许我们用本机 Delphi 代码编写服务器,并使用我们选择的几乎任何方法连接到它。他们的框架会自动为您的服务器生成所有接口类,您只需调用它公开的方法。 啊,太好了。我不知道 DataAbstract。我会检查一下!【参考方案8】:

这个很老了,但是很多东西都变了,我自己也离开了Intraweb,去了UNIGUI,因为它是基于EXTJS的,做单页应用的。

【讨论】:

【参考方案9】:

好吧,自从我在此帖子上留下最后一条消息以来已经两年了, 虽然 uniGUI 仍然是目前在 Delphi 中创建 SPA 的唯一解决方案,但似乎 IW17 将成为真正的前沿,Delphi 历史上的分水岭。客户端渲染无需服务器通信,Wordpress 集成,无需编写javascript 中的一行代码,如其他框架、websockets、fibers、我们的“Delphi React”。

【讨论】:

以上是关于Delphi Web 和 Web 服务开发的当前选择是啥的主要内容,如果未能解决你的问题,请参考以下文章

delphi ORACLE三层架构的服务端开发

delphi可以做网站吗

Delphi实现DBGrid全选和反选功能

xalion三层与Web开发帖子一览表 good

如何在Delphi中开发使用多显示器的应用程序

关于delphi的开发方式