wcf vs web api c#




API Web WCF vs ASP.NET (8)

Ho trascorso alcuni mesi cercando di cogliere i concetti alla base della WCF e recentemente ho sviluppato la mia prima applicazione di servizio WCF.

Ho faticato parecchio per capire tutte le impostazioni nel file di configurazione.
Non sono convinto dell'ambiente ma sembra che tu possa fare cose incredibili con esso.

L'altro giorno ho scoperto che Microsoft è uscita con una nuova cosa chiamata API Web ASP.NET .

Per quello che posso leggere è un framework RESTful , molto facile da usare e implementare.

Ora, sto cercando di capire quali sono le principali differenze tra i 2 framework e se dovrei provare a convertire la mia vecchia applicazione di servizio WCF con la nuova API.

Qualcuno potrebbe, per favore, aiutarmi a capire le differenze e l'uso di ciascuno?


Perché sto rispondendo:

Ho impiegato molto tempo per capire la differenza tra queste due tecnologie. Metterò qui tutti questi punti che penso "Se avessi questi punti nel momento in cui mi stavo chiedendo in giro in cerca di questa risposta, allora ho deciso molto prima di selezionare la mia tecnologia richiesta."

Fonte d'informazione:

Microsoft® Visual Studio® 2015 Unleashed

ISBN-13: 978-0-672-33736-9 ISBN-10: 0-672-33736-3

Perché API Web ASP.NET e WCF:

Prima di confrontare le tecnologie di ASP.NET Web API e WCF, è importante comprendere che esistono effettivamente due stili / standard per la creazione di servizi Web: REST (Representational State Transfer) e SOAP / WSDL. SOAP / WSDL era lo standard originale su cui sono stati creati i servizi Web. Tuttavia, era difficile da usare e aveva formati di messaggi ingombranti (come XML) che riducevano le prestazioni. I servizi basati su REST sono diventati rapidamente l'alternativa. Sono più facili da scrivere perché sfruttano i costrutti di base di HTTP (GET, POST, PUT, DELETE) e in genere utilizzano formati di messaggio più piccoli (come JSON). Di conseguenza, i servizi HTTP basati su REST sono ora lo standard per i servizi di scrittura che si rivolgono strettamente al Web.

Definiamo lo scopo dell'API Web ASP.NET

L'API Web ASP.NET è la tecnologia Microsoft per lo sviluppo di servizi Web HTTP basati su REST. (È passato da molto tempo ASMX di Microsoft, basato su SOAP / WSDL.) L'API Web semplifica la scrittura di servizi affidabili basati su protocolli HTTP comprensibili a tutti i browser e dispositivi nativi. Ciò consente di creare servizi per supportare l'applicazione e chiamarli da altre applicazioni Web, tablet, telefoni cellulari, PC e console di gioco. La maggior parte delle applicazioni scritte oggi per sfruttare la sempre presente connessione Web utilizza i servizi HTTP in qualche modo.

Definiamo ora lo scopo di WCF:

Comunicare attraverso Internet non è sempre il mezzo più efficace. Ad esempio, se sia il client che il servizio esistono sulla stessa tecnologia (o persino sulla stessa macchina), possono spesso negoziare un mezzo più efficiente per comunicare (come TCP / IP). Gli sviluppatori di servizi si sono trovati a fare le stesse scelte che cercavano di evitare. Dovrebbero ora scegliere tra la creazione di servizi interni efficienti e la possibilità di avere l'ampio accesso trovato su Internet. E, se dovessero supportare entrambi, potrebbero dover creare più versioni del loro servizio o almeno proxy separati per accedere al loro servizio. Questo è il problema risolto da Microsoft con WCF .

Con WCF, puoi creare il tuo servizio senza preoccuparti dei confini. È quindi possibile lasciare che WCF si preoccupi di eseguire il servizio nel modo più efficiente, a seconda del client chiamante. Per gestire questa attività, WCF utilizza il concetto di endpoint. Il servizio potrebbe avere più endpoint (configurati in fase di progettazione o dopo la distribuzione). Ogni endpoint indica in che modo il servizio potrebbe supportare un client chiamante: via Web, tramite servizi remoti, tramite Microsoft Message Queuing (MSMQ) e altro. WCF ti consente di concentrarti sulla creazione della tua funzionalità di servizio. Si preoccupa di come parlare in modo più efficiente con i client di chiamata. In questo modo, un singolo servizio WCF può supportare in modo efficiente molti diversi tipi di client.

Esempio di WCF:

Considera l'esempio:

I dati del cliente sono condivisi tra le applicazioni. Ogni applicazione potrebbe essere scritta su una piattaforma diversa e potrebbe esistere in una posizione diversa. È possibile estrarre l'interfaccia cliente in un servizio WCF che fornisce accesso comune ai dati dei clienti condivisi. Ciò centralizza i dati, riduce la duplicazione, elimina la sincronizzazione e semplifica la gestione. Inoltre, utilizzando WCF, è possibile configurare gli endpoint del servizio affinché funzionino nel modo appropriato per il client chiamante. La figura mostra l'esempio di prima con l'accesso centralizzato dei dati del cliente in un servizio WCF.

