Πισίνα με νήματα
Πάντα ήθελα να ξαναγράψω το έργο σε ασύγχρονο, αλλά το ASP.NETMVC3 είναι πολύ δυσκίνητο για να γράψω, ο κώδικας .NET 4.5 και ASP.NET MVC είναι σχετικά απλός, η MS φαίνεται ότι πάντα της άρεσε να το κάνει αυτό, κάθε ώριμο πράγμα, πρέπει να εξελίξει πολλές εκδόσεις για να τείνει να τυποποιηθεί. ASP.NET γιατί πρέπει να χρησιμοποιήσετε ασύγχρονο στο MVC, οι υπηρεσίες IIS διαθέτουν μια ομάδα νημάτων για την επεξεργασία αιτημάτων χρηστών, όταν έρθει ένα νέο αίτημα, τα νήματα στο χώρο συγκέντρωσης θα προγραμματιστούν για την επεξεργασία του αιτήματος, ωστόσο, αλλά όταν ο συγχρονισμός είναι υψηλός, τα νήματα στο χώρο συγκέντρωσης δεν μπορούν πλέον να ικανοποιήσουν τόσα πολλά αιτήματα και κάθε νήμα στο χώρο συγκέντρωσης είναι απασχολημένο κατά την επεξεργασία του αιτήματος, το νήμα που επεξεργάζεται το αίτημα θα αποκλειστεί και το νήμα δεν μπορεί να παρέχει υπηρεσίες σε άλλο αίτημα, εάν η ουρά αιτημάτων είναι γεμάτη, ο ιστός Ο διακομιστής απορρίπτει την αίτηση και βρίσκεται σε κατάσταση απασχολημένου HTTP 503. Εάν αντιμετωπίζετε κάποια υψηλή καθυστέρηση, όπως λειτουργίες δικτύου, τα περισσότερα από αυτά τα νήματα απλώς περιμένουν την κατάσταση και δεν κάνουν τίποτα τις περισσότερες φορές, τέτοια νήματα μπορούν να χρησιμοποιήσουν ασύγχρονο προγραμματισμό για να το χρησιμοποιήσουν καλύτερα.
Ασύγχρονη επεξεργασία
Για παράδειγμα, εάν ένα αίτημα δημιουργεί μια κλήση δικτύου που διαρκεί δύο δευτερόλεπτα για να ολοκληρωθεί, το αίτημα υποβάλλεταιΧρειάζονται δύο δευτερόλεπτα για να εκτελεστεί τόσο συγχρονισμένα όσο και ασύγχρονα。 ΑλλάΚατά τη διάρκεια μιας ασύγχρονης κλήσης, ο διακομιστής δεν αποκλείει την απόκριση σε άλλες αιτήσεις ενώ περιμένει να ολοκληρωθεί η πρώτη αίτηση。 Επομένως, όταν υπάρχουν πολλές αιτήσεις που καλούν λειτουργίες μεγάλης διάρκειας, οι ασύγχρονες αιτήσεις μπορούν να αποτρέψουν την ουρά αιτήσεων. Στο .NET 4.5, η μέγιστη ομάδα νημάτων είναι 5000 και οι λέξεις-κλειδιά αναμονής και ασύγχρονης πρόσβασης έχουν επίσης προστεθεί στο .NET 4.5 για την απλοποίηση του ασύγχρονου προγραμματισμού.
Σύγχρονη ή ασύγχρονη (απόσπασμα από MSDN)
- Συνήθως, οι διοχετεύσεις συγχρονισμού χρησιμοποιούνται όταν πληρούνται οι ακόλουθες προϋποθέσεις:
- Απλή λειτουργία ή σύντομος χρόνος λειτουργίας.
- Η απλότητα είναι πιο σημαντική από την αποτελεσματικότητα.
- Αυτή η λειτουργία είναι κυρίως λειτουργίες CPU και όχι λειτουργίες που περιλαμβάνουν μεγάλη επιβάρυνση δίσκου ή δικτύου. Η χρήση μιας μεθόδου ασύγχρονης λειτουργίας για λειτουργίες συνδεδεμένες με CPU δεν παρέχει κανένα όφελος και έχει επίσης ως αποτέλεσμα μεγαλύτερη επιβάρυνση.
Γενικά, οι ασύγχρονοι αγωγοί χρησιμοποιούνται όταν πληρούνται οι ακόλουθες προϋποθέσεις:
- Οι λειτουργίες συνδέονται με το δίκτυο ή τις εισόδους/εξόδους και όχι με τη CPU.
- Οι δοκιμές έχουν δείξει ότι οι λειτουργίες αποκλεισμού αποτελούν εμπόδιο στην απόδοση του ιστότοπου και χρησιμοποιώντας ασύγχρονες μεθόδους για αυτές τις κλήσεις αποκλεισμού, οι υπηρεσίες IIS μπορούν να εξυπηρετήσουν περισσότερα αιτήματα.
- Ο παραλληλισμός είναι πιο σημαντικός από την απλότητα του κώδικα.
- Θέλετε να παρέχετε έναν μηχανισμό που επιτρέπει στους χρήστες να ακυρώνουν αιτήματα μεγάλης διάρκειας.
ASP.NET χρήση ασύγχρονων ελεγκτών στο MVC
|