Architecture
Components composition
Automorph provides the following building blocks to assemble either standalone RPC clients and servers or integrate with existing systems by freely combining its various plugins:
- RPC client
- RPC server
- RPC endpoint
- RPC protocol
- Effect system
- Message codec
- Client transport
- Server transport
- Endpoint transport
RPC client & server
RPC client & endpoint
Entry points
RPC client
Used to perform type-safe remote API calls or send one-way messages.
Remote APIs can be invoked statically using transparent proxy instances automatically derived from specified API traits or dynamically by supplying the required type information on invocation.
Depends on
Used by
- Applications
RPC server
Used to serve remote API requests using specific transport protocol and invoke bound API methods to process them.
Automatically derives remote API bindings for existing API instances.
Depends on
Used by
- Applications
RPC endpoint
Integrates with an existing server to receive remote API requests using specific transport protocol and invoke bound API methods to process them.
Automatically derives remote API bindings for existing API instances.
Depends on
Used by
- Applications
Plugins
RPC protocol
Remote procedure call protocol plugin.
The underlying RPC protocol must support remote function invocation.
Depends on
Used by
Effect system
Computational effect system plugin.
The underlying runtime must support monadic composition of effectful values.
Used by
Message codec
Structured message format codec plugin.
The underlying data format must support storing arbitrarily nested structures of basic data types.
Used by
The underlying transport protocol must support request/response messaging pattern.
Client transport
Client transport protocol plugin.
Passively sends requests and receives responses to and from a remote endpoint using specific transport protocol.
Depends on
Used by
Server transport
Server transport protocol plugin.
Actively receives requests to be processed by the RPC handler and sends responses using specific transport protocol.
Depends on
Used by
- Applications
Endpoint transport
Existing transport protocol server integration plugin.
Passively parses requests to be processed by the RPC handler and creates responses for specific server.
Depends on
Used by
- Applications