Scegliere la tecnologia giusta per creare il livello di servizio in .NET

Quando si progetta il livello di servizio nelle applicazioni, la scelta della tecnologia da utilizzare nel livello di servizio dipende da molti fattori. In questo articolo, presenterò una discussione su quando e come si può decidere di selezionare la giusta tecnologia per implementare il livello di servizio durante la progettazione di applicazioni in .Net.

Due importanti contendenti che hai durante la progettazione del livello di servizio in .Net sono WCF e API Web. WCF è una piattaforma di sviluppo per SOA: fornisce molte funzionalità e supporta molti protocolli di trasporto diversi. Sebbene WCF sia un framework unificato per la creazione di applicazioni orientate ai servizi, l'API Web è un'alternativa leggera per creare servizi RESTful che possono essere utilizzati da molti client diversi. I servizi RESTful utilizzano HTTP di base e sono semplici con un carico utile molto inferiore rispetto ai servizi SOAP. È possibile utilizzare WebHttpBinding in WCF per creare servizi RESTful non SOAP su HTTP. WCF è molto più versatile nel senso che può supportare molti protocolli di trasporto: HTTP, TCP, ecc. Puoi sfruttare WCF per creare servizi sicuri, affidabili e transazionali in grado di supportare la messaggistica, la comunicazione duplex e canali di trasporto veloce come TCP ,Named Pipes o UDP.

Se è necessario creare servizi leggeri e orientati alle risorse su HTTP in grado di sfruttare tutte le funzionalità del protocollo HTTP, utilizzare il controllo delle versioni, il controllo della cache per i browser e la concorrenza utilizzando Etags, l'API Web è una buona scelta. Dovresti scegliere API Web rispetto a WCF nel tuo livello di servizio quando desideri esporre i tuoi servizi a un'ampia gamma di client, ad esempio browser Web, cellulari, tablet, ecc. L'API Web è leggera ed è adatta su dispositivi con limitazioni larghezza di banda come gli smartphone. Uno dei principali vincoli che ho dovuto affrontare durante l'utilizzo di WCF è la sua configurazione estesa: l'API Web è molto più semplice e facile da usare. Ammetto che WCF è molto più versatile rispetto all'API Web ma, se non hai bisogno delle funzionalità fornite da WCF e tutto ciò di cui hai bisogno sono solo servizi RESTful su HTTP,Preferirei sempre l'API Web in quanto è leggera e semplice da usare.

Vorrei anche presentare una discussione sulle differenze tra API Web e ASP.Net MVC poiché ci sono alcune idee sbagliate su quando scegliere l'una rispetto all'altra. La scelta tra ASP.Net MVC e Web API dipende da molti fattori. Ci sono alcune considerazioni che dovresti tenere a mente prima di decidere di utilizzarne una qualsiasi.

Si noti che l'API Web utilizza i verbi HTTP e quindi la mappatura basata sui verbi HTTP per mappare i metodi alle rispettive rotte. Non è possibile avere metodi sovraccaricati per lo stesso verbo HTTP per una determinata route. È necessario essere consapevoli di questo vincolo di progettazione (sebbene siano disponibili soluzioni alternative) quando si sceglie tra ASP.Net MVC e Web API. A differenza di ASP.Net MVC, l'API Web utilizza il routing basato sui verbi HTTP anziché sugli URI che contengono azioni. Pertanto, è possibile utilizzare l'API Web per scrivere servizi RESTful in grado di sfruttare il protocollo HTTP: è possibile progettare servizi più facili da testare e mantenere. L'instradamento nell'API Web è molto più semplice e puoi sfruttare la negoziazione dei contenuti senza problemi. Il modello di routing in ASP.Net MVC include azioni negli URI.

Un altro punto che vorresti considerare è se desideri che la tua funzionalità venga esposta per un'applicazione specifica o se la funzionalità debba essere generica. Se si desidera esporre i propri servizi specifici per una sola applicazione, si desidera utilizzare ASP.Net MVC: il controller in un'applicazione ASP.Net MVC è specifico dell'applicazione. Al contrario, vorresti un approccio API Web se le tue esigenze aziendali richiedono di esporre la funzionalità in modo generico. Preferirei utilizzare l'approccio API Web se la funzionalità è più incentrata sui dati e l'approccio ASP.Net MVC se la funzionalità è più incentrata sull'interfaccia utente.

È necessario utilizzare l'API Web su ASP.Net MVC se si desidera che il controller restituisca dati in più formati come JSON, XML, ecc. Inoltre, specificare il formato dei dati nell'API Web è semplice e facile da configurare. L'API Web ha anche un punteggio su ASP.Net MVC nella sua capacità di essere ospitata autonomamente (simile a WCF). È necessario che i controller ASP.Net MVC siano ospitati nello stesso server Web in cui è stata ospitata l'applicazione perché i controller ASP.Net MVC fanno parte della stessa applicazione. Al contrario, puoi ospitare i tuoi controller API Web anche al di fuori di IIS: puoi ospitarli in un host personalizzato leggero e consentire che il servizio venga utilizzato da molti client diversi.