Conclusione:

i) Quando scegliere l'API Web:

Non si può negare che i servizi HTTP basati su REST come quelli creati utilizzando le API Web ASP.NET sono diventati lo standard per la creazione di servizi Web. Questi servizi offrono un approccio semplice e diretto per gli sviluppatori di siti web che creano servizi. Gli sviluppatori Web comprendono HTTP GET e POST e quindi si adattano bene a questi tipi di servizi. Pertanto, se si stanno scrivendo servizi strettamente indirizzati a HTTP , l'API Web ASP.NET è la scelta logica.

ii) Quando scegliere WCF:

La tecnologia WCF è utile quando è necessario supportare più endpoint di servizio basati su protocolli e formati di messaggi diversi. Prodotti come Microsoft BizTalk sfruttano WCF per la creazione di solidi servizi che possono essere utilizzati sul Web e tramite diverse configurazioni machine-to-machine. Se, tuttavia, è necessario scrivere un'applicazione che comunica su TCP / IP quando connesso al locale rete e funziona su HTTP quando fuori dalla rete, WCF è la tua risposta .

Essere avvisati:

Gli sviluppatori Web spesso considerano la WCF più difficile e complessa da sviluppare. Pertanto, se non si prevede la necessità di servizi multiprotocollo, è probabile che si rimanga con API Web ASP.NET.


ASP.net Web API è interamente basata su HTTP e REST basati su GET, POST, PUT, DELETE con ben noto stile di programmazione ASP.net MVC e JSON restituibile; l'API Web è per tutto il processo leggero e i componenti puramente basati su HTTP. Per poter portare avanti la WCF, anche per il semplice e semplice servizio web singolo, porterà tutto il bagaglio extra. Per un servizio semplice e leggero per chiamate Ajax o dinamiche, sempre WebApi risolve il problema. Questo integra perfettamente o aiuta parallelamente a ASP.net MVC.

Guarda il podcast: Hanselminutes Podcast 264 - Questa non è la WCF di tuo padre - Tutto sulla WebAPI con Glenn Block di Scott Hanselman per ulteriori informazioni.


C'è un confronto su MSDN su questo

API Web WCF e ASP.NET

Per me, la scelta era su Chi sono i clienti e dove si trovano?

All'interno dell'azienda Network e client basati su .NET: utilizzare WCF con binding TCP (comunicazione veloce rispetto a HTTP)

Al di fuori della rete aziendale, utilizza diverse tecnologie come PHP, Python, ecc . Utilizza l'API Web con REST


Con wcf possiamo configurare ed esporre lo stesso supporto di servizio per più endpoint come tcp, http.se vuoi che il tuo servizio sia basato solo su http allora sarà meglio andare con l'API web. L'API Web ha una configurazione molto inferiore rispetto a wcf ed è leggermente più veloce di wcf. Wcf supporta anche servizi restful. Se si dispone di una limitazione di .Net framework 3.5, l'opzione è wcf.


La nuova API Web ASP.NET è una continuazione del precedente progetto API Web WCF (sebbene alcuni concetti siano stati modificati ).

WCF è stato originariamente creato per abilitare i servizi basati su SOAP. Per servizi RESTful o RPCish più semplici (si pensi ai client come jQuery), l'API Web ASP.NET dovrebbe essere una buona scelta.


Negli scenari elencati di seguito dovresti utilizzare WCF:

  1. Se è necessario inviare dati su protocolli come TCP, MSMQ o MIME
  2. Se il cliente che consuma sa solo come consumare i messaggi SOAP

WEB API è un framework per lo sviluppo di servizi RESTful / HTTP.

Ci sono così tanti clienti che non capiscono SOAP come Browser, HTML5, in questi casi le API WEB sono una buona scelta.

L'intestazione dei servizi HTTP specifica come proteggere il servizio, come memorizzare nella cache le informazioni, digitare il corpo del messaggio e il corpo HTTP può specificare qualsiasi tipo di contenuto come HTML e non solo XML come servizi SOAP.


Per quanto riguarda la dichiarazione "WebApi manca di WSDL" ci sono diversi modi per generare il client Rest. Un approccio popolare è Swagger UI / (Swashbukkle Nuget). Ciò offre un'interfaccia completa per comprendere lo schema di input e output del punto finale REST e lo strumento online per testare i punti finali.

JSON LD (Json Linked Documents) è un altro standard emergente che migliorerà ulteriormente l'esperienza di sviluppo REST basata su JSON esponendo lo schema JSON con una semantica migliore.


WCF ti darà tanto spazio, non è nemmeno paragonabile a nulla. A meno che non vogliate fare la vostra implementazione (per nominarne alcuni) di autenticazione, autorizzazione, crittografia, accodamento, limitazione, messaggistica affidabile, registrazione, sessioni e così via. WCF non è [solo] servizi web; WCF è una piattaforma di sviluppo per SOA.







asp.net-web-api