Come spiegare Katana e OWIN in parole e usi semplici?


337

Ho letto molti articoli sui progetti OWIN e Katana, ma non sono riuscito a farne un quadro completo.

Per un normale sviluppatore web che utilizza ASP.NET:

  1. Che cos'è esattamente OWIN e quali problemi risolve (in parole semplici). Qual è la sua relazione con IIS?
  2. OWIN sostituisce IIS? in caso contrario, in quali situazioni si adatta meglio OWIN?
  3. In che modo OWIN può aiutarmi nei miei progetti di lavoro quotidiani?
  4. In che modo OWIN può aiutarmi in progetti di auto-miglioramento?

Potresti considerare di cambiare la risposta accettata considerando che alcuni punti non sono realmente corretti - sono fuorvianti.
Admir Tuzović,

3
Il mio libro su ASP.net suggerisce l'implementazione di Identity e la classe UserManager tramite OWIN e non vedo davvero il punto. Mi ha lasciato completamente confuso ...
Luca

Risposte:


409

Per quanto riguarda il commento sopra, OWIN non è un framework. OWIN è una specifica su come i server Web e le applicazioni Web dovrebbero essere creati al fine di separarli e consentire lo spostamento delle applicazioni ASP.NET in ambienti che prima non erano supportati.

Prima di OWIN, quando si creava un'applicazione ASP.NET, si era intrinsecamente legati a IIS a causa della forte dipendenza System.Webdall'assemblaggio.

System.Web è qualcosa che esiste da quando ASP (versione non .NET) e contiene internamente molte cose di cui potresti non avere nemmeno bisogno (come Web Form o autorizzazione URL), che per impostazione predefinita vengono eseguite su ogni richiesta, consumando risorse e rendendo ASP Le applicazioni .NET in generale sono molto più lente delle sue controparti come ad esempio Node.js.

OWIN stesso non ha strumenti, librerie o altro. È solo una specifica.

Katana, d'altra parte, è un framework completamente sviluppato creato per creare un ponte tra i framework ASP.NET attuali e le specifiche OWIN. Al momento, Katana ha adattato con successo i seguenti framework ASP.NET a OWIN:

  • API Web
  • Segnale R

ASP.NET MVC e Web Form sono ancora in esecuzione esclusivamente tramite System.Web e, a lungo termine, esiste un piano per disaccoppiare anche quelli.

D'altro canto, IIS è un host valido e pieno di risorse per i server Web. Interi problemi di prestazioni ASP.NET che utilizzano IIS hanno System.Websolo radici profonde . Fino a tempi recenti, quando hai deciso come ospitare il tuo server web, avevi due opzioni:

  • IIS
  • Self-Host

Quindi, se volevi uno spettacolo, sceglieresti un'opzione self-host. Se volessi un sacco di funzionalità pronte all'uso fornite da IIS, sceglieresti IIS ma perdi le prestazioni.

Ora, esiste una terza opzione, una libreria Microsoft denominata Helios (nome in codice corrente) che intende rimuoverla System.Webe consentire di utilizzare IIS in un modo più "più pulito", senza librerie o moduli non necessari. Helios è ora in versione pre-release ed è in attesa di ulteriori feedback della community per renderlo completamente supportato dal prodotto Microsoft.

Spero che questa spiegazione chiarisca le cose meglio per te.

EDIT (set 2014):

Con ASP.NET vNext in fase di sviluppo, Katana si sta lentamente ritirando. La versione 3.0 sarà probabilmente l'ultima versione principale di Katana come framework autonomo.

Tuttavia, tutti i concetti introdotti con Katana vengono integrati in ASP.NET vNext, il che significa che il modello di programmazione sarà praticamente lo stesso. Citazione dal post sul forum di David Fowler (architetto di ASP.NET vNext):

vNext è il successore di Katana (motivo per cui sembrano così simili). Katana è stata l'inizio della separazione da System.Web e da componenti più modulari per lo stack web. Puoi vedere vNext come una continuazione di quel lavoro ma andando molto oltre (nuovo CLR, nuovo Project System, nuove astrazioni http).

Tutto ciò che esiste oggi in Katana si farà strada in vNext.

EDIT (febbraio 2015):

