Current model
This current model is applied to:
Connection
Session
Browser
Consumer
Producer
Where we aways have JMSFacade -> Delegates -> ServerEndpoints. This pattern requires at least 6 entities for each JMS component.
Our current delegates is sort of disconnected and complicated (complicated != complex) because of the unnecessary Aspect.
On the server side, we aways have Advised classes to play the AOP side.
Goals on this refactoring
Simplify code & make it easier to understand
Use traditional OO modeling
Proposed Model
As discussed on Forums
JMS Agnostic MINA --- -------- ---- IoConnector IoAcceptor \ / \ IoSession/ Connection----Connection------------------ | | | | Session Session / \ \ Producer Consumer Consumer
The current client delegate model will become the agnostic implementation.
Interception
The current interception we currently need (Failover for instance) will be placed inside the RemoteComponent that is encapsulating IO (encapsulation of MINA)
Proposed Diagram
!proposedModel.jpg!
Refactoring Roadmap
I - Remove Aspects
II - Place interceptors as valves on MINA components (Failover)
Update on this document: Server and Clients don't share a common interface any more. The client is bound to the Server through our new transport layer. Each packet will be responsible to find the appropriate call on the server side.
Comments