Πώς το Asp.Net Core Hosting Model που χρησιμοποιείται στις εφαρμογές Web;

Ο πυρήνας Asp.net έχει σημαντική βελτίωση στο μοντέλο φιλοξενίας. Αναμενόταν στις προηγούμενες εκδόσεις να φιλοξενήσουν τις εφαρμογές ιστού Asp.net Core μέσω διακομιστών μεσολάβησης όπως IIS σε Windows, Apache ή NGINX. Ωστόσο, ο νέος πυρήνας Asp.net 2.2 επιτρέπει την άμεση φιλοξενία της εφαρμογής Asp.net στα Windows μέσα στο IIS χωρίς τις απαιτήσεις του εξωτερικού διακομιστή. Έτσι, αυτό αυξάνει τη διακίνηση χρησιμοποιώντας απλό μηχανισμό φιλοξενίας εντός της διαδικασίας.

Φιλοξενία μοντέλων στον πυρήνα ASP.NET

Το ASP.NET είναι μια τεχνολογία από τη Microsoft που σας επιτρέπει να δημιουργείτε δυναμικές σελίδες στην πλευρά του διακομιστή ιστού.

Η φιλοξενία ASP.NET είναι πλήρως ενσωματωμένη στο λογισμικό που βασίζεται στα Windows καθώς και με το ίδιο το λειτουργικό σύστημα. Αυτή η τεχνολογία θεωρείται αρκετά ασφαλής και αξιόπιστη, καθώς και εύκολη στη χρήση. Χρησιμοποιείται κυρίως για την ανάπτυξη προϊόντων εντός εφαρμογής.

Τα μοντέλα φιλοξενίας στο ASP.NET Core είναι δύο τύπων, δηλαδή η φιλοξενία κατά τη διάρκεια της διαδικασίας και η φιλοξενία εκτός λειτουργίας. Πριν από τον ASP.Net Core 2.2 υπήρχε μόνο ένα μοντέλο φιλοξενίας, το οποίο είναι Out-of-process φιλοξενία, αλλά λόγω της απόδοσης, In-Process φιλοξενία μοντέλο σε Asp.net πυρήνα 2.2 εκδόσεις εισάγονται.

Εισαγωγή του μοντέλου φιλοξενίας κατά τη διάρκεια της διαδικασίας στο Asp.net Core

Οι προηγούμενες εκδόσεις του ASP.NET Core απαιτούσαν να φιλοξενήσει την εφαρμογή στο IIS χρησιμοποιώντας ένα μοντέλο φιλοξενίας Out-of-Process που χρησιμοποιεί διακομιστές μέσω IIS. Τα αιτήματα που έρχονται σε επαφή με το IIS ή το IIS Express μεταβιβάζονται στην κεντρική εφαρμογή ASP.NET Core που εκτελείται εντός του Kestrel Web Server. Ωστόσο, με τη νέα φιλοξενία κατά τη διαδικασία, μόνο ένας διακομιστής χρησιμοποιείται για φιλοξενία όπως IIS, Nginx ή Linux. Σημαίνει ότι αντί της προώθησης των αιτημάτων στο Kestrel, μια νέα εφαρμογή Web Server (IISHttpServer) φιλοξενείται απευθείας μέσα στην Pool IIS Application, η οποία θα εξυπηρετεί το αίτημα. Με το ASP.NET Core 3.1, το μοντέλο φιλοξενίας κατά τη διαδικασία χρησιμοποιείται ως προεπιλεγμένο μοντέλο κάθε φορά που αναπτύσσετε μια νέα εφαρμογή χρησιμοποιώντας ένα υπάρχον πρότυπο.

Προφανώς, αυτό το μοντέλο φιλοξενίας έχει πολύ υψηλή απόδοση και βελτιωμένη απόδοση σε σύγκριση με το Out-Of-Process φιλοξενώντας μοντέλο.

Μοντέλο Φιλοξενίας Out-of-Process

Στα μοντέλα φιλοξενίας Out-of-Process, μπορείτε να χρησιμοποιήσετε είτε τον εξυπηρετητή Kestrel απευθείας ως διακομιστή αιτήματος χρήστη προς τον διακομιστή είτε μπορείτε να αναπτύξετε την εφαρμογή στην υπηρεσία IIS, η οποία θα λειτουργεί ως διακομιστής μεσολάβησης και θα στέλνει αιτήσεις στον εσωτερικό διακομιστή Kestrel. Σε αυτό το είδος φιλοξενίας μοντέλο, έχετε δύο επιλογές για τη φιλοξενία δηλαδή Χρήση Kestrel και Proxy Server:

1. Χρησιμοποιώντας το Kestrel

Σε αυτό, το ίδιο το Kestrel λειτουργεί ως κεντρικός διακομιστής, ο οποίος εξυπηρετεί άμεσα αιτήματα χρηστών, πράγμα που σημαίνει ότι κάποιος μπορεί να χρησιμοποιήσει μόνο το διακομιστή Kestrel για την εφαρμογή.

2. Χρήση διακομιστή μεσολάβησης

Λόγω περιορισμών του διακομιστή Kestrel, δεν μπορεί να χρησιμοποιηθεί σε όλες τις εφαρμογές. Σε τέτοιες περιπτώσεις, κάποιος πρέπει να χρησιμοποιήσει ισχυρούς διακομιστές όπως IIS, Apache ή NGINX. Επομένως, σε αυτήν την περίπτωση, αυτός ο διακομιστής λειτουργεί ως αποθεματικός διακομιστής μεσολάβησης, ο οποίος θα ανακατευθύνει κάθε αίτημα στο εσωτερικό του Kestrel sever όπου εκτελείται η εφαρμογή. Εδώ τρέχουν δύο διακομιστές όπως το IIS και το Kestrel.

Αυτό το μοντέλο φιλοξενίας είναι ένα προεπιλεγμένο μοντέλο για όλες τις εφαρμογές που εφαρμόστηκαν νωρίτερα .NET Core 2.2 έκδοση. Ένας από τους περιορισμούς της χρήσης αυτού του τύπου, όπως η βραδύτητα των επιδόσεων.

Τελικές σκέψεις:

Σύμφωνα με τα γεγονότα, οι περισσότερες εταιρείες ανάπτυξης ιστοσελίδων ASP.Net θέλουν σίγουρα να χρησιμοποιήσουν το μοντέλο φιλοξενίας In-Process. Δεδομένου ότι καταναλώνει λιγότερους πόρους και παρέχει καλές επιδόσεις. Καθώς δεν χρειάζεται μια πρόσθετη διαδικασία για το Kestrel και αποφεύγει επιπλέον την επικοινωνία μεταξύ του IIS και του Kestrel. Ωστόσο, υπάρχουν περιπτώσεις όπου κάποιος μπορεί να θέλει να επιλέξει τη φιλοξενία Out-Of-Process, όπως στην περίπτωση της φιλοξενίας της ίδιας εφαρμογής στο Web στα Windows και στο Linux. Όταν μιλάμε για τη φιλοξενία της εφαρμογής σε άλλες πλατφόρμες, το Kestrel είναι ο κύριος μηχανισμός που χρησιμοποιείται για την αντιμετώπιση των αιτήσεων HTTP σε όλες τις πλατφόρμες.

Ωστόσο, η λειτουργία In-Process στο IIS είναι ο καλύτερος τρόπος, εκτός αν έχετε πολύ συγκεκριμένη απαίτηση για το Kestrel.

Βασική πίστωση φωτογραφιών: Φωτογραφία από τον Farzad Nazifi στο Unsplash




Σχόλια (0)

Αφήστε ένα σχόλιο