![]() |
||
|
The main concepts of the YAMI library were retained in the YAMI4 release as they have proved to be easy to understand and effective in use. In other words - agents, outgoing and incoming messages and parameters are still exposed at the API level, although the notion of ``active object'' was abandoned and only passive message delivery via predefined callback interface is implemented in YAMI4.
Important differences relate to the data model. In the YAMI 3.x line the parameter set was a list of unnamed values and a set of supported types was more limited - in YAMI4 the parameters object is a map (set of named fields) and supports more data types, arrays and nested structures. The parameters object is also used as a vehicle for passing all configuration options as a group - the options and policies had to be set with distinct API calls in the previous version.
Three transport protocols (TCP, UDP and Unix sockets) are supported in YAMI4 and in order to handle the variety of addressing schemes a string-based format with protocol prefixes for all targets was introduced. This is a significant improvement with regard to YAMI 3.x, which supported only TCP connections.
The YAMI4 agent can handle many listeners as opposed to the old YAMI version, where only one listener could be managed by a single agent.
The concept of the ``domain'' was abandoned as it did not solve the addressing problem in any way. In YAMI4 all targets are represented as strings, which do not need any additional indirection layer.
At the transport level, YAMI 3.x maintained two separate concepts of simplex and duplex connections. This distinction is no longer necessary as all connections in YAMI4 are duplex.
The wire protocol was defined from scratch in order to support channel-level multiplexing and message priorities. This concept is new in YAMI4.