web-dev-qa-db-fra.com

Comment expliquer Katana et OWIN avec des mots simples et des utilisations?

J'ai lu de nombreux articles sur les projets OWIN et Katana, mais je ne pouvais pas en avoir une image complète.

Pour un développeur Web normal qui utilise ASP.NET:

  1. En quoi consiste exactement OWIN et quels problèmes est-il résolu (en termes simples). Quelle est sa relation avec IIS?
  2. Est-ce que OWIN remplace IIS? Si non, dans quelles situations OWIN convient-il le mieux?
  3. Comment OWIN peut-il m'aider dans mes projets de travail quotidiens?
  4. Comment OWIN pourrait-il m'aider dans des projets d'auto-amélioration?
329
ebram khalil

En ce qui concerne le commentaire ci-dessus, OWIN n'est pas un cadre. OWIN est une spécification sur la manière dont les serveurs Web et les applications Web doivent être construits afin de les découpler et de permettre le déplacement des applications ASP.NET dans des environnements qui n'étaient pas pris en charge auparavant.

Avant OWIN, lors de la création d'une application ASP.NET, vous étiez lié de manière inhérente à IIS en raison de la forte dépendance de System.Web Assembly.

System.Web est quelque chose qui existe depuis ASP (version autre que .NET) et contient en interne de nombreux éléments dont vous n’auriez même pas besoin (tels que Web Forms ou Autorisation d’URL), qui par défaut s’exécute à chaque requête, consommant ainsi des ressources et rendant les applications ASP.NET généralement beaucoup plus lentes que leurs homologues telles que Node.js par exemple.

OWIN lui-même n'a pas d'outils, de bibliothèques ou quoi que ce soit d'autre. C'est juste une spécification.

Katana, d’autre part, est un framework entièrement développé conçu pour faire le pont entre les frameworks ASP.NET actuels et la spécification OWIN. Actuellement, Katana a adapté avec succès les frameworks ASP.NET suivants à OWIN:

  • API Web
  • Signal R

ASP.NET MVC et Web Forms fonctionnent toujours exclusivement via System.Web. À long terme, il est également prévu de les découpler.

Par contre, IIS est un bon hôte ressources pour les serveurs Web. L’ensemble des problèmes de performances ASP.NET avec IIS a des racines profondes dans System.Web uniquement. Jusqu'à récemment, lorsque vous avez décidé d'héberger votre serveur Web, vous disposiez de deux options:

  • IIS
  • Auto-hôte

Donc, si vous vouliez une performance, vous choisiriez une option d’auto-hôte. Si vous souhaitiez utiliser de nombreuses fonctionnalités prédéfinies fournies par IIS, optez pour IIS, mais vous perdez de la performance.

Maintenant, il existe une troisième option, une bibliothèque Microsoft nommée Helios (nom de code actuel), qui a pour objectif de supprimer System.Web et de vous permettre d'utiliser IIS. de manière plus "propre", sans bibliothèques ni modules inutiles. Helios est maintenant en version préliminaire et attend d'autres commentaires de la communauté afin de rendre le produit Microsoft entièrement pris en charge.

J'espère que cette explication clarifie les choses mieux pour vous.

EDIT (Sep 2014):

Avec ASP.NET vNext en cours de développement, Katana prend progressivement sa retraite. La version 3.0 sera probablement la dernière version majeure de Katana en tant que framework autonome.

Cependant, tous les concepts introduits avec Katana sont en cours d'intégration dans ASP.NET vNext, ce qui signifie que le modèle de programmation sera sensiblement le même. Citation de message sur le forum réalisé par David Fowler (architecte de ASP.NET vNext):

