Implicit Asynchronous Communication Software Architecture (Non-buffered…
Implicit Asynchronous Communication Software Architecture
Reliability and overhead of indirect invocations may be an issue.
Difficult to test and debug the system
The event source cannot determine
There is more tight coupling between event sources and their
listeners than in buffer-based implicit invocation.
Possibility of parallel execution of event handlings.
System maintenance and evolution: Easy to update both of
event sources and targets.
Framework availability: Many vendor APIs such as Java AWT
and Swing components available.
Reusability of components: Easy to plug-in new event handlers
without affecting the rest of the system.
Independency and flexible connectivity: Dynamic registration and
deregistration can be done dynamically at run-time.
Providing scalability and reliability of message delivery; reliability
Message priority level setting
Control level setting of message acknowledgement
Message persistence setting without loss
Message expiration setting
Providing high degree of anonymity between message producer
The message consumer does not know who produced the message (user independence), where the producer lives on the network (location independence), or when the message was produced (time independence)
Supporting for concurrency among consumers and between
producer and consumers
Supporting batch processing.
Supporting loose coupling between message producers and consumers and between legacy systems and modern systems for integration development.
Increased complexity of the system design and implementation
Complete separation of presentation and abstraction by control
in each agent generate development complexity since communications between agents only take place between the
control of agents.
Capacity limit of message queue. This is not an inherent
limitation but an implementation issue that can be eased if the queue is implemented as a dynamic data structure (e.g., linked
However, there is an absolute limit based on available memory. It is also difficult to determine the numbers of agents needed to
satisfy the loose couplings between agents
A message receiver can still receive messages even if it is not
running at the time the message was sent.
In an event-based invocation system the event handler must be
ready in order to be able to intercept an event and take an action upon that event.
This architectural style is commonly used in the connection
between the Model sub-system and the View sub-system in an MVC or PAC architecture.