web-dev-qa-db-fra.com

Quand devrais-je utiliser OWIN Katana?

Je suis nouveau chez 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 si je néglige d'apprendre OWIN et utilise IIS pour mes sites Web?

J'ai googlé mais il n'y a pas une explication simple. Il y a quelques informations ici , mais ils utilisent des expressions de jargon donc je ne peux pas les comprendre.

267

Dans asp.net WebApi v2, le pipeline OWIN devient la valeur par défaut. Ce sera finalement le pipeline standard de tout projet asp.net.

Je ne peux pas le dire 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 manière dont IIS communique avec l'application. OWIN résume les serveurs Web et les composants de structure. Cela signifie que votre code d'application sera désormais au courant de l'interface OWIN, mais pas du serveur Web qui sert 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 dans n’importe quel processus permet à Mono de l’héberger sans effort ... (n'importe qui de Raspberry Pi)

Le deuxième aspect est que cela fonctionne comme un pipeline.


Owin Pipeline


Vous pouvez brancher 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 provenant de/vers votre application, mais en maintenant ces modules séparés du code de l'application.

Pour vous persuader des avantages de cette approche modulaire, jetez un coup d’œil aux packages de 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 du code de votre 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 nuget: Owin.Catify !

275
Stéphane
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 vrai. OWIN est un interface et Katana est un implémentation de l'interface OWIN par Microsoft. Par conséquent, nous entendons ces 2 mots (OWIN/KATANA) ensemble et plusieurs fois, nous confondons la différence entre ces 2 termes. Katana est donc la mise en œuvre par Microsoft de l'interface OWIN. Supposons qu'une autre société nommée BIG-BOSS souhaite créer sa propre implémentation d'OWIN. Elle peut le faire, nommer son implémentation "BATANA" et annoncer des expressions telles que OWIN/BATANA.

Alors pourquoi OWIN !!!

Pensez à un pays où le seul véhicule disponible pour le déplacement est un camion. Rien d'autre. Si vous voulez acheter un véhicule, vous achèteriez un camion. Auparavant, cela servait bien, mais les gens commençaient à se rendre compte qu’ils n’avaient pas besoin de camion tout le temps, surtout quand ils voulaient aller voir un film ou acheter du lait, conduire un camion lourd non seulement coûte cher en carburant, mais aussi ajouter du stress sur la conduite. Mais oui, s’ils veulent transporter beaucoup de choses lourdes, le camion remplit très bien sa fonction.

Ensuite, le gouvernement de ce pays a élaboré un cahier des charges pour les constructeurs automobiles. La spécification est la suivante:

  1. Un véhicule doit avoir 4 roues
  2. Un véhicule doit avoir une direction.
  3. Un véhicule doit avoir des phares et des feux de signalisation.

