2012-03-07 3 views

risposta

17

Prima di tutto - come al solito - in MVVM voi non hanno di fare qualcosa, si tratta di una raccomandazione o migliori pratiche. In generale, sei libero di codificare l'accesso ai dati nel tuo modello di visualizzazione e fare ciò potrebbe essere una buona pratica per piccoli progetti o implementazioni prototipali.

Tuttavia, si dovrebbe considerare che questo ha anche alcuni inconvenienti. Il motivo per l'implementazione di un servizio dati è che questo componente è riutilizzabile e potrebbe persino essere utilizzabile in altri scenari come un'applicazione MVC. Inoltre, separa la preoccupazione di ottenere il modello da un archivio dati.

Il motivo per l'implementazione di un IDataService è che è possibile scambiare l'implementazione quando è necessario, ad es. per fornire dati sul tempo di progettazione. Quando hai bisogno di questo, devi anche considerare l'inversione del pattern di controllo che si basa pesantemente sulle interfacce. In questo caso anche un contenitore IOC potrebbe essere interessante, anche se non necessario.

Ma, prima di tutto, le raccomandazioni, i modelli, le linee guida di progettazione e le migliori pratiche che ti danno la libertà di progettare un'applicazione che meglio si adatta alle tue esigenze.

Edit: dimensione del servizio dati

La progettazione e la portata del vostro servizio dati dipende dalla vostra applicazione ed è requisiti. Può andare da un singolo servizio dati per tutti i modelli a un servizio dati per modello. Inoltre, la progettazione delle interfacce del servizio dati dell'utente potrebbe essere una decisione separata. Una classe di servizio può implementare diverse interfacce di servizio, consentendo così di nascondere alcuni aspetti (metodi) dell'implementazione all'utente.

Durante la progettazione di un servizio dati è necessario esaminare i modelli unit of work e repository. Esistono diverse implementazioni di esempio.

Se è sufficiente una semplice unità di modello di lavoro basata su una singola query, è possibile dare un'occhiata al mio blog, in cui ho scritto di trasformare un in un'unità di modello di lavoro. Tuttavia, ciò si adatta solo a casi molto semplici, generalmente un'implementazione completa con un repository e una corretta unità di lavoro è più consigliabile.

+0

Obalix: grazie.but devo creare un servizio dati per qualsiasi classe nel modello? –

+1

@raha: vedi modifica. – AxelEckenberger

+0

Obalix: grazie, molto utile :). Lo apprezzo molto. –