Quand dois-je utiliser OWIN Katana?

je suis nouveau à OWIN et Katana. Je ne comprends vraiment pas pourquoi je devrais utiliser OWIN, alors que je peux utiliser IIS . Pour simplifier, ma question Est la suivante: Qu'est-ce que je perds à ne pas apprendre L'OWIN et à utiliser L'IIS pour mes sites web?

j'ai googlé mais il n'y a pas d'explication simple. Il y a quelques informations ici , mais ils utilisent quelques phrases de jargon de sorte que je ne peux pas comprendre.

265
demandé sur Lex Li 2014-01-23 16:45:51

5 réponses

In asp.net WebApi v2, le pipeline OWIN devient le pipeline par défaut. Ce sera finalement le pipeline standard sous n'importe quelle asp.net projet.

Je ne peux pas le mettre mieux que ce qui est écrit ici: http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

de La section "Ouvrir l'Interface Web .NET (OWIN)" , explique parfaitement les objectifs de OWIN.

sans OWIN, le asp.net les bits sont couplés à la façon dont IIS communique avec l'application. OWIN les résumés des serveurs web et des composants de l'infrastructure. Cela signifie que votre code d'application sera maintenant conscient de L'interface OWIN, mais pas du serveur web qui sert la requête.

en retour, les applications peuvent être plus facilement transférées entre des hôtes et potentiellement des plates-formes/systèmes d'exploitation entiers. Par exemple, la possibilité d'héberger une application dans une console ou tout processus permet à Mono de l'héberger sans effort... (Raspberry Pi)

Le deuxième aspect est qu'il fonctionne comme un pipeline.


Owin Pipeline


, Vous pouvez brancher n'importe quel middlewares (et autant que vous voulez) entre le serveur web et votre application.

Cela permet des solutions plus modulaires. Vous pouvez développer redistribuable middlewares qui peuvent affecter la requête / réponse venant de / vers votre application, mais garder ces modules séparés du code d'application.

pour vous convaincre des avantages de cette approche modulaire, regardez les paquets nuget disponibles pour OWIN: http://www.nuget.org/packages?q=owin

beaucoup de ces paquets étaient auparavant core asp.net et ont été extraites comme middleware.

Par exemple, l'ajout d'un support à la connexion en utilisant divers fournisseurs de réseau devient un problème d'infrastructure (un middleware) et ne doit plus faire partie de votre code d'application:

ou si vous souhaitez remplacer automatiquement toutes les images de votre site par des images de chat mignon, vous pouvez le faire de manière transparente ainsi:

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

EDIT : Il est maintenant disponible sous forme de package nuget : Owin.Catify !

271
répondu Stéphane 2014-11-07 10:43:20
public interface OWIN
{
   void ListenHttpCallAndServeWebPage();    
}

namespace Microsoft.OWIN
{
   public class Katana : OWIN
   {
      public void ListenHttpCallAndServeWebPage()
      {
         // listen to a port for HTTP call and serve web page
      } 
   }
}

Oui, c'est ça. OWIN est une interface et Katana est une implémentation D'OWIN interface par Microsoft . Par conséquent, nous entendons ces deux mots (OWIN / KATANA) ensemble et de nombreuses fois nous sommes confondus entre la différence entre ces deux termes. Katana est donc L'implémentation de L'interface OWIN par Microsoft. Disons qu'il y a une autre compagnie appelée BIG-BOSS qui voulait créer leur propre implémentation de OWIN, ils peuvent le faire et nommer leur mise en œuvre comme "BATANA" et de la publicité phrases comme OWIN / BATANA.

alors, pourquoi OWIN !!!

pensez à un pays où le seul véhicule disponible pour le mouvement est un camion. Rien d'autre. Si vous voulez acheter un véhicule, vous achèteriez camion. Eh bien, cela servait à bien, mais les gens ont commencé à réaliser que, ils n'ont pas besoin de camion tout le temps, surtout quand ils veulent aller regarder un cinéma ou acheter du lait, conduire un camion lourd coûte non seulement le carburant élevé, mais aussi ajouter le stress sur la conduite. Mais oui, si ils veulent réaliser beaucoup de trucs lourds, camion sert très bien.

puis, le gouvernement de ce pays est venu avec une spécification pour les fabricants de véhicules. La spécification est la suivante:

  1. Un véhicule a besoin d'avoir 4 roues
  2. Un véhicule doit avoir un directeur.
  3. A le véhicule doit être muni d'un phare et de feux de signalisation.

