Bagaimana menerapkan server web HTTP.sys di ASP.Net Core

ASP.Net Core adalah kerangka kerja open source, lintas platform, ramping, dan modular untuk membangun aplikasi web berkinerja tinggi. Kestrel adalah server web lintas platform untuk ASP.Net Core yang disertakan secara default. Namun, ada batasannya.

Untuk mengatasi keterbatasan tersebut, saya sarankan Anda menggunakan HTTP.sys, server HTTP khusus Windows berdasarkan driver kernel HTTP.sys yang lebih matang, aman, dan skalabel.

Mengapa Anda harus menggunakan HTTP.sys

Biasanya, Anda memerlukan HTTP.sys ketika Anda harus mengekspos server Anda ke dunia luar tanpa IIS (Microsoft Internet Information Services). Permintaan pertama kali datang ke HTTP.sys — dibangun di atas driver mode Kernel HTTP.sys. HTTP.sys pada gilirannya membuat antrian serta kumpulan aplikasi individu untuk setiap permintaan berdasarkan permintaan.

Anda juga dapat menggunakan HTTP.sys saat Anda membutuhkan fitur yang tidak didukung oleh Kestrel. Fitur yang didukung oleh HTTP.sys meliputi:

  1. Otentikasi Windows
  2. Soket Web
  3. Berbagi Pos
  4. HTTPS
  5. Cache respons
  6. Transmisi file langsung

Memulai proyek di HTTP.sys

Jika Anda menjalankan Visual Studio 2017, ikuti langkah-langkah berikut untuk membuat proyek ASP.Net Core Web API:

  1. Di Visual Studio IDE, pilih File> New> Project.
  2. Pilih ASP.Net Core Web Application (.Net Core) dari daftar template yang ditampilkan.
  3. Tentukan UsingHTTPSysInCode sebagai nama proyek.
  4. Klik OK untuk menyimpan proyek.
  5. Pilih API di jendela New .Net Core Web Application.
  6. Pilih versi ASP.Net Core yang ingin Anda gunakan dari menu drop-down di bagian atas.
  7. Hapus centang Aktifkan Dukungan Docker dan pilih Tanpa Otentikasi, karena Anda tidak akan menggunakan salah satu dari ini di sini.
  8. Klik OK.

Langkah-langkah ini membuat proyek inti ASP.Net baru bernama UsingHTTPSysInCode di Visual Studio 2017.

Konfigurasi aplikasi ASP.net Core untuk HTTP.sys

Selanjutnya, Anda harus menginstal paket yang Anda butuhkan. Cara terbaik untuk melakukannya adalah dengan menginstal paket meta Microsoft.AspNetCore.All melalui manajer paket NuGet. Ini memastikan bahwa semua paket yang diperlukan diinstal sekaligus.

Kemudian buka file Program.cs di proyek Anda. Ini akan terlihat seperti ini:

Program kelas publik {public static void Main (string [] args) {CreateWebHostBuilder (args) .Build (). Run (); } public static IWebHostBuilder CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args) .UseStartup (); }

Dengan paket yang diinstal, konfigurasikan server HTTP.sys melalui metode ekstensi UseHttpSys dari WebHostBuilder dalam metode Utama untuk kelas Program di file Program.cs. Begini caranya:

public static void Main (string [] args) {CreateWebHostBuilder (args) .Run (); } public static IWebHost CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args) .UseStartup () .UseHttpSys (options => {options.Authentication.Schemes = AuthenticationSchemes.None; options.Authentication.AllowAnonymous = true; options. MaxConnections = 100; options.MaxRequestBodySize = 1000000; options.UrlPrefixes.Add ("// localhost: 5000");}) .Build ();

Berikut kode sumber lengkap dari kelas Program:

menggunakan Microsoft.AspNetCore; menggunakan Microsoft.AspNetCore.Hosting; menggunakan Microsoft.AspNetCore.Server.HttpSys; namespace UsingHTTPSysInCode {Program kelas publik {public static void Main (string [] args) {CreateWebHostBuilder (args) .Run (); } public static IWebHost CreateWebHostBuilder (string [] args) => WebHost.CreateDefaultBuilder (args) .UseStartup () .UseHttpSys (options => {options.Authentication.Schemes = AuthenticationSchemes.None; options.Authentication.AllowAnonymous = true; options. MaxConnections = 100; options.MaxRequestBodySize = 1000000; options.UrlPrefixes.Add ("// localhost: 5000");}) .Build ();}}

Terakhir, saat Anda menjalankan aplikasi, pastikan Anda memilih profil peluncuran dengan tepat. Profil peluncuran default adalah IIS di Visual Studio. Pilih UsingHTTPSysInCode untuk contoh ini; itu sama dengan nama proyek serta namespace.

Saat Anda menjalankan aplikasi dengan profil peluncuran sebagai UsingHTTPSysInCode, jendela konsol terbuka untuk menampilkan rangkaian langkah yang dijalankan sebelum Anda melihat keluaran dari metode Get dari ValuesController (dengan asumsi itu adalah pengontrol default Anda) di browser web Anda.