ASP.NET vNext è ora noto come ASP.NET 5 e sarà costruito su .NET Core 5. .NET Core 5 è una versione fattorizzata leggera di .NET Framework, progettata per supportare gli obiettivi di ASP.NET 5 e .NET Native . Tuttavia, ASP.NET 5 sarà supportato anche da .NET Framework 4.6, che dovrebbe essere disponibile insieme a .NET Core 5. Sia ASP.NET 5 che .NET Core 5 avranno la licenza MIT e accetteranno i contributi della comunità.

EDIT (maggio 2015):

Inoltre, il marchio API Web ASP.NET verrà interrotto, tuttavia la sua tecnologia sarà la base per il nuovo ASP.NET MVC 6. Le versioni precedenti ASP.NET MVC sono state realizzate implementando IHttpHandler, un'interfaccia definita in System.Web. ASP.NET MVC 6 rimuove tale dipendenza, rendendola portabile su varie piattaforme e server Web.

EDIT (maggio 2016):

ASP.NET 5 verrà ufficialmente rinominato in ASP.NET Core a partire da Release Candidate 2 che dovrebbe essere rilasciato presto. Lo stesso vale per Entity Framework 7 che verrà rinominato in Entity Framework Core. Maggiori informazioni sull'annuncio ufficiale e sui motivi alla base sono disponibili sul post del blog di Scott Hanselman: ASP.NET 5 è morto - Presentazione di ASP.NET Core 1.0 e .NET Core 1.0

EDIT (maggio 2016):

Con il rilascio di Release Candidate 2, ASP.NET Core è stato modificato in modo che le app Web future siano in realtà solo impostazioni delle app della console .NET Core per elaborare le richieste HTTP in arrivo . Questo concetto rende ASP.NET Core ancora più allineato con l'approccio adottato da Microsoft con il supporto dell'architettura di microservizi e la sua implementazione tramite Azure Service Fabric. Maggiori informazioni su sono disponibili sul post ufficiale del blog: Annuncio di ASP.NET Core RC2


2
@ebramtharwat Ora un anno dopo, non sembra che Helios sia una cosa
Andrew Savinykh,

1
Hai detto che Katana v3 sarà probabilmente l'ultima versione importante, quindi andando avanti, quale framework verrà utilizzato per sostituire Katana?
Vincent

2
Le funzionalità di Katana sono state integrate in ASP.NET 5. Katana continuerà a esistere per compatibilità con le versioni precedenti.
Admir Tuzović,

2
@AdmirTuzović: ottima risposta. Altri aggiornamenti da aggiungere da maggio 2016?
Igby Largeman

2
La risposta iniziale con le modifiche successive spiega molto bene le transizioni. Grazie per lo sforzo.
Sang Suantak,

71

Se dovessi definire OWIN per me stesso, sarebbe: "Le migliori idee delle community di sviluppatori web Ruby e Node.js, in arrivo su .NET"

Ma questo non aiuterebbe nessuno sviluppatore ASP.NET. La mia definizione sarebbe qualcosa sulla falsariga di:

OWIN definisce un'interfaccia standard tra i server Web .NET e le applicazioni Web. L'obiettivo dell'interfaccia OWIN è di disaccoppiare il server e l'applicazione Se devo rispondere alle domande che hai posto, eccolo qui:

  1. OWIN è una specifica di interfaccia. Disaccoppia le applicazioni Web da IIS.

  2. Se si utilizzano componenti già pronti (che è quello di Katana), alcune parti della funzionalità dell'applicazione sono molto più facili da implementare rispetto al vecchio ASP.NET. L'autenticazione con provider di identità di terze parti (Facebook, Twitter) ne è un esempio.

  3. OWIN è essenzialmente una raccolta di migliori pratiche, che sono state dimostrate nelle comunità di sviluppo web. Mostra un modo per implementare app Web che è molto aperto all'estensibilità. Poiché ogni sviluppatore web dovrebbe essere costantemente all'avanguardia delle nuove tecnologie, questo è un modo per rimanere aggiornati con l'intera comunità di sviluppo web e non solo con .NET. Se impari OWIN, sarebbe molto più facile imparare altri framework di sviluppo web come Express per node.js o Rack per Ruby, perché le pratiche che usano sono simili.

1
Questo articolo potrebbe anche aiutare a farsi un'idea dei problemi storici risolti da OWIN / katana: asp.net/aspnet/overview/owin-and-katana/… . Detto questo, solo questi framework sono supportati proprio ora sull'host OWIN : owin.org/#projects . Se la tua app utilizza uno di questi framework applicativi, questo può essere ospitato su OWIN.
Praburaj,

