Что предлагает создание приложения в Arango Foxx помимо обычного узла

Я узнаю больше об ArangoDB и его фреймворке Foxx. Но мне не ясно, что я получу, используя эту среду для создания собственного автономного приложения nodejs для API/ контроля доступа, логики и т. Д.

Что предлагает Foxx, что обычное приложение nodejs не сможет?

1 ответ

Решение

Полное раскрытие: я ведущий специалист по ArangoDB и являюсь частью команды Foxx.

Я бы посоветовал взглянуть на вебинар, который я дал в прошлом году, для подробного обзора различий между Foxx и Node и преимуществ использования Foxx при использовании ArangoDB. Я постараюсь дать краткое резюме здесь.

Если вы применяете идеи, подобные принципу единой ответственности, к своей архитектуре, ваш код на стороне сервера имеет две обязанности:

  1. Backend: сохраняйте и запрашивайте данные, используя хранилище данных (например, ArangoDB или другие базы данных).

  2. Внешний интерфейс: преобразование результатов запроса в формат, приемлемый для клиента (например, 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, а затем решив, хотите ли вы перенести больше своей логики или нет.

Другие вопросы по тегам