2012-07-18 8 views
7

Non ho app MVC, con "M" inclusi i livelli Servizio e Deposito.Controller -> Servizio -> Repository: servizio map Entity to ViewModel?

Tuttavia, sono un po 'confuso su dove e come fare un paio di cose.

  1. One Service chiamando due repository, o chiamando il proprio repository e un altro servizio

esempio

Ho un ReferenceDataService, che gestisce tutta la logica per CRUD con le mie tabelle di riferimento.

Quindi nel mio "CustomerService" ho bisogno di "R" i miei dati di riferimento per ottenere ad es. Descrizione invece di Id. Quindi, chiamo il ReferenceDataService o ReferenceDataRepository?

  1. A un certo livello mi piacerebbe mappare da Entity a ViewModel.

Devo farlo nel mio livello di servizio o nel controller?

ad es. Il mio ServiceLayer esegue la mappatura/logica dalla VM all'entità e viceversa?

Grazie :)

risposta

22
  • repository parlare con una fonte di dati sottostante.
  • Il livello di servizio comunica con gli archivi con i modelli di dominio. Accetta/passa modelli di dominio da/al livello del repository.
  • Il controller parla al livello di servizio. Il controllore accetta/passa i modelli di dominio da/al livello di servizio.
  • Il controller chiama il layer di mappatura (se presente) per mappare tra i modelli di dominio e visualizzare i modelli. Se non si dispone di un livello di mappatura, è possibile eseguire la mappatura nel controllore, anche se questo potrebbe diventare rapidamente ingombrante, nel qual caso AutoMapper potrebbe servire come un livello di mappatura molto utile.

Un altro scenario più semplice è quando non è necessario un livello di servizio che è spesso il caso in applicazioni più piccole. Un livello di servizio non porta alcun vantaggio. Quindi il controllore parla direttamente ai repository con i modelli di dominio.

+0

+1 - risposte fantastiche come sempre ....! – bhuvin

+0

Thx :) Penso che stia cancellando il mio livello di servizio ... serve pochissimo scopo nella mia applicazione e l'ho incluso solo perché "si adattava al modello". Doh! – BlueChippy

5

ViewModel contiene i dati necessari per la visualizzazione del modello sulla vista. Se utilizzerai un'altra vista (ad esempio un'applicazione per dispositivi mobili, un'applicazione desktop o anche un servizio Web), dovrai visualizzare altri dati sulla vista. Se si eseguiranno mappature sul livello di servizio, non sarà possibile utilizzarlo con un altro tipo di applicazione. Quindi il controller è un luogo in cui si mappano i dati del dominio per visualizzarli a vista (qualunque sia il tipo di visualizzazione che si ha).

Problemi correlati