Session Facade Pattern
Bank example invoked from a Servlet directly to Database (entity beans)
Problems:
- Too many network requests (Client to database)....6
- Not scalable as increase number of clients (tie up resources..database)
while servicing client needs
- If not carefull, the logic could do the withdrawl and fail on the
deposit and the money would be floating in the system
A Solution.....the Session FacadePattern
- Now have 1 network request to a Session Facade code (BankTeller
Session EJB)
- Bundle all of the business logic in a seperated Session Facade
code (Bank Teller Session EJB)
- Able to have better control of processes ...not fail on deposit
or put back money
Extensible to other Business Logic (Session Facade)
Synopsis: Session Facade
Name: Session Facade
Context
A client needs to execute business logic in order to complete
a use case.
Problem (forces)
How can a client execute a use case's business logic in one transaction
and one bulk network call?
Solution
Wrap any business logic in a layer of session programs called
the Sesion Facade. Clients should only have access to these session
programs (beans) and not any underlying data layers, etc. The
session programs (beans) ideally sit on same network/machine as
data programs (entity beans) thus reducing network load.
Related Patterns
Message Facade, Data Transfer Object.
|
AVOID:
Creating session facade "SUPER Class"
...Sometimes developers want to put all the use cases in a systemn in
one session bean. This results in a bloated session bean and reduced
development productivity.
|