Sto solo cercando di capire come funziona il rapporto tra webapi, webhost (iis) e owin. Scriverò la mia attuale comprensione e ti chiedo di dirmi se è corretta o meno.Relazione tra Webapi, Webhost e Owin
- WebAPI, a differenza di MVC è stato scritto in modo indipendente dall'host. Era nei giorni pre-Owin, ma a quanto pare avevano anticipato che Owin sarebbe accaduto prima o poi. L'indipendenza dell'host significa principalmente che System.Web non è utilizzato da nessuna parte nel codice Webapi. È System.Web che si basa esclusivamente su IIS e non funzionerebbe senza di esso. In questo modo Webapi potrebbe essere teoricamente ospitato ovunque, una volta che altri host saranno disponibili.
- Webhost (
Microsoft.Owin.Host.SystemWeb
,Microsoft.AspNet.WebApi.WebHost
) è un livello compreso tra un'API di livello superiore (come Webapi) e IIS. Poiché inizialmente Webapi era indipendente dall'host, era necessario un livello intermedio per eseguirlo su un particolare host, come IIS. Webhost per Webapi (Microsoft.AspNet.WebApi.WebHost
) fornito questo livello. Successivamente ci sarà anche il layer Webhost per Owin (Microsoft.Owin.Host.SystemWeb
), che consentirebbe l'hosting di qualsiasi cosa Owin compatibile su IIS. - Owin è venuto intorno l'ultimo. Fondamentalmente forniva un'astrazione che teoricamente avrebbe permesso di ospitare qualsiasi applicazione compatibile Owin su qualsiasi host purché esistesse uno strato tra owin e quell'host. Owin è arrivato con Webhost (
Microsoft.Owin.Host.SystemWeb
) (simile a come Webapi è arrivato con Webhost) che consentiva l'hosting di app Owin su IIS. Veniva anche con l'auto-host (Microsoft.Owin.SelfHost
) che consentiva l'hosting di app Owin all'interno di qualsiasi eseguibile. Per quanto riguarda Webapi, Owin ha anche ospitato l'host Owin per Webapi (Microsoft.AspNet.WebApi.Owin
) che consentiva l'esecuzione di WebApi su stack Owin.
Tutto ciò significa che uno ha due diversi modi di ospitare Webapi su IIS. Può essere fatto senza Owin, usando Webapi WebHost, o può essere fatto con Owin Host per Webapi e con Webhost per Owin.
Nuget riferimenti:
- Microsoft.Owin.SelfHost
- Microsoft.Owin.Host.SystemWeb
- Microsoft.AspNet.WebApi.WebHost
- Microsoft.AspNet.WebApi.Owin
È questa comprensione corretta?
Questa comprensione è corretta? Sì. – Andrei