ainsi, sur la base de ces spécifications, n'importe qui peut fabriquer le véhicule en fonction de différents besoins et ils peuvent nommer leur véhicule en conséquence. Par conséquent, Berline, Camionnette, SUV, VAN,..etc.. toutes sortes de véhicules sont apparus sur le marché. Si quelqu'un n'a pas besoin de transporter de lourdes trucs tout le temps, plutôt besoin d'un véhicule pour aller au travail, il/elle peut acheter une petite Berline. Quelqu'un peut acheter un SUV s'il a besoin de peu plus de puissance.

sur la base de l'exemple ci-dessus, nous pouvons dire que notre ASP.NET Web application utilise le système.Assemblage Web qui est lourdement chargé (comme un camion) et si nous voulons faire une petite Application Web où notre but est juste de servir certains fichiers basés sur un petit ensemble de requêtes, Nous sommes tenus d'utiliser ce système lourd.Web de l'assemblée (le camion). Maintenant, OWIN. OWIN est un ensemble de spécifications (on peut l'appeler interface) qui définit un serveur. Basé sur la spécification, quelqu'un (comme un constructeur automobile) peut faire différents types de serveurs basés sur des domaines de problème / besoins de l'application. Microsoft a créé leur propre implémentation pour OWIN nommé Katana de la même manière qui peut servir L'API Web. Comme WebAPI est une technologie de poids léger, qui n'a pas besoin de système complet.Web things, une implémentation légère du serveur (comme Katana) peut augmenter considérablement les performances lorsque vous utilisez une Api Web hébergée sur Katana.

Maintenant, si vous demandez, ' Est-ce que j'en ai besoin ? La réponse est "Cela dépend de votre besoin de performance". Si ça ne vous dérange pas de conduire votre camion même pour aller regarder un film, alors, peut-être que vous n'avez pas besoin D'OWIN. Mais si vous sentez que, une voiture de poids léger est tout ce dont vous avez besoin pour conduire dans une ville, petite distance, regarder le film..etc.. oui, vous pouvez vérifier quelles implémentations D'OWIN sont disponibles sur le marché. Katana est l'une des implémentations D'OWIN, donc vous pouvez vérifier ce que Katana offre. Non seulement Katana, s'il y en a une autre société implémente OWIN selon un domaine spécifique (par exemple, un serveur pour les dispositifs médicaux qui va télécharger les dernières informations médicales) et si vous êtes un médecin, peut-être, vous pouvez vérifier cette implémentation de OWIN. En outre, vous pouvez créer vous-même votre propre mise en œuvre de OWIN ciblant un créneau spécifique.

en termes d'applications web, si vous êtes un simple développeur Web, le développement de sites Web personnalisés pour vos clients, peut-être, vous n'avez pas besoin de s'inquiéter à propos de la mise en œuvre personnalisée de OWINs, parce que IIS vous servira d'une manière équilibrée. Si vous construisez un projet D'API Web, vous obtiendrez un modèle basé sur Katana fait à partir de Visual Studio -> nouveau projet, de sorte que vous n'aurez pas à vous soucier de quoi que ce soit d'autre que d'apprendre des techniques spécifiques Katana. À L'heure actuelle, Katana n'est pas assez mûre pour remplacer complètement le besoin d'IIS pour ASP.NET MVC, mais peut-être, à l'avenir, il le fera.

alors quand je pourrais avoir besoin d'écrire mon own OWIN Implementation ?

réponse: disons, par exemple, que vous avez développé une application Windows qui devrait fonctionner comme un serveur en arrière-plan et écouter un numéro de port XXXX. Votre serveur ne répondra qu'à quelques requêtes comme celle-ci:

  1. OBTENIR de l'Inventaire
  2. supprimer le numéro D'inventaire = 4
  3. de l'Inventaire ID=5

C'est tout. Et rien d'autre. Alors, pourquoi auriez-vous besoin d'un serveur web IIS complet pour cette petite tâche? Vous pouvez créer votre propre implémentation OWIN dans ce cas. (Peut-être utiliserez-vous Katana pour cela)

Ok, donc j'ai compris que, si je veux faire un ASP.NET MVC website, Je n'ai pas l'option de remplacer IIS, alors pourquoi devrais-je avoir besoin de savoir à propos de Katana en ce moment ?

