我正在学习ArangoDB及其Foxx框架。但是对于使用该框架与构建自己的独立nodejs应用程序来进行API访问控制、逻辑等方面,我并不清楚使用该框架有什么好处。
Foxx框架相比普通的nodejs应用程序有哪些优势呢?
我正在学习ArangoDB及其Foxx框架。但是对于使用该框架与构建自己的独立nodejs应用程序来进行API访问控制、逻辑等方面,我并不清楚使用该框架有什么好处。
Foxx框架相比普通的nodejs应用程序有哪些优势呢?
全面披露:我是ArangoDB核心维护者和Foxx团队的成员。
我建议您观看我去年所做的网络研讨会,详细了解Foxx与Node之间的区别以及在使用ArangoDB时使用Foxx的优势。我将在这里尝试快速概述。
如果您将单一职责原则等思想应用于架构中,则服务器端代码有两个职责:
后端:使用后端数据存储(即ArangoDB或其他数据库)持久化和查询数据。
前端:将查询结果转换为客户端接受的格式(例如HTML、JSON、XML、CSV等)。
在大多数传统应用程序中,这两项职责由同一单块应用程序代码库在同一进程中执行。
然而,与数据存储交互的任务通常需要编写大量特定于数据库技术的代码。您需要编写查询(例如使用SQL、AQL、ReQL或任何其他技术特定语言)或使用特定于数据库的驱动程序。
此外,在许多非平凡应用程序中,您需要与存储过程等东西进行交互,这些也是“后端代码”的一部分,但是存在于数据库中。因此,除了应用程序服务器执行两个不同任务(存储和呈现)外,其中一项任务的一半代码最终存放在其他地方,通常使用完全不同的语言。
Foxx使您能够通过将我们确定为服务器端代码的“后端”逻辑移动到ArangoDB中来解决此问题。不仅可以将查询语言、边缘和集合等细节隐藏在更具应用程序特定API后面,还可以消除处理需要超过单个往返到数据库的请求所需的网络开销。
对于一些简单的应用程序,这意味着你可以完全消除 Node 服务器,直接从客户端访问 Foxx API。对于更复杂的情况,你可能想使用 Node 来构建外部微服务,供 Foxx 服务调用(例如与外部非HTTP API 进行交互)。或者将传统的 Node 应用程序放在 ArangoDB 前面,并使用 Foxx 创建 HTTP API,以更好地表示您应用程序的问题域而不是数据库的原始 HTTP API。
值得注意的是,Foxx 服务在结构上与 Node 应用程序并不完全不同。你可以使用 NPM 依赖项,将代码拆分为模块,并且它可以全部存在于版本控制中,并从 zip 包部署。如果你还没有被说服,我建议你尝试通过将一些最常见的查询实现为 Foxx 端点来进行尝试,然后决定是否要将更多的逻辑移植过去。