Προγραμματισμός

Τρόπος εφαρμογής του διακομιστή ιστού HTTP.sys στον ASP.Net Core

Το ASP.Net Core είναι ένα ανοιχτού κώδικα, cross-platform, λιτό και αρθρωτό πλαίσιο για τη δημιουργία εφαρμογών Ιστού υψηλής απόδοσης. Το Kestrel είναι ένας διακομιστής ιστού πολλαπλών πλατφορμών για ASP.Net Core που περιλαμβάνεται από προεπιλογή. Ωστόσο, έχει περιορισμούς.

Για να ξεπεράσετε αυτούς τους περιορισμούς, σας προτείνω να χρησιμοποιήσετε το HTTP.sys, έναν διακομιστή HTTP μόνο για Windows που βασίζεται στο πρόγραμμα οδήγησης πυρήνα HTTP.sys που είναι πιο ώριμος, ασφαλής και επεκτάσιμος.

Γιατί πρέπει να χρησιμοποιήσετε το HTTP.sys

Συνήθως, χρειάζεστε HTTP.sys όταν πρέπει να εκθέσετε τον διακομιστή σας στον εξωτερικό κόσμο χωρίς IIS (Microsoft Internet Information Services). Τα αιτήματα έρχονται πρώτα στο HTTP.sys - ενσωματωμένο στο πρόγραμμα οδήγησης λειτουργίας πυρήνα HTTP.sys. Το HTTP.sys με τη σειρά του δημιουργεί μια ουρά καθώς και ένα μεμονωμένο σύνολο εφαρμογών για κάθε αίτημα με βάση το αίτημα.

Μπορείτε επίσης να χρησιμοποιήσετε το HTTP.sys όταν χρειάζεστε μια δυνατότητα που δεν υποστηρίζεται από το Kestrel. Οι δυνατότητες που υποστηρίζονται από το HTTP.sys περιλαμβάνουν:

  1. Έλεγχος ταυτότητας των Windows
  2. Υποδοχές Ιστού
  3. Δημοσίευση κοινής χρήσης
  4. HTTPS
  5. Αποθήκευση προσωρινής αποθήκευσης
  6. Άμεση μετάδοση αρχείων

Ξεκινήστε ένα έργο στο HTTP.sys

Εάν εκτελείτε το Visual Studio 2017, ακολουθήστε αυτά τα βήματα για να δημιουργήσετε ένα έργο ASP.Net Core Web API:

  1. Στο Visual Studio IDE, επιλέξτε Αρχείο> Νέο> Έργο.
  2. Επιλέξτε ASP.Net Core Web Application (.Net Core) από τη λίστα των προτύπων που εμφανίζονται.
  3. Καθορίστε το UsingHTTPSysInCode ως το όνομα για το έργο.
  4. Κάντε κλικ στο OK για να αποθηκεύσετε το έργο.
  5. Επιλέξτε API στο παράθυρο New .Net Core Web Application.
  6. Επιλέξτε την έκδοση του ASP.Net Core που θέλετε να χρησιμοποιήσετε από το αναπτυσσόμενο μενού στην κορυφή.
  7. Καταργήστε την επιλογή Ενεργοποίηση υποστήριξης Docker και επιλέξτε Χωρίς έλεγχο ταυτότητας, επειδή δεν θα χρησιμοποιήσετε κανένα από αυτά εδώ.
  8. Κάντε κλικ στο OK.

Αυτά τα βήματα δημιουργούν ένα νέο ASP.Net Core Project με το όνομα UsingHTTPSysInCode στο Visual Studio 2017.

Διαμορφώστε την εφαρμογή ASP.net Core για HTTP.sys

Στη συνέχεια, θα πρέπει να εγκαταστήσετε τα πακέτα που χρειάζεστε. Ο καλύτερος τρόπος για να γίνει αυτό είναι να εγκαταστήσετε το Microsoft.AspNetCore. Όλα τα μετα-πακέτα μέσω του διαχειριστή πακέτων NuGet. Αυτό διασφαλίζει ότι όλα τα απαραίτητα πακέτα εγκαθίστανται ταυτόχρονα.

Στη συνέχεια, ανοίξτε το αρχείο Program.cs στο έργο σας. Θα πρέπει να μοιάζει με αυτό:

Πρόγραμμα δημόσιας τάξης {public static void Main (string [] args) {CreateWebHostBuilder (args) .Build (). Run (); } δημόσιο στατικό IWebHostBuilder CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args). ΧρήσηStartup (); }

Με τα πακέτα εγκατεστημένα, διαμορφώστε το διακομιστή HTTP.sys μέσω της μεθόδου επέκτασης UseHttpSys του WebHostBuilder στην κύρια μέθοδο για την κλάση προγράμματος στο αρχείο Program.cs. Δείτε πώς:

public static void Main (string [] args) {CreateWebHostBuilder (args). Εκτελέστε (); } δημόσιο στατικό IWebHost CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args) .UseStartup () .UseHttpSys (options => {options.Authentication.Schemes = AuthenticationSchemes.None; options.Authentication.AllowAnonymous = true MaxConnections = 100; options.MaxRequestBodySize = 1000000; options.UrlPrefixes.Add ("// localhost: 5000");}). Κατασκευή ();

Ακολουθεί ο πλήρης πηγαίος κώδικας της κλάσης Προγράμματος:

χρησιμοποιώντας το Microsoft.AspNetCore; χρησιμοποιώντας το Microsoft.AspNetCore.Hosting; χρησιμοποιώντας Microsoft.AspNetCore.Server.HttpSys; namespace UsingHTTPSysInCode {public class Program {public static void Main (string [] args) {CreateWebHostBuilder (args). Εκτελέστε (); } δημόσιο στατικό IWebHost CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args) .UseStartup () .UseHttpSys (options => {options.Authentication.Schemes = AuthenticationSchemes.None; options.Authentication.AllowAnonymous = true MaxConnections = 100; options.MaxRequestBodySize = 1000000; options.UrlPrefixes.Add ("// localhost: 5000");}). Κατασκευή (); }}

Τέλος, όταν εκτελείτε την εφαρμογή, βεβαιωθείτε ότι έχετε επιλέξει το προφίλ εκκίνησης κατάλληλα. Το προεπιλεγμένο προφίλ εκκίνησης είναι οι υπηρεσίες IIS στο Visual Studio. Επιλέξτε UsingHTTPSysInCode για αυτό το παράδειγμα. είναι το ίδιο με το όνομα του έργου καθώς και το χώρο ονομάτων.

Όταν εκτελείτε την εφαρμογή με το προφίλ εκκίνησης ως UsingHTTPSysInCode, ανοίγει ένα παράθυρο κονσόλας για να εμφανίσει τη σειρά βημάτων που εκτελούνται προτού δείτε την έξοδο της μεθόδου Λήψη του ValueController (υποθέτοντας ότι είναι ο προεπιλεγμένος ελεγκτής σας) στο πρόγραμμα περιήγησης ιστού.