Implementa il livello di servizio in MVC

1

Abbiamo un livello di servizio definito ospitato in WCF. Stiamo costruendo un sito Web che dovrà utilizzare la funzionalità dei servizi. Il sito Web viene scritto in ASP.NET MVC 4 e sto cercando di decidere come fare riferimento al servizio WCF dall'app MVC. È un sito grande e complesso e cambierà su base settimanale.

La mia prima reazione è quella di astrarre i riferimenti del servizio (circa 7 servizi su questo host WCF) e creare una libreria di facciata di servizio ref con cui interagisce il sito web.

Tuttavia, non so esattamente come utilizzare la facciata del servizio in MVC. Sto iniziando a pensare che i Modelli saranno responsabili perché quando il controllore riceve un modello, quel modello dovrebbe chiamare il servizio (se necessario) e restituire ciò che il controllore ha chiesto. Sto cercando di evitare che l'app MVC conosca i dettagli dei riferimenti del servizio. Quindi, potrei avere una fabbrica modello che crea qualsiasi modello di cui i controllori hanno bisogno e possono usare la facciata del servizio per realizzarla.

È un buon piano o sono fuori pista?

    
posta Dan H 07.12.2012 - 16:25
fonte

2 risposte

1

La facciata del servizio è la strada da percorrere: renderà molto più facile la gestione e il test a lungo termine. È possibile creare la facciata del servizio come una libreria completamente separata, in modo da poter utilizzare la facciata in altre app senza molto da fare.

Nella misura in cui dovevi lasciarlo, tieni presente che MVC è davvero un pattern dell'interfaccia utente, ciò che accade al di sotto della linea di galleggiamento è davvero al di là della sua preoccupazione. Così i tuoi controllori fanno riferimento alla facciata del servizio e tirano fuori i modelli da inviare all'interfaccia utente e non rimanere sbalzati da ciò che è un modello rispetto a un controller.

    
risposta data 07.12.2012 - 17:47
fonte
0

Non mischiare i modelli DTO che utilizzi per il servizio WCF con i modelli che utilizzi per il client MVC. Incontrerai rapidamente disallineamenti.

Usa i controller per mediare tra i due. Va bene invocare direttamente i riferimenti di servizio dai controllori, a meno che non sia difficile da utilizzare e una facciata migliorerà le cose.

(Visualizza) In genere i modelli non dovrebbero fare (o 'chiamare') nulla oltre a fornire dati a una vista. Il controller estrae i dati per configurare un DTO e invoca un metodo di servizio appropriato.

    
risposta data 08.12.2012 - 04:08
fonte

Leggi altre domande sui tag