What exactly is devel.one?
What is the Difference Between devel.one and Message Oriented Middleware (MOM)?
Does devel.one now implement a message passing? Or is it more of a message queueing? Maybe we have a Publish & Subscribe here? Is it an implementation of the JAVA™ Message Service?
No. devel.one is indeed something new, and cannot simply be described by a single term. Let's take a look at the features:
- devel.one uses a point-to-point communication between devel.one objects (targets). However, the sender and receiver do not set up queues, but the targets are registered in a namespace. From the ID of the NODES in which the namespace is located, from the ID of the namespace and the ID of the target, a unique address is obtained. The peer-to-peer network on NODES is able to deliver a message with a devel.one receiver address directly, even if many other NODES are located between sender and recipient.
- Messages are sent back automatically by the system, because directed messages also have a sender address. The sender receives feedback very shortly after sending the message. devel.one implements a fast round-trip, which is suitable for real-time communication. The message should only be very short-lived, but it can be used in high frequency.
- devel.one does not store any messages. If a target does not exist, the message returns to the sender with an error code. This allows the sender to react appropriately. If a NODE fails, the receiver can be changed to a redundant receiver NODE, for example. In order to minimize program interruptions caused by the interruption of a link and thus errors in delivery, there is the concept of a meshed network in which many links lead to the destination. devel.one NODES will always route messages to their destination in the fastest and shortest possible way, even if many routes would be possible.
- The devel.one messaging is always asynchronous, i. e. during the time between sending a message and receiving the reply, the sender can receive and process further messages. There is no RPC mechanism.
- The services provide a publishing and subscription mechanism. These are very lightweight and versatile. In principle, Observer is bound to a service ID. If a message is now sent to the service (and not directly to a target), a copy of the message is sent to all observers. This can be used as a notification (one trigger, many receivers), as a service (an observer = implementer of the service), or as a hook (observer to service, listen in). Load balancing can also be implemented in this way.
- devel.one is not a middleware, but a peer-to-peer network of NODES and links. NODES can be used pure (as a node between others). They can be enriched with microservices (as APPs or plug-ins) and take over "server" functionality (although no client is directly connected to them). NODES can also start user interfaces, which can be split into different plug-ins (like the "Monitor"). It can be used to control devices, machines and sensors with the appropriate plug-ins. Or a combination of all possibilities, because the rigid division between server and client is no longer necessary. And finally, NODES can be embedded into existing software as a small library (approx. 750 KByte). This makes each JAVA™ program the NODE.
- The programmer merely develops his business model in the form of plug-ins or APPs.
- The protocol is independent of platform and programming language. JAVA™ is the first step.