Domain & DTO
Il Domain è una classe che ha un scopo ben definito: rappresenta il Business Façade del framework.
In questo ruolo la classe Domain svolge alcune funzionalità ben definite interponendosi tra l'interfaccia utente (le Action) e lo strato di business (i BusinessObject) e persistenza (le BusinessObjectFactory).
È compito del Domain, all'interno dei suoi metodi:
Tra i tanti vantaggi quello forse meno apparente però è quello che è facile rendere un'applicazione distribuibile su più server semplicemente trasformando la classe Domain in un EJB session stateless, compito che sarà assolto dalla classe EnterpriseDomain.
A questo punto entrano in gioco i DTO, ovvero DataTransferObject, che garantiscono, essendo serializzabili che questa operazione sia davvero realizzabile: se tutto quanto passa attraverso il Domain implementa l'interfaccia DataTransferObject o Serializable, potete star sicuri che non avremo mai problemi di scalabilità.
In caso contrario...
In questo ruolo la classe Domain svolge alcune funzionalità ben definite interponendosi tra l'interfaccia utente (le Action) e lo strato di business (i BusinessObject) e persistenza (le BusinessObjectFactory).
È compito del Domain, all'interno dei suoi metodi:
- effettuare i cast verso i tipi appropriati prima di restituire gli oggetti al chiamante, ad esempio castare ad User quando invoca UserFactory.findByKey();
- effettuare i cast o comunque convertire nei tipi appropriati prima di invocare i metodi sulle factory o sugli oggetti di business;
- convertire, specializzare o dettagliare eventuali eccezioni non gestibili dall'utente;
- nascondere all'interfaccia utente la complessità, in termini di classi ed interazioni tra di esse, insita nello strato di business;
- accorpare operazioni multiple che devono essere eseguite in maniera atomica o che devono apparire come una sola operazione.

A questo punto entrano in gioco i DTO, ovvero DataTransferObject, che garantiscono, essendo serializzabili che questa operazione sia davvero realizzabile: se tutto quanto passa attraverso il Domain implementa l'interfaccia DataTransferObject o Serializable, potete star sicuri che non avremo mai problemi di scalabilità.
In caso contrario...
0 Comments:
Posta un commento
<< Home