Langsung ke konten utama

Model Hosting OutOfProcess ASP.NET Core

Artikel ini bakal ngebahas model hosting Out-of-Process di ASP.NET Core dengan contoh-contoh. 

Out-of-Process Hosting Itu Apa, Sih?
Dalam model Out-of-Process Hosting, aplikasi ASP.NET Core lo jalan di proses yang beda dari proses web server yang ngatur permintaan HTTP masuk. Jadi, beda sama In-Process Hosting di mana aplikasi lo jalan di proses yang sama dengan web server-nya.

Di model ini, IIS atau server lain kayak Apache atau Nginx bakal jadi reverse proxy. Mereka nerima permintaan HTTP dari klien, terus diterusin ke server internal, yaitu Kestrel. Jadi, di sini ada dua server:

  • Server Eksternal: Misalnya IIS di Windows, atau Apache/Nginx di platform lain. Mereka ngatur permintaan klien, load balancing, dan lapisan keamanan. Kalau semuanya oke, permintaan diterusin ke Kestrel.
  • Server Internal (Kestrel): Ini server bawaan ASP.NET Core buat jalanin aplikasinya. Dia yang ngeproses permintaan dan bikin respon.

Pisahan kayak gini bikin Kestrel bisa dioptimalkan buat eksekusi kode aplikasi, sedangkan server eksternal fokus ngatur permintaan klien dan keamanan.

Cara Konfigurasi Out-of-Process Hosting
Ada dua cara buat ngatur model hosting ini:

  1. Lewat File Properti Proyek
    Tambahin elemen <AspNetCoreHostingModel> ke file proyek lo dengan nilai OutOfProcess. Contohnya:

    <Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
      </PropertyGroup>
    </Project>
    
  2. Lewat GUI
    Klik kanan proyek lo di Solution Explorer, pilih Properties, terus buka tab Debug. Klik tombol Open debug launch profiles UI, pilih IIS Express, terus ubah Hosting Model jadi OutOfProcess.

Pake Out-of-Process Hosting
Kalau lo jalanin aplikasi pake profil HTTP atau HTTPS, model InProcess dan OutOfProcess nggak bakal dipake. Kestrel bakal jadi satu-satunya server. Tapi kalau lo pake profil IIS Express di Visual Studio, model Out-of-Process Hosting bakal aktif.

  • Jalanin Pake Kestrel Aja: Kestrel bakal nge-handle semua permintaan HTTP sekaligus ngejalanin aplikasi lo.
  • Pake IIS sebagai Reverse Proxy: IIS nerima permintaan, terus diterusin ke Kestrel buat diproses. Respon dari Kestrel balik ke IIS, terus dikirim ke klien.

Kenapa Perlu Reverse Proxy Server?
Walaupun Kestrel bisa jadi server internet langsung, reverse proxy kayak IIS, Apache, atau Nginx tetep penting buat:

  • Konfigurasi tambahan (misal: load balancing, URL rewriting)
  • Keamanan ekstra
  • Nge-handle permintaan statis kayak file HTML, CSS, atau JS.

Gimana Model Out-of-Process Bekerja?

  1. Klien Ngirim Permintaan
    Klien (misalnya browser) ngirim permintaan HTTP ke server eksternal (IIS).
  2. IIS Nge-Handle Permintaan
    IIS nerima permintaan dan pake modul ASP.NET Core (ANCM) buat diterusin ke Kestrel.
  3. ANCM Ngehubungin ke Kestrel
    Kalau Kestrel belum nyala, ANCM bakal nyalain. Setelah itu, ANCM nerusin permintaan ke Kestrel.
  4. Kestrel Ngeproses Permintaan
    Kestrel nerusin permintaan ke kode aplikasi buat diproses.
  5. Kode Aplikasi Eksekusi
    Middleware di ASP.NET Core ngejalanin logika aplikasi, misal: autentikasi, routing, dll.
  6. Respon Balik ke Kestrel
    Setelah selesai, kode aplikasi ngirim respon ke Kestrel.
  7. Respon Balik ke IIS
    Kestrel ngirim respon ke ANCM, terus diterusin ke IIS.
  8. IIS Ngirim Respon ke Klien
    Akhirnya, IIS ngirim respon ke browser klien atau aplikasi yang minta.

