1
0
Fork 0
arangodb/Documentation/Books/Users/Foxx
Alan Plum 63c6773e39
Document header transport
2016-05-20 16:40:22 +02:00
..
Router Merge Router docs into Routing docs 2016-05-20 16:40:06 +02:00
Sessions Document header transport 2016-05-20 16:40:22 +02:00
Assets.mdpp Document file assets 2016-05-20 16:39:57 +02:00
Auth.mdpp Add user management docs. 2016-05-18 17:04:25 +02:00
Configuration.mdpp Add initial 3.0 Foxx docs 2016-05-18 14:58:43 +02:00
Context.mdpp Add initial 3.0 Foxx docs 2016-05-18 14:58:43 +02:00
Dependencies.mdpp Add initial 3.0 Foxx docs 2016-05-18 14:58:43 +02:00
GettingStarted.mdpp Extend Getting Started with Foxx 2016-05-20 16:40:02 +02:00
LegacyMode.mdpp Add initial 3.0 Foxx docs 2016-05-18 14:58:43 +02:00
Manifest.mdpp Add initial 3.0 Foxx docs 2016-05-18 14:58:43 +02:00
Modules.mdpp Expand existing stubs a bit 2016-05-20 16:40:13 +02:00
OAuth2.mdpp Add initial 3.0 Foxx docs 2016-05-18 14:58:43 +02:00
README.mdpp Expand existing stubs a bit 2016-05-20 16:40:13 +02:00
Scripts.mdpp Add initial 3.0 Foxx docs 2016-05-18 14:58:43 +02:00
Testing.mdpp Add initial 3.0 Foxx docs 2016-05-18 14:58:43 +02:00
Users.mdpp Add user management docs. 2016-05-18 17:04:25 +02:00

README.mdpp

!CHAPTER Foxx

Traditionally server-side projects have been developed as standalone applications that guide the communication between the client-side frontend and the database backend. This has led to applications that were either developed as single monoliths or that duplicated data access and domain logic across all services that had to access the database. Additionally tools to abstract away the underlying database calls could incur a lot of network overhead when using remote databases without careful optimisation.

ArangoDB allows application developers to write their data access and domain logic as microservices running directly within the database with native access to in-memory data. The **Foxx microservice framework** makes it easy to extend ArangoDB's own REST API with custom HTTP endpoints using modern JavaScript running on the same V8 engine you know from Node.js and the Google Chrome web browser.

Unlike traditional approaches to storing logic in the database (like stored procedures) these microservices can be written as regular structured JavaScript applications that can be easily distributed and version controlled. Depending on your project's needs Foxx can be used to build anything from optimized REST endpoints performing complex data access to entire standalone applications running directly inside the database.

!SECTION Foxx anatomy

Each Foxx service is defined by a [JSON manifest][MANIFEST] specifying the entry point, any scripts defined by the service, possible configuration options and Foxx dependencies, as well as other metadata. Within a service these options are exposed as the [Foxx Context][CONTEXT].

At the heart of the Foxx framework lies the [Foxx Router][ROUTER] which is used to define HTTP endpoints. A service can access the database either directly from its Context using prefixed collections or the [ArangoDB database API][MODULES].

While Foxx is primarily designed to be used to access the database itself, ArangoDB also provides an [API to make HTTP requests][MODULES] to external services.

Finally [Scripts][SCRIPTS] can be used to perform one-off tasks, which can also be scheduled to be performed asynchronously using the built-in job queue.

!SECTION Development mode

TODO

!SECTION Foxx store

TODO

!SECTION Cluster-Foxx

TODO

[CONTEXT]: ./Context.md
[MANIFEST]: ./Manifest.md
[MODULES]: ./Modules.md
[ROUTER]: ./Router/README.md
[SCRIPTS]: ./Scripts.md