Je suis nouveau chez OWIN et Katana. Je ne comprends vraiment pas pourquoi je devrais utiliser OWIN, alors que je peux l'utiliser IIS
. Pour simplifier, ma question est: qu'est-ce que je perds si je saute l'apprentissage OWIN et utilise IIS pour mes sites Web?
J'ai googlé mais il n'y a pas d'explication simple. Il y a des informations ici , mais ils utilisent des phrases de jargon donc je ne peux pas les comprendre.
Réponses:
Dans asp.net WebApi v2, le pipeline OWIN devient la valeur par défaut. Il finira par être le pipeline standard de tout projet asp.net.
Je ne peux pas l'exprimer mieux que ce qui est écrit ici: http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana
La section "L'interface Web ouverte pour .NET (OWIN)" explique parfaitement les objectifs d'OWIN.
Sans OWIN, les bits asp.net sont couplés à la façon dont IIS communique avec l'application. OWIN résume les serveurs Web et les composants du framework. Cela signifie que votre code d'application connaîtra désormais l'interface OWIN, mais pas le serveur Web qui traite la demande.
En retour, les applications peuvent être plus facilement portées entre des hôtes et des plates-formes / systèmes d'exploitation potentiellement entiers. Par exemple, la possibilité d'héberger une application dans une console ou tout autre processus permet à Mono de l'héberger sans efforts ... (Raspberry Pi n'importe qui)
Le deuxième aspect est qu'il fonctionne comme un pipeline.
Vous pouvez connecter tous les middlewares (et autant que vous le souhaitez) entre le serveur Web et votre application.
Cela permet des solutions plus modulaires. Vous pouvez développer des middlewares redistribuables qui peuvent avoir un impact sur la demande / réponse venant de / vers votre application, mais gardez ces modules séparés du code de l'application.
Pour vous convaincre des avantages de cette approche modulaire, jetez un œil aux packages nuget disponibles pour OWIN: http://www.nuget.org/packages?q=owin
Un grand nombre de ces packages étaient auparavant des fonctionnalités asp.net de base et ont été extraits en tant que middleware.
Par exemple, l'ajout de la prise en charge de la connexion à l'aide de divers fournisseurs OAuth devient une préoccupation d'infrastructure (un middleware) et n'a plus besoin de faire partie de votre code d'application:
...
Ou si vous souhaitez remplacer automatiquement toutes les images de votre site Web par des images de chats mignons, vous pouvez également le faire de manière transparente:
https://github.com/serbrech/Owin.Catify
EDIT: Il est maintenant disponible sous forme de paquet de pépites : Owin.Catify !
la source
Oui c'est vrai. OWIN est une interface et Katana est une implémentation de l'interface OWIN par Microsoft . Par conséquent, nous entendons ces 2 mots (OWIN / KATANA) ensemble et souvent nous nous confondons entre la différence entre ces 2 termes. Ainsi, Katana est l'implémentation de Microsoft de l'interface OWIN. Imaginons qu'une autre société nommée BIG-BOSS veuille créer sa propre implémentation de OWIN, ils peuvent le faire et nommer leur implémentation comme 'BATANA' et annoncer des expressions comme OWIN / BATANA.
Alors, pourquoi OWIN !!!
Pensez à un pays où le seul véhicule disponible pour se déplacer est un camion. Rien d'autre. Si vous voulez acheter un véhicule, vous achèteriez un camion. Eh bien, cela servait autrefois bien, mais les gens ont commencé à se rendre compte qu'ils n'avaient pas besoin de camion tout le temps, surtout quand ils veulent aller voir un film ou acheter du lait, conduire un camion lourd coûte non seulement beaucoup de carburant, mais aussi ajouter du stress à la conduite. Mais oui, s'ils veulent transporter beaucoup de choses lourdes, le camion sert très bien le but.
Ensuite, le gouvernement de ce pays a proposé une spécification pour les constructeurs automobiles. La spécification est la suivante:
Ainsi, sur la base de ces spécifications, n'importe qui peut fabriquer un véhicule selon différents besoins et il peut nommer son véhicule en conséquence. Par conséquent, Sedan, Pickup Truck, SUV, VAN, ..etc .. toutes sortes de véhicules sont apparus sur le marché. Si quelqu'un n'a pas besoin de transporter des objets lourds tout le temps, a plutôt besoin d'un véhicule juste pour se rendre au travail, il peut acheter une petite berline. Quelqu'un peut acheter un SUV s'il a besoin d'un peu plus de puissance.
Sur la base de l'exemple ci-dessus, nous pouvons dire que notre application Web ASP.NET utilise System.Web Assembly qui est lourdement chargé (comme un camion) et si nous voulons créer une petite application Web où notre but est simplement de servir des fichiers basés sur un petit ensemble de demandes, nous sommes tenus d'utiliser cet assemblage System.Web lourd (camion). Maintenant, OWIN apparaît. OWIN est un ensemble de spécifications (on peut l'appeler interface) qui définit un serveur. Sur la base de cette spécification, quelqu'un (comme un constructeur de véhicules) peut créer différents types de serveurs en fonction de domaines de problèmes / d'applications spécifiques. Microsoft a créé sa propre implémentation pour OWIN nommée Katana de la même manière qui peut servir d'API Web. Comme WebAPI est une technologie légère, qui ne nécessite pas de système complet.
Maintenant, si vous demandez: « En ai-je besoin?'? La réponse est: «Cela dépend de votre besoin de performances». Si cela ne vous dérange pas de conduire votre camion même pour aller regarder un film, alors, vous n'avez peut-être pas besoin d'OWIN. Mais si vous le sentez, une berline légère est tout ce dont vous avez besoin pour conduire dans une ville, sur une petite distance, regarder un 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, vous pouvez donc vérifier ce que Katana offre. Non seulement Katana, si une autre entreprise implémente OWIN selon un domaine spécifique (par exemple, un serveur pour les dispositifs médicaux qui téléchargera les dernières informations sur les médicaments) et si vous êtes médecin, vous pouvez peut-être vérifier cette implémentation d'OWIN. De plus, vous pouvez vous-même créer votre propre implémentation d'OWIN en ciblant n'importe quel créneau spécifique.
En termes d'applications Web, si vous êtes un simple développeur Web, développant peut-être des sites Web personnalisés pour vos clients, vous n'avez pas à vous soucier de la mise en œuvre personnalisée des OWIN, car IIS vous servira de manière équilibrée. Si vous créez un projet d'API Web, vous obtiendrez un modèle basé sur Katana prêt à l'emploi à partir de Visual Studio -> Nouveau projet, de sorte que vous n'aurez à vous soucier de rien d'autre que d'apprendre des techniques spécifiques à Katana. À l'heure actuelle, Katana n'est pas suffisamment mature pour remplacer complètement le besoin d'IIS pour ASP.NET MVC, mais peut-être que ce sera le cas à l'avenir.
Alors quand dois-je écrire ma propre implémentation OWIN?
Réponse: Eh bien, disons par exemple que vous avez développé une application Windows qui devrait fonctionner en tant que serveur en arrière-plan et écouter un numéro de port XXXX. Votre serveur ne répondra qu'à un ensemble de demandes comme celui-ci:
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, vous utiliserez Katana pour cela)
Ok, j'ai donc compris que si je veux créer un site Web ASP.NET MVC, je n'ai pas la possibilité de remplacer IIS, alors pourquoi devrais-je avoir besoin de connaître Katana en ce moment?
Réponse: Même si Katana n'est pas suffisamment mature pour remplacer le besoin d'IIS afin que vous puissiez héberger votre site Web ASP.NET MVC directement sur Katana, mais Katana a implémenté de nombreuses interfaces intéressantes d'OWIN afin que vous puissiez profiter de l'utilisation de ces fonctionnalités. de côté. Par exemple, autoriser vos utilisateurs à se connecter en utilisant Facebook, Google, Twitter, etc. n'était pas très facile auparavant. Katana vous offre de nombreux crochets (en tant que middleware) afin que vous puissiez laisser Katana s'occuper de l'authentification basée sur les médias sociaux externes facilement sans écrire de code de plomberie. L'utilisation de Katana présente de nombreux autres avantages que vous découvrirez peut-être lorsque vous commencerez à utiliser cette technologie.
la source
what is lightweight part, i mean if Katana is compared to IIS, by which means it is lightweight ( say it does not do step#1,2,3 etc.. , but IIS does that.
Une version plus simple de cette réponse est que Katana est en train de remplacer complètement l'assemblage System.Web et l'ancien pipeline ASP.NET, ce qui vous offre à la fois une meilleure flexibilité (utilisez-la dans plus de scénarios et utilisez uniquement les pièces que vous aimez) et les performances.
Donc, tout le monde devrait regarder son évolution maintenant et être prêt à changer quand il sera finalement terminé.
Voici un diagramme que j'ai dessiné pour remplir les détails que Microsoft n'a pas inclus dans cet article .
OWIN est un tel standard qu'il laisse les frameworks d'application s'exécuter dessus et oublier tout ce qui se trouve en dessous. D'un autre côté, OWIN lui-même utilise divers adaptateurs hôtes pour s'assurer qu'il peut communiquer avec les serveurs Web sous-jacents (IIS et bien d'autres).
Je travaille maintenant avec l'auteur du serveur Web Jexus pour étudier comment nous pouvons écrire un adaptateur hôte pour relier OWIN / Katana et Jexus. Nous sommes vraiment heureux d'apprendre que OWIN est flexible et hautement personnalisable.
Référence: http://blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers/
la source
System.Web
.OWIN est conçu pour dissocier les serveurs Web des frameworks sous lesquels vous travaillez. Il peut rendre les applications légères et portables pour les frameworks de mixage et les serveurs.
Et Katana est l'implémentation par Microsoft des composants OWIN.
Depuis quelques années, Microsoft rend les outils Web plus agiles et réactifs à mesure que leur plan progresse. Par exemple, le développement d'ASP.Net MVC et d'ASP.Net Web API. Ils ne dépendent pas de la DLL System.Web qui est un énorme fardeau qu'ils ressentent maintenant, je pense. L'avantage est que les deux correctifs peuvent être fournis en temps opportun et que le cycle est plus rapide que jamais. Désormais, les développeurs peuvent également déployer ces applications sur des hôtes OWIN personnalisés ou Katana, qui est une référence de mise en œuvre OWIN.
À quoi bon après tout?
Microsoft a publié un projet qui est un hôte Web léger basé sur OWIN au-dessus d'IIS, appelé `Helios. Le but est d'éviter la relation ASP.NET/IIS en fournissant quelques petits composants indépendants qui peuvent être utilisés, installés et gérés indépendamment en s'exécutant sur un hôte Web qui implémente les spécifications OWIN.
L'une des principales raisons est le facteur de performance. Helios sera en mesure d'atteindre un débit 2x-3x plus élevé que l'application ASP.Net standard. En termes de consommation de mémoire, Helios est bien meilleur que la DLL System.Web. Dans une architecture de référence, Helios a permis à un exemple d'application de réaliser 50000 requêtes simultanées avec environ 1 Go de temps de travail en moins par rapport à une application ASP.Net standard.
la source
OWIN est une abstraction entre l'application web et la plateforme 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 les unes aux autres. OWIN se situe entre IIS et votre application afin que vous puissiez désactiver IIS sans réécrire votre application.
Vous pouvez également consulter cette page https://github.com/Bikeman868/OwinFramework/wiki/OWIN
la source