Comp 650 pattern

advertisement
Architectural pattern: Interceptor
• Source: POSA II pp 109 – 140
• Environment: developing frameworks that
can be extended transparently
• Recurring problem:
– Frameworks cannot anticipate all of the services
they will need
– The benefit of a framework is lost if new
services have to be implemented by applications
Requirements for extensibility
• Add a service without requiring
modifications to the framework’s core
architecture
• Adding application-specific services should
not break existing components or
applications
• Applications using a framework may need
to monitor and control its behavior
Examples of framework services
that might use such an extension
mechanism
•
•
•
•
Security
Event logging
Load balancing
Transaction management
(Core of a) solution - interceptors
• Interceptor interfaces provide hooks that
can call service code when certain events
occur
– Event example: arrival of a client request
• Dispatchers manage the concrete
interceptors registered for framework events
• Context objects provide access to event
information and the framework’s internal
state and behavior
Dynamics
1. Application instantiates a concrete interceptor
and registers it with the appropriate dispatcher
2. Framework receives an event
3. Framework passes a context object to the
dispatcher for that type of event
4. Dispatcher calls registered interceptors in the
appropriate order, passing the context object
5. Interceptors do their thing, using the context
object for event data and methods to control
certain aspects of the framework’s behavior
Implementation
Model framework’s internal behavior
Identify and model interception points
Specify context objects
Specify the interceptors
Specify the dispatchers
1.
2.
3.
4.
5.
•
•
Registration interface
Callback interface
6. Implement callback mechanisms
7. Implement concrete interceptors
Known uses
• Component-based application servers
– EJB, CORBA components, COM+
• CORBA ORBs
• Web browsers
– Plug-ins are concrete interceptors
• Non-software: paper mail forwarding
Consequences
• Benefits
–
–
–
–
–
Extensibility and flexibility
Separation of concerns
Support for monitoring and control
Layer symmetry
Reuse of interceptors across applications
• Liabilities
– Complex design issues
– Malicious or erroneous interceptors
– Risk of interception cascades
Download