在任何 n 层框架的上下文中,通过 REST 解决方案进行远程 SOA 访问可能具有性能优势。
mORMot 文档试图介绍所有这些概念(SOA、REST、MVC、n-Tier、清洁架构、DDD...),然后只讨论性能影响。不要孤立地使用文档语句。考虑整体情况和用例。
为什么 https 比 oracle 连接协议快?
HTTPS 并不是“更快”在 se。意思是它可以更有效地进行远程连接,尤其是通过 Internet。
Oracle 连接协议设计为在本地网络上运行,而 HTTP 是一种查询/应答模型。
Oracle 协议的主要优点是它比简单的查询/应答模型更完整(复杂?):它可以与 Oracle 服务器对话以缓存语句和数据,它可以有实时通知,它可以准备二进制形式的数据,准备进行编码。
在性能方面,Oracle 协议的主要缺点是它需要更多的线路以外的往返:它被设计为在本地网络上工作,具有低延迟。通过 Internet 连接,速度会慢很多,并且出于安全原因,很可能会被封装到 VPN 中 - 进一步降低性能。
我们不应该以抽象的方式谈论“性能”。有几种方法可以给猫剥皮……如果您想要原始查询性能,请使用另一种数据库,例如 Redis。
但对于业务应用程序,主要的“性能”点可能更多地与扩展有关。在这里,Oracle 协议的数据库连接成本更高。维护连接,尤其是维护事务,可能非常苛刻。在典型的 Oracle 服务器上,您最多可以同时维护几十个/百分之一的数据库连接。而让一个 REST 服务器同时维护数千个客户端非常容易。即使您目前只期望少数客户,您如何想象您的未来?如今,所有严肃的应用程序都期望有一个类似 REST 的接口。并将数据库连接保持在服务器端本地。
如果我们让所有功能和查询都在客户端(即使我们会做网络客户端),这不是安全问题吗?
安全性是另一个问题,这里的 REST Web 客户端具有已知且经过验证的策略,以及适当的审计方法。在 REST 接口中,您永远不会“让所有功能在客户端上”。该框架提供了多种身份验证和授权方式 - check the documentation,从 URI 签名到 JWT。
就安全性和可扩展性而言,向整个 Internet 开放 Oracle 端点并不是一个好主意。甚至甲骨文也提供dedicated solutions for proper networking。
无论如何,像 mORMot 这样的框架旨在在一个包中提供 REST、SOA、ORM 和 Web MVC,并且性能是从头开始驱动的 - 作为奖励。如果您希望设计 RAD VCL/FMX 应用程序,请使用直接数据库连接,并以数据为中心。如果您想要更开放和可维护的东西,请考虑 SOA,并以服务为中心。今天,我以Micro-Services 的身份开发我所有的 SOA 解决方案,使用独立的数据库,并以 mORMot 作为工具,具有巨大的性能 - up to million of data items per second。