如何使用Delphi作为后端构建REST Web服务器,用于大型Web应用程序?

17
我看了这个问题,但对答案感到不满意。
我也快速阅读了Marco Cantù 2010 Handbook的最后一章节(正如该问题中建议的那样),我引用以下内容(我认为可以引用这样一个短文):
“我[Marco Cantù]确实在Delphi中编写了许多服务器端Web和REST应用程序,并且在最近几年中,我开始玩DW(R)AF(Delphi Web Application REST Framework)(即DWARF),并在会议上介绍它。目前还没有公开发布...因为它还不够完善。我已经看到其他正在进行的努力来克隆Delphi中的Rails并提供其他REST服务器架构。我认为,如果您想要构建非常大的REST应用程序架构,您应该推出自己的技术或使用这些原型体系结构之一。”
考虑到我拥有Delphi XE Professional并且其中没有DataSnap,根据上述评论,似乎DataSnap不是一个选项。
是否有商业解决方案?我不想考虑“我的REST实现”,我想创建一个Web服务器,该服务器使用我选择的DAC(在本例中为Devart)中使用的一些数据模块。
最终说明:我的目标是编写大型Web应用程序的后端,在客户端上,我想使用Ext JS 4.0,但我希望完全使用JavaScript执行所有客户端工作,以充分利用EXT JS,因此基本上我需要一个Web服务器仅用于数据和跟踪状态,而不是用于提供网页。

此帖子中的链接已失效 (https://stackoverflow.com/questions/3959851/using-rest-with-delphi)。 - Vladimir Pankov
4个回答

16
要创建您的REST服务,请尝试我们的开源mORMot项目。现在它是一个众所周知和稳定的项目,在全球范围内用于生产。
您可以通过实现自定义TSQLRestServerStatic类(类似于TSQLRestServerStaticInMemory类,但调用您的DAC)来使用当前状态的框架中的任何DAC:因此,您将受益于ORM和JSON RESTful体系结构,以及高速http.sys内核模式服务器。
我们的框架不需要使用SQLite3引擎,即使它被设计为与之更好地配合使用。

谢谢您的回答。请问您能否将文档重定向给我?在这个页面(http://synopse.info/fossil/wiki?name=SQLite3+Framework)上,我看到了启动提示...但是您提到的文档在哪里可以找到呢(例如:1.阅读文档中的REST概念部分)?谢谢。 - UnDiUdin
你有超过500页的详细文档和架构在http://synopse.info/forum/viewtopic.php?id=55。特别是要看SAD文档,其中我添加了很多通用介绍,包括为什么以及如何使用REST。在这个SAD文档的开头有一个关键词索引,包括REST。 - Arnaud Bouchez
文档非常庞大,真的很令人印象深刻。我会把它放到我的待办事项列表中。 - UnDiUdin
1
更新:一年后,mORMot能够像内部SQLite3引擎一样与任何数据库后端一起工作。具有一些令人印象深刻的速度结果(例如使用Oracle数组绑定):例如,请参见http://blog.synopse.info/post/2012/07/25/Synopse-mORMot-benchmark。 - Arnaud Bouchez
仅仅为了实现一个REST服务器而使用它太过笨重。 - user30478
2
@user30478 重是指哪方面?也许对于开发人员的学习曲线来说是有一定难度,但对于基于mORMot的解决方案的可执行文件大小或设置而言并不重要。一个运行在Windows和/或Linux上的REST / JSON服务器(使用FPC编译)可以用几行代码实现 - 可以参考https://github.com/synopse/mORMot/tree/master/SQLite3/Samples/36%20-%20Simple%20REST%20Benchmark或https://github.com/synopse/mORMot/tree/master/SQLite3/Samples/28%20-%20Simple%20RESTful%20ORM%20Server或其他示例。 - Arnaud Bouchez

10
如果您需要从零开始开发一个应用程序,我认为mORMot是一个不错的选择,尤其是Delphi是您唯一的选择。如果您选择datasnap,您将不得不忍受性能和稳定性问题。
我在我的博客上写了一篇关于DataSnap(以及mORMot)在大型应用程序中的性能和稳定性的文章,您可以点击以下链接查看: 基于速度和稳定性测试的DataSnap分析

1
你的回答更像是对已接受答案的评论,因为两者都涉及同一产品! - jachguate
欢迎来到Stack Overflow!感谢您发布答案!请务必仔细阅读有关自我推广的FAQ。同时请注意,每次链接到您自己的网站/产品时,必须发布免责声明。 - Andrew Barber
他说这是他写的一篇文章,我已经编辑过了,使得这篇文章和博客更加符合他的意愿。 - Mateus Schneiders

2

我认为你应该看一下 kbmMW,它有一种基于事件驱动的 HTTP 服务器实现基本 REST 服务器的方法。

请查看 news.components4developers.com 的新闻组,那里有很多文档。


1
FireHttp是一个基于Delphi/Object Pascal语言的高性能Web服务器。它支持HTTP 1.1、HTTPS(SSL/TLS)、WebSocket、GZip、Deflate、IOCP和EPOLL。它采用多进程+多线程模型,具有良好的稳定性和并发性能,并提供SDK源代码。开发人员可以使用SDK快速构建高性能的跨平台Web应用程序。

你们预计什么时候发布商业版本? - Darian Miller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接