When you are new to RelayServer or coming from an older version, there can be a lot of words to learn. This glossary aims to give you a 25.000-feet overview of common terms and what they mean in the context of RelayServer.
RelayServer v3 supports different types of authentication for different use cases. Connectors, by default, use OAuth 2 client credential authentication to be able to securely communicate with the RelayServer. However you can customize and change that.
When you want to use the Management API we suggest that you use your own existing OIDC-based Identity Provider and configure your clients and the APIs to use this. The demo service uses API keys authentication as an example.
The Body Store is a storage where the body contents of Requests and Responses are stored while a request is being processed. By default a file-based storage is used. An in-memory store is available, too. Bodies are only written to the Body Store when they are too large to be sent inline through the configured Transport.
A Client is an external application or a service, which is sending a Request to a Target, that is made accessible through the RelayServer.
The Connector is a piece of software that runs on a physical location where you want to access local services (aka Targets). The network where the Connector is located in, is usually not publicly accessible from the internet. The Connector creates a connection to the RelayServer, through which the server can send a Request to the connector. The connector then requests the internal Target and relays its Response back to the server, which then relays it back to the requesting Client.
For reasons of higher availability and load balancing, the Connector can be run multiple times at the same location / network. All Connectors on a specific physical location are logically referred to as a Tenant.
The Connector was formerly called OnPremisesConnector (short OPC) in RelayServer v2.
An Interceptor is a piece of code that you can provide via dependency injection which is able to intercept
- a Request, after it was received by the RelayServer and before it is passed along to the Connector or
- a Response, after it was received from the Connector and before it is passed back to the Client.
Interceptors are a flexible way of extending the RelayServer functionality and can be used to modify the corresponding Requests or Responses by changing the url, method, http headers or the body ( payload).
Note: In RelayServer v2 there was also the concept of Interceptors that were executed within the OnPremisesConnector (OPC), before and after a request was passed to the Target. In RelayServer v3 this was changed and you can now implement a custom RelayTarget class to provide the same functionality.
The Management API is a separate service that you can host publicly alongside the RelayServer or only on your private network. The Management API allows the management (creation, configuration, removal) of Tenants.
In RelayServer v2, similar endpoints were an integral part of the RelayServer host process.
The RelayServer is a service that usually is publicly available on the internet. Its main purpose is to receive Requests from Clients, and pass them to a Connector that belongs to the corresponding Tenant. It then waits for the Response to be sent back, and passes it back to the Client. This process is referred to as Relaying.
A RelayTarget is a class that implements handling of a Requests within a Connector. The
default RelayWebTarget
implementation simply executes the Http(s) Requests against the Target
and returns the Response. In order to provide the same functionaly as you could with RelayServer v2
Connector-Side Interceptors, you now can implement your own RelayTarget and add your custom logic here.
The Request represents an external request from a Client. It can be intercepted and modified while being processed by the RelayServer. It will be passed on to a Target via the Connector.
A Response always corresponds to a Request. When the Request was executed by the Target, the Connector will receive the Response and send it back to the RelayServer to be passed back to the Client.
A Target describes a service that is usually not directly exposed to the internet. Instead it is accessible via a Request sent to the RelayServer. This Request is then relayed through a Connector into the Tenants network and then executed. The Response of the Target is then sent back to the RelayServer, which will then relay it back to the Client.
The Tenant describes a physical location (on-premises) where one or more Connectors are installed and ready to relay requests to local Targets that are provided by the Tenant.
The Tenant was formerly called Link in RelayServer v2.
Different communication channels between Connectors and the RelayServer as well as between multiple RelayServer instances are called Transport. By default, RelayServer uses three different Transports: RabbitMQ for communication between RelayServer instances, SignalR for communication from a RelayServer to a Connector and HTTPS for communication from a Connector back to the RelayServer.