client Javascript - che è probabilmente migliore di server? Controller WCF o MVC3 con messaggi riposanti?

4

Sto cercando di scrivere un servizio lato server, a cui si accederà da un client Javascript / HTML5.

Il client probabilmente invierà un sacco di messaggi restful su HTTPS.

A parità di altre condizioni, che è meglio progettato per supportare questo tipo di schema sul serveride - WCF o MVC3 (ad esempio, un controller con solo messaggi restful, nessuna vista reale o modello)?

    
posta blueberryfields 06.02.2012 - 17:37
fonte

3 risposte

2

Se il caso d'uso è abbastanza semplice e devi già supportare un sito MVC, penso che MVC sia una scelta abbastanza buona. In generale, sono anche d'accordo sul fatto che lo standard WCF sia forse un po 'troppo cerimoniale e standardoso e difficile per IoC in modo sano e razionale.

Detto questo, potresti voler controllare l' API Web WCF . È abbastanza semplice da implementare inizialmente, funziona bene con il tuo sito MVC esistente e ha anche alcune potenti possibilità di gestione dei messaggi. I tuoi controller MVC tipici iniziano a diminuire un po '- o almeno il livello di complessità aumenta drammaticamente - quando entri in cose come ETags, suggerimenti sulla cache e così via. Le API Web collegano bene questo intervallo e vale sicuramente la pena di provarlo.

    
risposta data 07.02.2012 - 17:10
fonte
1

Recentemente mi sono imbattuto nella stessa scelta: sto scrivendo una ricca applicazione web con MVC3 per il lato server e avevo bisogno di ospitare dei servizi restful per quelle pagine da colpire.

Ho finito con l'utilizzo di MVC3 e finora ha funzionato molto bene. Con WCF ci si sente come se ci fosse un gran numero di regole e configurazioni da fare solo per iniziare, e molto poco beneficio se non si intende mai esporre i servizi in un modo diverso da REST.

Tutto ciò che serve è un controller che restituisce un JsonResult. Anche la sintassi è molto accurata. Il metodo Json prende qualsiasi oggetto vecchio piano e lo serializza su json, il che rende davvero facile usare Linq per proiettare i dati su tipi anonimi che forniscono un'indicazione molto chiara di ciò che si sta restituendo:

return Json(new 
{ tasks = _TaskList.Where(t => t.Active)
    .Select(new {name = t.Name, status = t.Status, owner_id = t.Owner.Id}) 
});

Ora, hai anche detto di non avere nessun modello. Ma il tuo controller deve eseguire una sorta di logica aziendale, corretta? Vuoi che il tuo controller sia ancora relativamente sottile, dovrebbe essere in delating del lavoro vero per il "modello", se questa è un'altra classe, una libreria un altro servizio, qualsiasi cosa.

    
risposta data 07.02.2012 - 04:20
fonte
0

Prevedi di dover supportare altri clienti lungo la strada? Ad esempio SOAP, coda messaggi, TCP / IP? WCF ha una solida storia di interoperabilità qui.

Personalmente, mi piace lavorare con i Contratti di dati e Contratti di servizio, e adoro la flessibilità di essere in grado di fare un'architettura asincrona unidirezionale quando desidero durabilità o scalabilità un giorno e utilizzare RESTlike HTTP il giorno successivo mantenendo comunque la compatibilità con i client SOAP .

    
risposta data 07.02.2012 - 15:07
fonte

Leggi altre domande sui tag