Τι είναι το Middleware;
Το ενδιάμεσο λογισμικό είναι λογισμικό που συναρμολογείται σε αγωγούς εφαρμογών για τη διαχείριση αιτημάτων και απαντήσεων. Κάθε συστατικό:
- Επιλέξτε εάν θα μεταβιβάσετε την αίτηση στο επόμενο στοιχείο στη διοχέτευση.
- Η εργασία μπορεί να εκτελεστεί πριν και μετά την κλήση του επόμενου στοιχείου στη διοχέτευση.
Οι πληρεξούσιοι αιτήσεων χρησιμοποιούνται για τη δημιουργία μιας διοχέτευσης αιτήσεων που χειρίζεται κάθε αίτηση HTTP.
Οι πληρεξούσιοι αιτήσεων ρυθμίζονται χρησιμοποιώντας τις μεθόδους επέκτασης Εκτέλεση, Αντιστοίχιση και Χρήση. Ένας ξεχωριστός πληρεξούσιος αίτησης μπορεί να καθοριστεί σε μια ενσωματωμένη ανώνυμη μέθοδο (που ονομάζεται ενσωματωμένο ενδιάμεσο λογισμικό) ή μπορεί να οριστεί σε μια επαναχρησιμοποιήσιμη κλάση. Αυτές οι επαναχρησιμοποιήσιμες και οι ενσωματωμένες μέθοδοι ανωνυμοποίησης είναι ενδιάμεσο λογισμικό ή στοιχεία ενδιάμεσου λογισμικού. Κάθε στοιχείο ενδιάμεσου λογισμικού στη ροή αιτήματος είναι υπεύθυνο για την κλήση του επόμενου στοιχείου στη διοχέτευση και, εάν χρειάζεται, του βραχυκυκλώματος σύνδεσης.
Η μετεγκατάσταση λειτουργικών μονάδων HTTP σε ενδιάμεσο λογισμικό εξηγεί τη διαφορά μεταξύ ASP.NET Core και αγωγών αιτήματος σε προηγούμενες εκδόσεις (ASP.NET) και παρέχει περισσότερα παραδείγματα ενδιάμεσου λογισμικού.
Χρησιμοποιήστε το IApplicationBuilder για να δημιουργήσετε μια διοχέτευση ενδιάμεσου λογισμικού
Η διαδικασία αιτήματος ASP.NET Core αποτελείται από μια σειρά πληρεξουσίων αιτημάτων, όπως φαίνεται στην παρακάτω εικόνα (η διαδικασία εκτέλεσης ακολουθεί το μαύρο βέλος):
Κάθε πληρεξούσιος μπορεί να εκτελέσει ενέργειες πριν και μετά τον επόμενο πληρεξούσιο. Ο πληρεξούσιος μπορεί επίσης να αποφασίσει να μην μεταβιβάσει την αίτηση στον επόμενο πληρεξούσιο, κάτι που ονομάζεται βραχυκύκλωμα στη διοχέτευση αίτησης. Ένα βραχυκύκλωμα είναι συνήθως επιθυμητό γιατί αποφεύγει την περιττή εργασία. Για παράδειγμα, το ενδιάμεσο λογισμικό στατικών αρχείων μπορεί να επιστρέψει μια αίτηση για ένα στατικό αρχείο και να βραχυκυκλώσει την υπόλοιπη διοχέτευση. Οι πληρεξούσιοι χειρισμού εξαιρέσεων πρέπει να καλούνται νωρίς στη διοχέτευση, ώστε να μπορούν να εντοπίσουν εξαιρέσεις σε μεταγενέστερες διοχετεύσεις.
Το πιο απλό πράγμα είναι πιθανώς να ρυθμίσετε έναν εκπρόσωπο ASP.NET εφαρμογή Core για να χειρίζεται όλα τα αιτήματα. Αυτό το σενάριο δεν περιλαμβάνει την πραγματική διοχέτευση αίτησης. Αντίθετα, καλείται μια ανώνυμη μέθοδος για κάθε αίτημα HTTP.
Η πρώτη εφαρμογή. Εκτέλεση πληρεξουσίου τερματίζει τη διοχέτευση.
Υπάρχει κώδικας όπως αυτός:
Με πρόσβαση μέσω του προγράμματος περιήγησης, διαπιστώνεται ότι βρίσκεται πράγματι στην πρώτη εφαρμογή. Το Run τερματίζει τη διοχέτευση.
Μπορείτε να αναθέσετε πολλά αιτήματα με την εφαρμογή. Η χρήση συνδέεται μεταξύ τους. Η επόμενη παράμετρος αντιπροσωπεύει τον επόμενο πληρεξούσιο στη διοχέτευση. (Λάβετε υπόψη ότι μπορείτε να τερματίσετε τη διοχέτευση χωρίς να καλέσετε την επόμενη παράμετρο.) Συνήθως μπορείτε να εκτελέσετε ενέργειες πριν και μετά την επόμενη ανάθεση, όπως φαίνεται στο παρακάτω παράδειγμα:
Χρήση προγράμματος περιήγησης για πρόσβαση σε αποτελέσματα όπως:
Μπορεί να φανεί ότι η σειρά εκτέλεσης του αντιπροσώπου του αιτήματος ακολουθεί το παραπάνω διάγραμμα ροής.
Σημείωση:
Αφού σταλεί η απάντηση στον πελάτη, μην καλέσετε στη συνέχεια. Επίκληση。 Μετά την έναρξη της απόκρισης, οι αλλαγές στο HttpResponse θα δημιουργήσουν μια εξαίρεση. Για παράδειγμα, ο ορισμός κεφαλίδων απόκρισης, κωδικών κατάστασης κ.λπ. θα δημιουργήσει μια εξαίρεση. Γράψτε το σώμα της απάντησης μετά την επόμενη κλήση.
μπορεί να οδηγήσει σε παραβίαση της συμφωνίας. Για παράδειγμα, γράφοντας περισσότερο από το μήκος περιεχομένου που περιγράφεται στο content-length.
Η μορφοποίηση αποκριτικού περιεχομένου ενδέχεται να είναι κατεστραμμένη. Για παράδειγμα, γράψτε ένα υποσέλιδο HTML σε ένα αρχείο CSS.
Το HttpResponse.HasStarted είναι μια χρήσιμη υπόδειξη για να υποδείξει εάν έχει σταλεί μια κεφαλίδα απάντησης ή/και έχει γραφτεί το σώμα.
Ενσωματωμένο ενδιάμεσο λογισμικό
Το ASP.NET Core συνοδεύεται από τα ακόλουθα στοιχεία ενδιάμεσου λογισμικού:
| Ενδιάμεσο λογισμικό | περιγραφή | | Έλεγχος ταυτότητας | Διατίθεται υποστήριξη ελέγχου ταυτότητας | | ΚΟΡΣ | Ρύθμιση παραμέτρων κοινής χρήσης πόρων μεταξύ τομέων | | Προσωρινή αποθήκευση απόκρισης | Διατίθεται υποστήριξη απόκρισης cache | | Συμπίεση απόκρισης | Παρέχετε υποστήριξη για συμπίεση απόκρισης | | Δρομολόγηση | Ορισμός και περιορισμός δρομολόγησης αιτημάτων | | Συνεδρία | Παρέχει διαχείριση συνεδρίας χρήστη | | Στατικά αρχεία | Παρέχει υποστήριξη για στατική περιήγηση σε αρχεία και καταλόγους | | Ενδιάμεσο λογισμικό επανεγγραφής URL | Χρησιμοποιείται για την επανεγγραφή διευθύνσεων URL και την αίτηση υποστήριξης για ανακατευθύνσεις |
|