Ainsi, sur la base de ces spécifications, n'importe qui peut fabriquer un véhicule en fonction de différents besoins et nommer son véhicule en conséquence. Par conséquent, berline, camionnette, SUV, VAN, etc .. tout type de véhicule est apparu sur le marché. Si quelqu'un n'a pas besoin de transporter des objets lourds tout le temps, mais a plutôt besoin d'un véhicule pour se rendre au travail, il/elle peut acheter une petite berline. Quelqu'un peut acheter un VUS 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 objectif est simplement de servir certains fichiers sur un petit nombre de demandes, nous allons utiliser ce lourd System.Web Assembly (camion). Maintenant, OWIN apparaît. OWIN est un ensemble de spécifications (nous pouvons l'appeler interface) qui définit un serveur. Sur la base de cette spécification, une personne (comme un constructeur de véhicules) peut créer différents types de serveurs en fonction de domaines/besoins d’application 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. WebAPI étant une technologie légère, qui n’a pas besoin de toutes les fonctionnalités de System.Web, une implémentation serveur légère (telle que Katana) peut considérablement améliorer les performances lorsque vous utilisez Web Api hébergé 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 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 sentez cela, une berline légère est tout ce dont vous avez besoin pour conduire dans une ville, 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 propose Katana. Pas seulement Katana, si une autre société implémente OWIN selon un domaine spécifique (par exemple, un serveur pour dispositifs médicaux qui télécharge 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 créer vous-même votre propre implémentation d’OWIN en ciblant un créneau spécifique.

En ce qui concerne les applications Web, si vous êtes un simple développeur Web et que vous développez des sites Web personnalisés pour vos clients, vous n'avez peut-être 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 à partir de Visual Studio -> Nouveau projet, de sorte que vous n'aurez plus à vous soucier de l'apprentissage des techniques spécifiques à Katana. En ce moment, Katana n’est pas assez mature pour remplacer complètement le besoin de IIS pour ASP.NET MVC, mais peut-être qu’il le sera à l’avenir.

Puis-je avoir besoin d'écrire ma propre implémentation OWIN?

Réponse: Eh bien, disons par exemple, 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 requêtes de ce type:

  1. Obtenir l'inventaire
  2. SUPPRIMER ID d'inventaire = 4
  3. PUT ID d'inventaire = 5

C'est tout. Et rien d'autre. Alors, pourquoi auriez-vous besoin d’un serveur Web complet IIS 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, alors j'ai 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 assez mature pour remplacer le besoin de IIS, vous pouvez donc héberger votre site Web ASP.NET MVC directement sur Katana, mais Katana a implémenté de nombreuses interfaces OWIN afin de vous permettre de avantage d’utiliser ces fonctionnalités côte à côte. Par exemple, permettre à vos utilisateurs de se connecter à l'aide de Facebook, Google, Twitter, etc. n'était pas très simple auparavant. Katana vous offre de nombreux crochets (intermédiaires) pour que vous puissiez laisser Katana s’occuper facilement de l’authentification externe basée sur les médias sociaux sans écrire de code de plomberie. Katana présente de nombreux autres avantages que vous pourrez découvrir lorsque vous commencerez à utiliser cette technologie.

206
Emran Hussain

Une version plus simple de cette réponse est que Katana est sur le point de remplacer entièrement System.Web Assembly et l'ancien pipeline ASP.NET, ce qui vous offre à la fois une meilleure flexibilité (utilisez-le dans davantage de scénarios et utilisez uniquement les parties que vous aimez) et des performances.

Tout le monde devrait donc suivre son évolution maintenant et être prêt à changer une fois terminé.

Ci-dessous, un schéma que j'ai dessiné pour renseigner les détails que Microsoft ne parvient pas à inclure dans cet article .

enter image description here

OWIN est un standard qui laisse les frameworks d'application s'exécuter et oublie tout ce qui se cache en dessous. Par ailleurs, OWIN utilise lui-même divers adaptateurs d’hôte 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 la possibilité d'écrire un adaptateur d'hôte pour relier OWIN/Katana et Jexus. Nous sommes vraiment 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
Lex Li

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

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.

Katana est l’implémentation par Microsoft des composants OWIN.

Depuis quelques années, Microsoft rend les outils Web plus agiles et réactifs au fur et à mesure de l'avancement de leur plan. Par exemple, le développement de ASP.Net MVC et de l’API Web ASP.Net. Ils ne dépendent pas de dll System.Web qui est un fardeau énorme, ils se sentent maintenant, je pense. L'avantage est que les deux solutions de développement peuvent être fournies rapidement et le cycle est plus rapide que jamais. De plus, les développeurs peuvent également déployer ces applications sur des hôtes OWIN personnalisés ou Katana, qui constitue une référence de la mise en œuvre OWIN.

Quel est l'intérêt après tout?

Microsoft a publié un projet appelé "Helios", un hôte Web léger basé sur OWIN et basé sur IIS. L'objectif est d'éviter les relations ASP.NET/IIS en fournissant des petits composants indépendants qui peuvent être utilisés, installés et gérés en s'exécutant indépendamment sur un hôte Web qui implémente les spécifications OWIN.

L'une des raisons principales est le facteur de performance. Helios pourra atteindre un débit 2 à 3 fois supérieur à celui d'une application ASP.Net standard. En termes de consommation de mémoire, Helios est bien meilleur que System.Web dll. Dans une architecture de référence prise en charge, l’architecture Helios permettait à un exemple d’application de réaliser 50000 demandes simultanées avec environ 1 Go de temps système en moins par rapport à une application ASP.Net standard.

14
nznoor

OWIN est une abstraction entre l'application Web et la plate-forme d'hébergement. Si vous écrivez votre application Web à l'aide d'OWIN et que 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

0
bikeman868