ROAD is basically a Service and all its dependent components (Worker, Filters, database, etc.): This is the ROAD backend. This can be extended to several ROAD backend installations, which are connected by a network and by sharing one database instance: This is a ROAD cluster.
Main responsibility of the ROAD Service is to provide interfaces, maintain the database access and create ROAD Workers on demand, which then do the actual audio processing.
The ROAD Service provides several interfaces (APIs), which allow arbitrary clients to connect and make use of ROAD's capabilities. Some clients are part of the basic ROAD package, others are extra products and it's even possible to develop custom clients or implement ROAD interfaces in other products.
The web service is implemented with these features:
- In process hosted
- Provides a REST API
- Simple implementation with .net Web API
- Provides a web socket API for clients to subscribe notifications
- Http/https and (secure) web socket relaying where needed to update the specific location in a ROAD cluster
Hosting web pages is no responsibility of ROAD and must be done with 3rd party standard tools like IIS.
Top Level Architecture
End user clients can be based on web technologies or be implemented as native applications. These can access the ROAD service to send configuration or control commands or to get status information. These interfaces are web based and are hosted by the ROAD service.
Hosting web clients is not part of the actual ROAD infrastructure and so not shown in this picture.
The ROAD backend consists of a set of host machines which share one central database. Each host machine provides a Service, which serves the interface. On demand it creates Worker processes on its machine, which each then processes a ROAD job (e.g. a recording from a local audio device input).
ROAD Service: Windows service which implements a web service. It's responsible for creating and controlling worker processes on its machine.
ROAD Worker: A process which cares for creating a processing DirectShow graphs and running it.
Database: A shareable storage containing configurations for different jobs, templates, schedules, infrastructure descriptions, etc.
The command interface between clients and web service uses a REST API.
The live interface between clients and ROAD services runs via web sockets.
The communication between ROAD service and worker processes is implemented with several pipes.
The arrows in this diagram show the direction of active communication, not the data flow.
Client - Service
Interfaces between client and Service are IP based.
REST: Command interface used by clients to access ROAD Service.
Socket: Live interface used by clients to subscribe and receive live notifications and data. (see Subscriptions, Live Data and Notifications - Overview)
Service - Worker
Interfaces between Service and Workers use unidirectional Windows Pipes. Naming is here from the Workers' perspective.
In Pipe: Command interface to send commands from Service to a Worker.
Out Pipe: Notification interface to send feedback and JSON based status notifications from Worker to its Service.
Live Pipe: Live interface to send (mostly binary) live data from Worker to its Service.