Peran IIS dan Kestrel

  • IIS: Nge-handle keamanan, permintaan klien, dan ngatur file statis. Dia juga ngatur load balancing dan jadi lapisan keamanan tambahan.
  • Kestrel: Fokus ngejalanin logika aplikasi ASP.NET Core dan ngolah permintaan yang diterusin IIS.

Jadi, model ini bikin aplikasi lo lebih aman dan fleksibel, terutama kalau lo butuh server eksternal buat hal-hal tambahan kayak load balancing dan keamanan ekstra.

Komentar

Postingan populer dari blog ini

Membuat Aplikasi Web ASP.NET Core di Visual Studio 2022

Artikel ini membahas langkah-langkah membuat aplikasi ASP.NET Core menggunakan Visual Studio 2022 dan framework .NET 8. 1. Membuka Visual Studio 2022 Buka Visual Studio 2022 dan klik "Create a new project" di layar awal. 2. Memilih Template Proyek Di jendela "Create a new project" , pilih template ASP.NET Core Empty . Template ini memberikan struktur dasar tanpa konfigurasi awal seperti controller, view, atau API. Setelah itu, klik Next . 3. Konfigurasi Proyek Baru Isi informasi proyek seperti berikut: Project Name : Masukkan nama proyek, misalnya FirstCoreWebApplication . Location : Tentukan lokasi folder untuk menyimpan proyek, misalnya D:\Projects . Solution Name : Biasanya sama dengan nama proyek, tetapi bisa diubah jika diperlukan. Centang "Place solution and project in the same directory" jika solusi dan proyek ingin disimpan dalam satu folder. Klik Create untuk melanjutkan. 4. Pengaturan Tambahan Pada jendela "Additional Information...

Remix IDE: Solusi Praktis untuk Menulis dan Deploy Kontrak Pintar

Remix IDE  adalah lingkungan pengembangan terintegrasi berbasis web yang dirancang untuk menulis, mengompilasi, dan menyebarkan smart contract menggunakan bahasa pemrograman  Solidity  di blockchain Ethereum. Alat ini banyak digunakan oleh pengembang blockchain karena kemudahannya dalam menyediakan fitur lengkap untuk pengembangan, pengujian, dan debugging kontrak pintar. Fitur Utama Remix IDE Berbasis Web dan Gratis Tidak perlu diunduh atau diinstal. Anda dapat mengakses Remix langsung melalui browser di  remix.ethereum.org . Karena berbasis web, Remix dapat digunakan di berbagai perangkat selama ada akses internet. Editor Kode Mendukung penulisan kode Solidity dengan penyorotan sintaks, autocompletion, dan validasi kesalahan. Fitur penyorotan kesalahan (error highlighting) memudahkan pengembang untuk menemukan bug pada kode. Compiler Solidity Remix menyediakan compiler bawaan untuk mengonversi kode Solidity menjadi bytecode yang dapat dijalankan di Ethereum Virtual...

Perlu dicatat Built-in Global Variable pada Solidity

Solidity, sebagai bahasa pemrograman untuk membuat smart contract di Ethereum dan blockchain lainnya, menyediakan beberapa variabel global bawaan . Variabel ini memungkinkan akses mudah ke informasi tentang blockchain, transaksi, dan konteks eksekusi. Dengan menggunakan variabel ini, pengembang dapat berinteraksi dengan lingkungan blockchain tanpa perlu menulis banyak kode tambahan. Berikut penjelasan kategori dan variabel global yang umum digunakan: 1. Informasi Blockchain Variabel-variabel ini menyediakan informasi terkait blockchain, seperti blok saat ini dan propertinya. block.number Mengembalikan nomor blok saat ini. Contoh: uint nomorBlokSaatIni = block.number; block.timestamp Waktu pembuatan blok saat ini dalam format detik sejak Unix epoch. Biasanya digunakan untuk mendapatkan waktu saat ini. Contoh: require(block.timestamp >= waktuMulai, "Terlalu awal untuk eksekusi!"); block.difficulty Tingkat kesulitan penambangan pada blok saat ini. Contoh: uin...