vNext est le successeur de Katana (c'est pourquoi ils se ressemblent tellement). Katana marquait le début de la rupture avec System.Web et des composants plus modulaires pour la pile Web. Vous pouvez voir vNext comme une continuation de ce travail mais en allant beaucoup plus loin (nouveau CLR, nouveau système de projet, nouvelles abstractions http).

Tout ce qui existe aujourd'hui dans Katana fera son chemin dans vNext.

EDIT (février 2015):

ASP.NET vNext est maintenant connu sous le nom d'ASP.NET 5 et sera basé sur .NET Core 5. .NET Core 5 est une version factorisée légère de .NET Framework, conçue pour prendre en charge les objectifs ASP.NET 5 et .NET Native. . Cependant, ASP.NET 5 sera également pris en charge par .NET Framework 4.6, qui devrait devenir disponible avec .NET Core 5. ASP.NET 5 et .NET Core 5 seront sous licence sous MIT et acceptera les contributions de la communauté.

EDIT (mai 2015):

En outre, la marque des API Web ASP.NET sera abandonnée, mais sa technologie reposera sur la nouvelle version d'ASP.NET MVC 6. Les versions précédentes d'ASP.NET MVC ont été créées en implémentant IHttpHandler, une interface définie dans System.Web. ASP.NET MVC 6 supprime cette dépendance, ce qui la rend portable sur diverses plates-formes et serveurs Web.

EDIT (mai 2016):

ASP.NET 5 sera officiellement renommé ASP.NET Core à partir de la version Release Candidate 2, dont la publication est prévue prochainement. Il en va de même pour Entity Framework 7, qui sera renommé Entity Framework Core. Vous trouverez plus d’informations sur l’annonce officielle et les raisons de cette annonce sur le blog de Scott Hanselman: ASP.NET 5 est mort - Introduction à ASP.NET Core 1.0 et .NET Core 1.

EDIT (mai 2016):

Avec la version Release Candidate 2, , ASP.NET Core a été modifié pour que les futures applications Web ne soient plus que la configuration de la console .NET Core pour le traitement des demandes HTTP entrantes . Ce concept permet à ASP.NET Core de s’aligner encore plus sur l’approche adoptée par Microsoft en matière de prise en charge de l’architecture de microservices et de son implémentation via Azure Service Fabric. Plus d'informations sur peuvent être trouvées sur le blog officiel: Annonce ASP.NET Core RC2

393
Admir Tuzović

Si je dois définir OWIN pour moi-même, ce serait: "Les meilleures idées des communautés de développement Web Ruby et Node.js, venant vers .NET"

Mais cela n’aidera aucun développeur ASP.NET. Ma propre définition serait quelque chose comme:

OWIN définit une interface standard entre les serveurs Web .NET et les applications Web. L’interface OWIN a pour but de découpler le serveur et l’application. Si je dois répondre aux questions que vous avez posées, alors la voici:

  1. OWIN est une spécification d'interface. Il sépare les applications Web d'IIS.

  2. Si vous utilisez des composants prêts à l'emploi (comme Katana), certaines parties des fonctionnalités de l'application sont beaucoup plus faciles à implémenter par rapport à l'ancien ASP.NET. L'authentification avec des fournisseurs d'identité tiers (Facebook, Twitter) en est un exemple.

  3. OWIN est essentiellement un ensemble de meilleures pratiques éprouvées dans les communautés de développement Web. Cela montre un moyen d'implémenter des applications Web très ouvert à l'extensibilité. Comme chaque développeur Web doit être constamment à la pointe des nouvelles technologies, il s'agit d'un moyen de rester à jour avec l'ensemble de la communauté du développement Web et pas seulement .NET. Si vous apprenez OWIN, il serait beaucoup plus facile d’apprendre d’autres frameworks de développement Web comme Express for node.js ou Rack for Ruby, car les pratiques qu’ils utilisent sont similaires.
71
Slavo

Je vais essayer de le couvrir du point de vue pratique.

Katana est le nom du projet implémenter OWIN dans Microsoft .

En quoi consiste exactement OWIN et quels problèmes est-il résolu (en termes simples). Quelle est sa relation avec IIS? OWIN ( Interface Web ouverte pour .NET ) est un standard ( Spécification OWIN ) et Katana est. Bibliothèque NET, vous pouvez obtenir le nuget d'ici . OWIN et Katana sont devenus un peu synonymes sur le Web.
Avant OWIN, votre seule option était IIS avec OWIN, vous pouvez utiliser n’importe quelle autre application (comportant un point d’entrée) comme serveur Web.

Est-ce que OWIN remplace IIS? Si non, dans quelles situations OWIN convient-il le mieux?
Non, cela ne remplace pas IIS, vous pouvez utiliser OWIN et IIS il y a Microsoft.Owin.Host.SystemWeb nuget pour cela . Il est préférable de l’optimiser si vous souhaitez optimiser/modifier la façon dont il est géré dans IIS, ou si vous souhaitez créer votre serveur Web personnalisé à partir de Windows Forms Application, par exemple.

Comment OWIN peut-il m'aider dans mes projets de travail quotidiens?
Cela pourrait réduire les coûts d’exploitation de votre serveur, car vos serveurs Web n’ont plus besoin de fonctionner sur IIS (Windows) (les serveurs Windows sont plus chers que ceux basés sur Unix, et vous pouvez également l’exécuter sur. Application console sous Mono sous Linux).

Comment OWIN peut-il m'aider dans un projet d'amélioration personnelle?
Learning Microsoft.Owin (et d’autres bibliothèques OWIN associées) vous permettra de mieux comprendre le fonctionnement de la communication HTTP entre le client et le serveur Web.

Bonne lecture si vous voulez en savoir plus sur Katana et OWIN.

58
Matas Vaitkevicius

Qu'est-ce que OWIN?

OWIN signifie Open Web Interface for .NET. OWIN est une spécification qui décrit comment les infrastructures de développement Web telles que ASP.NET MVC doivent interagir avec les serveurs Web. OWIN a pour objectif de découpler les applications Web du serveur Web en introduisant une couche d'abstraction. Une telle abstraction vous permet d'exécuter la même application sur tous les serveurs Web prenant en charge OWIN. En outre, cela simplifie le système dans son ensemble, car la couche d'abstraction peut fournir une infrastructure légère pour héberger les applications. IIS fournit un ensemble complet de fonctionnalités aux applications Web. Cependant, les applications Web peuvent ne pas avoir besoin de toutes ces fonctionnalités. Il pourrait suffire qu’ils disposent de capacités de traitement HTTP minimales. L'hôte compatible OWIN peut fournir un tel environnement d'hébergement à ces applications. De plus, vous pouvez définir un pipeline de modules utilisés lors du traitement de la demande. Un pipeline OWIN est une chaîne de composants compatibles OWIN par lesquels une requête passe.

Qu'est-ce que le Katana?

Katana est un ensemble de composants Microsoft construit avec les spécifications OWIN. Certains de ces composants incluent Web API, ASP.NET Identity et SignalR.

Ci-dessus, extrait de CodeGuru Article: http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm

8
Venkatesh Muniyandi

ASP.NET existe depuis plus d'une décennie maintenant. Le monde du développement Web a radicalement changé au cours des deux dernières années. Certains des problèmes auxquels nous avons tous pu faire face lorsque nous travaillons avec ASP.NET sont les suivants:

Monolithique: Dans ASP.NET, le système d'assemblage. Web comprend toutes les fonctionnalités ASP.NET. Cela signifie que toute nouvelle fonctionnalité peut être publiée uniquement dans le cadre d'une nouvelle version de structure.

Comme le framework contient de nombreux composants autres qu'ASP.NET, les versions du framework ne peuvent pas arriver très fréquemment. Par conséquent, les nouvelles fonctionnalités d'ASP.NET dépendent du framework. C'est un inconvénient de Web Forms.

Comme nous l'avons vu au cours des dernières années, les technologies Web ont évolué à un rythme très rapide. Auparavant, nous avions des technologies de script côté serveur telles que asp, puis des langages compilés comme Java et c # étaient devenus très populaires pour le développement côté serveur. Aujourd'hui, le monde du développement Web évolue rapidement vers les applications à une seule page.

Ce problème a ensuite été résolu avec la publication de technologies telles que MVC.MVC pouvant être téléchargées sous la forme d'un package de nuget séparé. Cela signifie que les mises à jour dans MVC peuvent se produire plus souvent indépendamment des versions du framework .NET. Il n'est pas nécessaire d'attendre la publication de la nouvelle version du framework .NET pour les nouvelles fonctionnalités de MVC.

La fonctionnalité MVC est incluse dans System.Web.Mvc, que nous pouvons ajouter en tant que package de nuget.

Couplage étroit à IIS: le système. Web Assembly a un couplage étroit avec IIS. Nous avons également d'autres hôtes qui aiment le serveur Web Visual Studio, mais ils ne prennent en charge que les fonctionnalités ASP.NET limitées. Il n'y a donc qu'une seule option d'hébergement pour le déploiement. enter image description here

Pas de moyen facile de désactiver des fonctionnalités telles que les modules HTTP dans le pipeline HTTP: Il existe un pipeline de demandes dans ASP.NET qui comprend des éléments comme les différents types de httpmodules, page et cycle de vie du contrôle. Ils font tous partie du pipeline de demandes et il n’existe pas de moyen facile de les désactiver.

Nous ne souhaitons peut-être pas exécuter toutes les couches telles que le cycle de vie d'une page pour notre application simple. Nous pouvons simplement vouloir renvoyer la réponse du gestionnaire et ignorer le reste des couches.

Ainsi, chaque application de formulaires Web asp.net, quelle que soit notre simplicité, suit toujours un certain chemin de requête et nous oblige à utiliser des fonctionnalités dont nous n'avons pas besoin. Comme l'authentification et de nombreux autres modules HTTP.

Cela devrait nous faire comprendre certains des attributs qui devraient être présents dans un cadre Web moderne.

Couplage lâche: La création d'un couplage lâche entre les composants de l'application présente l'avantage d'échanger les composants avec des composants différents. Ne serait-il pas formidable de pouvoir remplacer facilement le serveur hébergeant notre application Web sans affecter le reste de l’application.

1. Qu'est-ce que OWIN ??

  • La spécification OWIN fournit une solution aux problèmes susmentionnés.OWIN signifie Open Web Interface for .Net.

enter image description here

  • "OWIN définit une interface standard entre les serveurs Web .NET et les applications Web. L’interface OWIN a pour but de découpler le serveur et l’application "

  • OWIN dissocie le serveur Web des frameworks d'application. Cela peut sembler être un principe simple, et il l'est, mais si cela a de nombreuses implications si nous y réfléchissons. Lorsque le serveur Web est découplé de la structure d'application, nous pouvons utiliser l'application avec différents serveurs Web et autres composants.

OWIN est juste une spécification et il pourrait y avoir beaucoup d'implémentations différentes d'OWIN. Katana est un exemple d’une telle implémentation.

2. Qu'est-ce que Katana ??

Comme OWIN n’est qu’une spécification, nous avons besoin d’une implémentation concrète pour implémenter ces spécifications. Katana entre ainsi dans l’image.Katana est un ensemble de composants owin à code source ouvert construits par Microsoft. Il est utilisé pour créer des applications Web basées sur OWIN. .

Comme nous l'avons vu précédemment, l'hôte communique avec notre application avant de charger le serveur. Il a donc besoin d'informations de notre application pour savoir comment créer le pipeline OWIN. Ce pipeline est utilisé pour traiter notre demande.

2
Tahir77667