Dostarczenie jednolitego, zorientowanego na przepływ sterowania interfejsu do różnych enterprise bean (dalej nazywanych komponentami).
Różne typy aplikacji używają różnych podzbiorów funkcji do przepływu sterowania. Standardowym rozwiązaniem jest, że obiekt po stronie klienta wywołuje metody bezpośrednio z komponentu. Być może komponent będzie wywoływał metody kolejnych komponentów. Ten sposób rozwiązania powoduje następujące problemy:
Klient musi wiedzieć o związkach miedzy komponentami. Nic nie zabezpiecza komponentów przed nieprawidłowym użyciem.
Kiedy zmienimy API komponentu, obiekt po stronie klienta tez musi zostać zmieniany.
Nawet jeżeli zbiór komponentów (powiązanych przez przepływ sterowania) znajduje się na tym samym serwerze to klient wciąż musi wywoływać zdalne wywołania dla każdego komponentu z osobna. To powoduje duży ruch w sieci.
Rozwiązaniem tego problemu jest session facade, która zapewnia jednolity, zorientowany na przepływ sterowania interfejs do zbioru komponentów. Ta fasada jest implementowana jako sesion bean.
SessionFacade
dostarcza mechanizmów do przepływu sterowania.
rozdziela prace miedzy komponenty.
EnterpriseBeans
implementuje logikę biznesowa.
nie ma referencji do SessionFacade.
Większa konsekwencja sposobu używania komponentów. Obiekty biznesowe mają mniejsze szanse być nieprawidłowo użyte (o ile bedą wywoływane tylko przez fasadę).
Łatwiejsze wsparcie dla różnych typów klientów. JSP page, servlet, JFC/Swing mogą w łatwiejszy sposób mieć dostęp do danych przez tą sama fasadę.
Miejsce do centralizowania rejestrowania, transakcji i zabezpieczeń.
Redukuje ruch w sieci. Zmniejsza liczbę zdalnych wywołań. Zamiast wywoływać dla każdego komponentu z osobna można to zrobić dla fasady a ona już się połączy z poszczególnymi komponentami (jeżeli są na tym samym serwerze to bedą to wywołania lokalny)
Większa elastyczność implementacji serwera. Session facade może używać enterprie bean, JDBC API, CORBA, lub inne technologie. Ponieważ jest to ukryte przed klientem, zmiany dokonane na serwerze mogą być dokonywane bez modyfikowania programów klienckich.
Użycie fasady po stronie klienta zamiast tej po stronie serwera. Czasem może być łatwiej zrobić fasadę po stronie klienta. Takie rozwiązanie nie zmniejsza ruchu w sieci.
Użycie fasady po stronie klienta oraz fasady po stronie serwera. Tworzymy fasadę po stronie klienta, która rozmawia z fasada po stronie serwera. To oddziela API klienta od API serwera co zapewnia całkowita niezależności podczas tworzenia oprogramowania.