2013-01-23 10 views
7

Ho lavorato a un'applicazione web a pagina singola interamente basata su ajax (senza POST) e per ora sto utilizzando ASMX per i servizi Web mentre è in fase di sviluppo. I servizi Web funzionano con i dati JSON. Per il rilascio, so che ho bisogno di eseguire l'aggiornamento a WCF o WebAPI.WCF vs WebAPI e dispositivi mobili nativi

Infine, ho intenzione di creare applicazioni mobili native che funzioneranno con gli stessi servizi Web dell'applicazione web. A parità di condizioni, se devo scegliere tra i due, quale opzione dovrei adottare affinché i servizi Web possano funzionare con diverse app client?

Grazie.

risposta

8

Se la tua applicazione è progettata per essere accessibile solo dai dispositivi mobili di varie piattaforme, significa che dovrai trovare il comune denominatore più semplice per tutte queste piattaforme. Quindi, in altri termini, se l'interoperabilità è la tua preoccupazione, ti concentrerai su un'unica tecnologia di comunicazione che tutta la piattaforma può utilizzare.

JSON + REST sembra essere il comune denominatore più facile per molte piattaforme oggi (ovviamente anche quelle mobili). E se questa è l'unica tecnologia di comunicazione che implementerai, WebAPI sembra la scelta più ovvia.

WCF è più estensibile, più configurabile, è possibile collegare diversi binding, diverse codifiche, su diversi protocolli, implementa SOAP, WS- *, può essere molto veloce (con associazioni accuratamente selezionate), è anche possibile fare JSON + REST con esso, ma non hai bisogno di tutta quella potenza (e WCF può essere anche abbastanza complesso a causa di tutte queste caratteristiche), ciò di cui hai bisogno sembra essere ubiquità e semplicità. Viste le tue esigenze, sceglierei WebAPI.

6

Ho sviluppato un set di servizi Web RESTful utilizzando WCF e recentemente ho avviato un progetto per sostituire WCF con l'API Web ASP.NET. La mia esperienza è che l'API Web ASP.NET è più facile da imparare rispetto a WCF e più semplice da utilizzare. Posso anche dare un paio di motivi per cui si vorrebbe scegliere ASP.NET Web API:

  • WCF gli URL includono l'estensione '.svc'. Ad esempio: http://localhost/MyRestService.svc/. Questo non dovrebbe causare problemi con i client, ma è brutto. È possibile eliminare l'estensione .svc utilizzando il modulo Rewrite URL IIS (vedere this blog post), ma con API Web ASP.NET, non si ha il problema in primo luogo.

  • WCF utilizza lo DataContractJsonSerializer, che genera JSON che può essere problematico per i client. Esempi specifici includono dates e dictionaries. È possibile modificare il serializzatore utilizzato da WCF (vedere questo SO question), ma l'API Web ASP.NET utilizza JSON.NET per impostazione predefinita, che è altamente configurabile.

Se ero agli inizi di oggi e la creazione di un nuovo servizio web RESTful, la scelta di ASP.NET Web API su WCF sarebbe una scelta facile in quanto questo è ciò che è stato progettato per.

+0

Primo motivo: è solo il tuo punto di vista, personalmente non penso che sia brutto né bello :). Seconda ragione: buona! Avevo quasi dimenticato che DataContractJsonSerializer ha alcune sorprese che scopriamo solo dopo averlo giocato per qualche tempo, come questo: [Come gestisci Infinity in JSON generato in .NET] (http: // stackoverflow. com/domande/7997657/how-do-you-handle-infinity-in-jSON-generated-in-net) –

Problemi correlati