Commit 2aa90667 authored by Kaiden Fey's avatar Kaiden Fey Committed by Katharina Fey

Updating rpc-layer docs

parent aa6ffb5e
......@@ -1663,6 +1663,9 @@ dependencies = [
name = "qrpc-sdk"
version = "0.1.0"
dependencies = [
name = "quote"
# rpc-layer (the application) is a set of services, that all communicate
with a shared backend. This creates an extensible architecture (the application) is a set of services, all communicating
with a shared backend. In the case of qaul-hubd, or the android app
for example, this is all done in the same binary.
However because is an extensible architecture, it needs to be
possible for third-party developers to attach their services to an
already running system. After all, there's littel use in creating
abstraction, if each third-party developer needs to host their own
router and database backend.
To accomplish this, the rpc-layer contains several crates to
help out with this challenge.
## Overview
At the core lies the `qrpc-broker`. It creates a server-client
architecture, with a shared set of [Capn Proto] wire formats to encode
APIs, function calls and concrete payload types. To interface with
the broker as a client-lib, you need to use the `qrpc-sdk`, which
exposes utilities to create new wire format extensions.
The `qrpc-broker` backend will accept connections on various channels
(depending on the compiled configuration), which can be interacted
with via the client-libs for each channel. Following is an example.
### Example: map service
You are an [OSM] enthusiast and you want to create an app that can
sync OSM data via, and show dynamicly created points of
interest. You also want people to have chats associated with each POI
that gets reported, but you don't want to have to handle group
encryption, and other problems.
You write a service called `qaul-osm`, and use `qrpc-sdk` as a
dependency to create an API surface for your service. You connect it
to the `qaul-hubd` rpc-broker running on a system, which gives you
access to using the `qaul-chat` service to implement the POI chat.
# rpc-layer
Because aims to be an extensible architecture, the core of
how services (apps) interact with each other is an RPC (remote
......@@ -11,14 +11,13 @@ functions, and type serialisation data.
| Your service | - | qrpc-sdk | - | qrpc-broker |
+--------------+ +--------------+ +--------------+
+--------------+ +--------------+
| Your UI app | - | qrpc-sdk |
+--------------+ +--------------+
Your app UI Deserialise types
+--------------+ +--------------+ +--------------+
| Your UI app | - | qrpc-sdk | - | libqaul |
+--------------+ +--------------+ +--------------+
Your app UI Deserialise types Main db/ router
You can find more information about this layer in the [contributors
You can find more information in the [contributors manual][m].
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment