Overview

From discussions with a couple of potential Apache Edgent users some themes are emerging.

Multiple applications may need to run on a device within the same provider (container)

Applications may be added or removed as time goes on

Applications within the same provider need to exchange data, say in a publish-subscribe model.

This is also required when a single connection is used to communicate with the IoT scale message hub, so multiple applications need to send data to the message hub without having an individual connection. So almost a Edgent system application that is responsible for publishing to and subscribing from the IoT message hub, and then Edgent apps can publish to a topic that is subscribed to by the ioTDevice app for subsequent sending up to the message hub.

Applications need to be controlled from the back-end, e.g. started stopped etc.

Applications need to restart on failure.

Application status (e.g. running paused etc.) needs to be reported back through the message hub to interested consumers.

Application metrics need to be be reported back through the message hub to interested consumers.

All of the above are in the general vision for Edgent, but not all are implemented.

DirectProvider supports multiple running independent applications.

Applications can be added or removed at any time.

The ControlService is a work-in-progress to allowing arbitrary control objects to be registered by Edgent (e.g. job control), applications or application services, and then updated through the message hub.