除了常规节点应用程序之外,在 Arango Foxx 中构建应用程序提供了什么

What does building an application in Arango Foxx offer beyond a regular node application

我正在了解有关 ArangoDB 及其 Foxx 框架的更多信息。但我不清楚通过使用该框架构建我自己的独立 nodejs 应用程序 API/access 控制、逻辑等我获得了什么

Foxx 提供了哪些常规 nodejs 应用无法提供的功能?

完全披露:我是 ArangoDB 核心维护者,也是 Foxx 团队的一员。

我建议您查看 webinar I gave last year 以详细了解 Foxx 和 Node 之间的差异以及在使用 ArangoDB 时使用 Foxx 的优势。我会在这里做一个简短的总结。

如果您将单一职责原则等理念应用于您的架构,您的服务器端代码将承担两项职责:

  1. 后端:使用后端数据存储(即ArangoDB或其他数据库)持久化和查询数据。

  2. 前端:将查询结果转换为客户端可接受的格式(例如HTML、JSON、XML、CSV等)。

在大多数常规应用程序中,这两个职责由同一进程中的同一单体应用程序代码库 运行 完成。

然而,与数据存储交互的任务通常需要编写大量特定于数据库技术的代码。您需要编写查询(例如使用 SQL、AQL、ReQL 或任何其他特定于技术的语言)或使用特定于数据库的驱动程序。

此外,在许多重要的应用程序中,您需要与存储过程等事物进行交互,这些过程也是 "backend code" 的一部分,但存在于数据库中。因此,除了让应用程序服务器执行两项不同的任务(存储和呈现)之外,其中一项任务的一半代码最终位于其他地方,通常使用完全不同的语言。

Foxx 允许您将我们确定为服务器端代码的 "backend" 的逻辑移动到 ArangoDB 中,从而解决此问题。您不仅可以将查询语言、边缘和集合的所有细节隐藏在更特定于应用程序的 API 之后,您还可以消除处理请求所需的网络开销,这些请求会导致多次往返数据库.

对于简单的应用程序,这可能意味着您可以完全消除节点服务器并直接从客户端访问您的 Foxx API。对于更复杂的场景,您可能希望使用 Node 构建您的 Foxx 服务可以接入的外部微服务(例如,与外部非 HTTP APIs 接口)。或者您只是将传统的 Node 应用程序放在 ArangoDB 前面,并使用 Foxx 创建一个 HTTP API 比数据库的原始 HTTP API.

更好地代表您的应用程序的问题域

还值得记住的是,Foxx 服务在结构上与 Node 应用程序并非完全不同。您可以使用 NPM 依赖项并将您的代码拆分为模块,它们都可以存在于版本控制中并从 zip 包中部署。如果您不相信,我建议您尝试一下,将一些最常见的查询实现为 Foxx 端点,然后决定是否要将更多逻辑移过去。