286 votes

Qu'est-ce que middleware Rack?

Qu'est-ce que middleware Rack en Ruby? Je n'arrivais pas à trouver une bonne explication de ce qu'ils entendent par "middleware".

383voto

Chris McCauley Points 9764

Rack de Conception

Middleware Rack est plus qu'un "moyen d'un filtre de requête et de réponse" - c'est la mise en place d'un pipeline de modèle de conception pour les serveurs web à l'aide de Rack.

Il est très sépare les différentes étapes de traitement d'une demande de séparation de préoccupations être un objectif clé de tous les bien-conçu logiciel produits.

Par exemple avec Rack je peux séparer les étapes du pipeline de faire:

  • Authentification: lorsque la demande arrive, ce sont les utilisateurs les données de connexion correcte? Comment puis-je valider ce protocole OAuth, l'Authentification HTTP de Base, le nom/mot de passe?

  • Autorisation: "l'utilisateur est autorisé à effectuer cette tâche?", c'est à dire basée sur les rôles de sécurité.

  • La mise en cache: ai-je traité cette demande, puis-je retourner un résultat mis en cache?

  • Décoration: comment puis-je améliorer la demande de faire le traitement en aval de mieux?

  • La Performance et le contrôle de l'Utilisation: quelles stats puis-je obtenir à partir de la demande et de la réponse?

  • Exécution: en fait, le traitement de la demande et de fournir une réponse.

Le fait de pouvoir séparer les différentes étapes (et éventuellement de les inclure) est d'une grande aide dans l'élaboration de bien structuré applications.

La communauté

Il y a aussi un grand éco-système de développement autour de Middleware Rack - vous devriez être capable de trouver des pré-construit rack composants d'effectuer toutes les étapes ci-dessus et plus. Voir le Rack GitHub wiki pour obtenir une liste de middleware.

Ce Middleware?

Le Middleware est un terrible terme qui renvoie à tout composant du logiciel/de la bibliothèque qui aide, mais n'est pas directement impliqué dans l'exécution d'une tâche. Très sont des exemples courants de consignation, d'authentification et les autres communes, horizontal composants de traitement. Ceux-ci tendent à être les choses que tout le monde a besoin à travers de multiples applications, mais pas trop beaucoup de gens sont intéressés (ou devrait être) dans la construction d'eux-mêmes.

Plus D'Informations

84voto

Thomas Fankhauser Points 1899

J'ai écrit un billet de blog à ce sujet: qu'est-Ce que le Rack, s'il vous plaît?

Devrait vous obtenir a commencé avec les concepts de rack dans quelques minutes.

21voto

Gaurav Chande Points 49

J'ai eu un problème de compréhension Rack moi-même pour une bonne quantité de temps. J'ai pleinement compris après avoir travaillé sur la fabrication de cette miniature Ruby serveur web moi-même. J'ai partagé mes connaissances acquises au sujet de Rack (sous la forme d'une histoire) ici sur mon blog: http://gauravchande.com/what-is-rack-in-ruby-rails

Des commentaires sont plus que les bienvenus.

4voto

djcp Points 121

J'ai utilisé middleware Rack pour résoudre quelques problèmes:

  1. La capture de JSON erreurs d'analyse personnalisée de middleware Rack et le retour bien mis en forme des messages d'erreur lorsque le client soumet busted JSON
  2. La Compression de contenu via Rack::Deflater

Il offre assez élégante correctifs dans les deux cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X