Quando dovrei usare OWIN Katana?


270

Sono nuovo di OWIN e Katana. Davvero non capisco perché dovrei usare OWIN, mentre posso usare IIS. Per semplificare, la mia domanda è: cosa posso perdere se salta l'apprendimento di OWIN e utilizzo IIS per i miei siti Web?

Ho cercato su Google ma non c'è una spiegazione semplice. Ci sono alcune informazioni qui , ma usano alcune espressioni gergali quindi non riesco a capirle.



2
Mi chiedo quanto la direzione OWIN sia influenzata dall'IoT. Non possiamo davvero attaccare IIS su un Arduino, vero?
Sentinella il

Risposte:


279

In asp.net WebApi v2, la pipeline OWIN diventa l'impostazione predefinita. Alla fine sarà la pipeline standard nell'ambito di qualsiasi progetto asp.net.

Non posso dirlo meglio di quello che è scritto qui: http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

La sezione "L'interfaccia Web aperta per .NET (OWIN)" spiega perfettamente gli obiettivi di OWIN.

Senza OWIN, i bit asp.net sono associati al modo in cui IIS comunica con l'applicazione. OWIN estrae i server Web e i componenti del framework. Ciò significa che il codice dell'applicazione ora sarà a conoscenza dell'interfaccia OWIN, ma non del server web che sta servendo la richiesta.

In cambio, le applicazioni possono essere trasferite più facilmente tra host e potenzialmente intere piattaforme / sistemi operativi. Ad esempio, la possibilità di ospitare un'applicazione in una console o in qualsiasi processo consente a Mono di ospitarla senza sforzi ... (chiunque Raspberry Pi)

Il secondo aspetto è che funziona come una pipeline.


Pipeline Owin


Puoi collegare qualsiasi middleware (e quanti ne vuoi) tra il server web e la tua applicazione.
Ciò consente soluzioni più modulari. È possibile sviluppare software ridistribuibili che possono influire sulla richiesta / risposta proveniente da / dalla propria applicazione, ma mantenere questi moduli separati dal codice dell'applicazione.

Per convincerti dei vantaggi di questo approccio modulare, dai un'occhiata ai pacchetti nuget disponibili per OWIN: http://www.nuget.org/packages?q=owin

Molti di questi pacchetti erano precedentemente funzionalità asp.net di base e sono stati estratti come middleware.
Ad esempio, l'aggiunta di supporto per l'accesso tramite vari provider OAuth diventa un problema di infrastruttura (un middleware) e non deve più far parte del codice dell'applicazione:

O se vuoi sostituire automaticamente tutte le immagini dal tuo sito Web con immagini di gatti carini, puoi farlo anche in modo trasparente:

https://github.com/serbrech/Owin.Catify

EDIT: è ora disponibile come pacchetto nuget : Owin.Catify !


La tua risposta sicuramente è buona in quanto votata, ma per me è difficile capirla.
Seyed Morteza Mousavi,

5
Come posso renderlo migliore? Cosa non capisci?
Stéphane,

1
Sebbene OWIN abbia vantaggi, sembra difficile eseguire il debug poiché il flusso di esecuzione "salterà" efficacemente dal middleware al middleware. Ognuno potenzialmente cambia la risposta lungo la strada. Il debugger di collegamento di Visual Studio non sembra essere in grado di seguire il flusso. E quando si verifica un'eccezione (su un'applicazione Web), otterrai solo una pagina vuota con 200 risposte OK. Nessun errore, a parte il registro eventi di Windows.
simbolo

7
Ho trovato utile la spiegazione su weblogs.asp.net/pglavich/owin-katana-and-getting-started . È un modo per separare l'applicazione da IIS e la dipendenza dall'assemblaggio System.Web. Ridurre la quantità di componenti presenti nella pipeline HTTP, mantenendo così leggera l'app.
Terence,

2
Devo aggiungere che nel mio ambiente attuale, alcuni team usano WebApi e alcuni usano Nancy. Poiché entrambi sono in cima a OWIN, possiamo condividere middleware come la gestione delle chiavi Api o l'autenticazione senza stato, indipendentemente dal framework. Lasciamo che il team scelga ciò che più gli si addice. Questo è il vero vantaggio di OWIN.
Stéphane,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.