Puoi pubblicare qui la sequenza di richieste in arrivo dal browser al punto di risposta restituendo il browser quando si utilizza owinhost.exe. Non sono riuscito a trovare un documento in questo argomento.
Saravanan,

2
I punti 1 e 2 sono fuorvianti, OWIN non può sostituire nulla da solo. Come il punto 4, è solo una specifica che richiede l'implementazione in qualche modo, con le implementazioni di riferimento di Microsoft come Katana e Helios finora.
Mani Gandham,

Le migliori idee delle community di sviluppatori web di Ruby e Node.js, in arrivo su .NET ... puoi
elencarne

1
Middleware. Disaccoppiare l'applicazione dall'ambiente di hosting rendendoli collegabili.
Slavo,

59

Proverò a coprirlo dal punto di vista pratico.

Katana è il nome del progetto per implementare OWIN in Microsoft .

Che cos'è esattamente OWIN e quali problemi risolve (in parole semplici). Qual è la sua relazione con IIS? OWIN ( Open Web Interface per .NET ) è uno standard ( specifica OWIN ) e Katana è la libreria .NET, è possibile ottenere un nuget da qui . OWIN e Katana sono diventati in qualche modo sinonimi sul web.
Prima di OWIN l'unica opzione era IIScon OWIN, è possibile utilizzare qualsiasi altra applicazione (che ha un punto di ingresso) come server Web.

OWIN sostituisce IIS? in caso contrario, in quali situazioni si adatta meglio OWIN?
No, non sostituisce IIS, puoi usare OWIN e IIS per questo c'è Microsoft.Owin.Host.SystemWebnuget . È la soluzione migliore se si desidera ottimizzare / modificare il modo in cui viene gestito in IIS o se si desidera creare il proprio server Web personalizzato partendo dall'applicazione Windows Forms.

In che modo OWIN può aiutarmi nei miei progetti di lavoro quotidiani?
Potrebbe ridurre i costi di gestione del server poiché i tuoi server Web non devono più essere eseguiti su IIS (Windows) (i server Windows sono più costosi di quelli basati su Unix e puoi eseguirlo sull'applicazione console sotto Mono in Linux).

In che modo OWIN può aiutarmi in progetti di auto-miglioramento?
L'apprendimento Microsoft.Owin(e le altre librerie OWIN correlate) miglioreranno le tue conoscenze su come funziona la comunicazione HTTP tra client e server web.

Buona lettura se vuoi capire di più su cosa sono Katana e OWIN.


6
Ben fatto e grazie per aver risposto direttamente alle domande poste piuttosto che avventurarsi lungo la corsia delle tangenziali.
Dav

Cosa succede se utilizziamo sempre un server Microsoft IIS per l'hosting? Sembra che OWIN sia predefinito nei nuovi modelli WebApi2. Devo rimuoverlo come riferimento se intendo ospitare solo / sempre IIS?
TechTurtle,

@TechTurtle Hi Tech, consiglierei di pubblicarlo come domanda separata.
Matas Vaitkevicius,

Spiegazione molto chiara. Grazie per informazioni utili
Uttam

9

Che cos'è OWIN?

OWIN è l'acronimo di Open Web Interface per .NET. OWIN è una specifica che descrive come i framework di sviluppo Web come ASP.NET MVC dovrebbero interagire con i server Web. L'obiettivo di OWIN è di separare le applicazioni Web dal server Web introducendo un livello di astrazione. Tale astrazione consente di eseguire la stessa applicazione su tutti i server Web che supportano OWIN. Inoltre, semplifica l'intero sistema perché il livello di astrazione può fornire un'infrastruttura leggera per ospitare le applicazioni. IIS offre un ricco set di funzionalità per le applicazioni Web. Tuttavia, le applicazioni Web potrebbero non avere bisogno di tutte queste funzionalità. Potrebbe essere sufficiente per loro avere capacità di elaborazione HTTP minime. L'host compatibile OWIN può fornire un tale ambiente di hosting a queste applicazioni. Inoltre, è possibile definire una pipeline di moduli utilizzati durante l'elaborazione della richiesta. Una pipeline OWIN è una catena di componenti compatibili OWIN attraverso cui passa una richiesta.

Cos'è la Katana?

Katana è un set di componenti creato da Microsoft utilizzando le specifiche OWIN. Alcuni di questi componenti includono API Web, ASP.NET Identity e SignalR.

Sopra è estratto dall'articolo di CodeGuru: http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm

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.