réponse: même si Katana n'est pas assez mûre pour remplacer le besoin de IIS de sorte que vous pouvez accueillir votre ASP.NET MVC site Web directement sur Katana, mais Katana mis en œuvre de nombreuses interfaces cool D'OWIN afin que vous puissiez profiter de l'utilisation de ces fonctionnalités côte à côte. Par exemple, permettre à vos utilisateurs de se connecter en utilisant Facebook, Google, Twitter etc n'était pas très facile avant. Katana vous donne beaucoup de crochets (comme une middle-ware) de sorte que vous pouvez laisser Katana prendre soin de L'authentification externe basée sur les médias sociaux facilement sans écrire le code de plomberie. Il existe de nombreux autres avantages à l'aide de Katana que vous pouvez trouver lorsque vous commencez à utiliser cette technologie.

202
répondu Emran Hussain 2018-06-18 20:39:28

une version plus simple de cette réponse est que Katana est gong pour remplacer entièrement le système.Web assembly and the old ASP.NET pipeline, qui vous donne à la fois une meilleure flexibilité (l'utiliser dans plus de scénarios et n'utiliser que les pièces que vous aimez) et la performance.

Donc tout le monde devrait regarder son évolution maintenant et être prêt à changer quand c'est enfin terminé.

ci-dessous est un diagramme que J'ai dessiné pour remplir les détails Microsoft ne parvient pas à inclure dans cet article .

enter image description here

OWIN est un tel standard qu'il laisse les cadres d'application fonctionner dessus et oublier tout ce qui se trouve en dessous. D'autre part, OWIN lui-même utilise divers adaptateurs de l'hôte pour s'assurer qu'il peut parler aux serveurs web sous-jacents (IIS et beaucoup d'autres).

je travaille maintenant avec l'auteur du serveur web Jexus pour étudier comment nous pouvons écrire un adaptateur hôte pour OWIN / Katana et Jexus. Nous sommes très heureux d'apprendre QU'OWIN est flexible et hautement personnalisable.

référence: http://blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers /

45
répondu Lex Li 2014-08-03 02:22:41

Pourquoi devrais-je utiliser OWIN, alors que je peux utiliser IIS?

OWIN est conçu pour découpler les serveurs web des cadres dans lesquels vous travaillez. Il peut rendre les applications légères et portables pour les cadres de mélange et les serveurs.

et Katana est L'implémentation de composants OWIN par Microsoft.

depuis quelques années Microsoft rend les outils web plus agiles et plus réactifs que le leur plan est la progression. Pour un exemple, le développement de ASP.Net MVC et ASP.Net Web API. Ils ne dépendent pas du Système.Dll Web qui est un énorme fardeau qu'ils se sentent maintenant je pense. L'avantage est que les deux développements correctifs peuvent être fournis sur une manière opportune et le cycle est plus rapide que jamais. Aussi maintenant les développeurs peuvent déployer ces applications sur des serveurs OWIN personnalisés ou Katana, qui est une référence de L'implémentation OWIN.

Quel est le but après tout?

Microsoft a publié un projet qui est un OWIN Léger basé hébergeur sur le dessus de IIS, appelé `Helios. Le but est d'éviter ASP.NET/IIS relation en fournissant quelques petits composants indépendants qui peuvent être utilisés, installés et gérer indépendamment tournant sur un web-host qui met en œuvre les spécifications OWIN.

L'une des principales raisons est le facteur de performance. Helios sera capable d'atteindre un débit de 2x-3x supérieur à standard ASP.Net application. En termes de consommation de mémoire, Helios est beaucoup mieux que le Système.Web dll. Dans un benchmark pris, L'architecture Helios a permis à une application échantillon de réaliser 50000 requêtes simultanées avec environ 1 Go de moins de frais généraux par rapport à un standard ASP.Net application.

14
répondu nznoor 2014-06-06 23:26:41

OWIN est une abstraction entre l'application web et la plate-forme d'hébergement. Si vous écrivez votre application web en utilisant OWIN vous n'êtes pas lié à IIS, vous pouvez utiliser un autre hôte si vous le souhaitez.

vous avez demandé Pourquoi utiliser OWIN plutôt que IIS, mais ce ne sont pas des alternatives à l'autre. OWIN se situe entre L'IIS et votre application de sorte que vous pouvez passer hors de L'IIS sans réécrire votre application.

vous pouvez également consulter cette page https://github.com/Bikeman868/OwinFramework/wiki/OWIN

0
répondu bikeman868 2017-01-15 00:39:07