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