Asynchronous implicit invocation communications( Chapter 8 ) (Non-Buffered…
Asynchronous implicit invocation communications( Chapter 8 )
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.
System maintenance and evolution:
Easy to update both of event sources and targets.
Independency and flexible connectivity: Dynamic
registration and deregistration can be done
dynamically at run-time.
Possibility of parallel execution of event handlings.
Difficult to test and
debug the system
Hard to predict and verify responses
and the order of responses from the listeners.
The event source cannot determine
when a response finished or
the sequence of all responses.
Reliability and overhead of indirect
invocations may be an issue.
There is more tight coupling between
event sources and their listeners than
in buffer-based implicit invocation.
Providing high degree of anonymity between message producer and consumer.
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.
Providing scalability and reliability of
message delivery; reliability mechanisms
Control level setting of message acknowledgement
Message persistence setting without loss
Message priority level setting
Message expiration setting
Supporting batch processing.
Supporting loose coupling between message producers and consumers and between legacy systems and modern systems for integration development.
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 lists).
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.
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.
Increased complexity of the system design and implementation
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.