Qu'est-ce que middleware Rack en Ruby? Je n'arrivais pas à trouver une bonne explication de ce qu'ils entendent par "middleware".
Réponses
Trop de publicités?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
Le commentaire à ce sujet étant un moyen de filtrer les demandes proviennent probablement de la RailsCast episode 151: Middleware Rack screencast.
Middleware Rack évolué du Rack et il y a une grande intro à l' Introduction de middleware Rack.
Il y a une intro à middleware ici.
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.
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.
J'ai utilisé middleware Rack pour résoudre quelques problèmes:
- 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
- La Compression de contenu via Rack::Deflater
Il offre assez élégante correctifs dans les deux cas.