The SmartWeb Project

10 novembre 2005

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:
  • 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.
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...