-
-
Notifications
You must be signed in to change notification settings - Fork 78
Design
This document describes the architecture of this project.
In general, this architecture allows certain tasks to be performed by one or more actors in a certain bus, and where a mediator can choose one or more appropriate actors to perform the actual task.
The main modules we have are the following:
- Bus: Accepts messages and sends those to different actors.
- Actor: Performs a certain action, based on a message from a bus. Can also send messages to other buses.
- Mediator: Wraps over a bus, to detect the best actor for a certain task based on some conditions. For example, a certain mediator could find the fastest HTTP actor.
- Mediator type: A certain category of mediators. For example, different mediation implementations could exist for finding such a fastest HTTP actor.
A message can either can either be a 'can'-message, or an 'action'-message. A 'can'-message is sent to ask actors if they can solve the task, while the 'action'-message tells them to actually perform the task.
Comunica-core only contains the implementation of the core classes of this architecture. Each actor, mediator and mediator type must be a separate module.
We use the following naming convenient for (NPM) modules:
- Bus types:
@comunica/bus-[name-of-bus-type]
- Mediator types:
@comunica/mediatortype-[name-of-mediator-type]
- Mediators:
@comunica/mediator-[name-of-mediator]
- Actors:
@comunica/actor-[name-of-bus-type]-[name-of-actor]
Easier development because of static typing.
Modular component injection, with a semantic config file describing how each component should be wired.