Il livello di presentazione dovrebbe utilizzare oggetti di dominio restituiti dal livello di servizio?

3

Ad esempio, se esiste un controller che chiama una classe CountryService e la classe CountryService utilizza una classe Paesi, nel caso in cui CountryService restituisca la CountryClass al controller? O il servizio dovrebbe avere un altro tipo di DTO che contiene informazioni sui Paesi, ma è usato solo dal livello di presentazione e lo deve invece dare al controller?

    
posta user3000391 28.02.2017 - 22:17
fonte

1 risposta

1

Questo dipende dall'architettura dell'applicazione. Ad esempio:

  • nel MVC originale, il controller e la vista possono entrambi accedere agli oggetti del modello.
  • in MVP , il controller funge da intermediario ( che consente al modello di essere su un server remoto), quindi in questo caso preferiresti aspettare alcuni oggetti DTO da essere usato.

Ma dipende anche dalla semantica dei tuoi oggetti:

  • gli oggetti del tuo Paese possono essere clonati (localmente o in remoto tramite la serializzazione / deserializzazione) perché contengono solo la copia di uno stato fisso (ad esempio nome del paese, lingue ufficiali, valuta)?
  • o è il tuo Paese un oggetto che è unico e che può avere il suo stato potenzialmente aggiornato da eventi esterni alla tua applicazione (ad esempio una stima della popolazione basata su un modello che stima la crescita della popolazione ogni secondo o semplicemente perché diversi clienti potrebbero aggiornare l'oggetto contemporaneamente?

In quest'ultimo caso, non avresti mai manipolato in modo definitivo un oggetto modello: avresti dovuto lavorare con un DTO o un oggetto proxy e usare alcuni identity mapper . Ma questo renderà immediatamente il problema più complesso, sollevando la questione di concorrenza ottimistica vs concorrenza pessimistica .

    
risposta data 28.02.2017 - 23:12
fonte