在Arango Foxx中构建应用程序的功能超出了常规节点应用程序

Yeh*_*sef 10 arangodb foxx

我正在学习更多关于ArangoDB和它的Foxx框架.但是我不清楚通过使用该框架构建我自己的独立nodejs应用程序来获取API /访问控制,逻辑等,我获得了什么.

Foxx提供的常规nodejs应用程序不会提供什么?

Ala*_*lum 12

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

我建议看看我去年提供的网络研讨会,详细了解Foxx和Node之间的差异,以及使用ArangoDB时使用Foxx的优势.我会尝试在这里给出一个快速摘要.

如果您将单一责任原则等想法应用于您的体系结构,那么您的服务器端代码有两个职责:

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

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

在大多数传统应用程序中,这两个职责由在同一进程中运行的相同单一应用程序代码库来实现.

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

此外,在许多非平凡的应用程序中,您需要与存储过程之类的东西进行交互,这些存储过程也是"后端代码"的一部分,但存在于数据库中.因此,除了让应用程序服务器执行两个不同的任务(存储和呈现)之外,其中一个任务的一半代码最终会生活在其他地方,通常使用完全不同的语言.

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

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

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