Langsung ke konten utama

Model Hosting InProcess ASP.NET Core

Mari kita bahas tentang Model Hosting InProcess ASP.NET Core dengan beberapa contoh. Sebelum melanjutkan, pastikan Anda sudah memahami metode Main pada ASP.NET Core yang telah dijelaskan di artikel sebelumnya.

Apa itu Hosting?
Hosting adalah layanan yang memungkinkan aplikasi web kita diakses melalui internet. Saat membuat aplikasi web, kita memerlukan server tempat menyimpan file aplikasi, database, dan sumber daya lain, yang kemudian dapat dilayani kepada pengguna melalui browser mereka.

Apa itu Server Web?
Server web adalah mesin fisik atau virtual yang menjalankan perangkat lunak server seperti Apache, Nginx, atau Microsoft IIS (Internet Information Services). Server web bertugas menangani permintaan dari klien (browser), menjalankan logika aplikasi, dan mengirimkan respons kembali ke klien.

Model Hosting pada ASP.NET Core
Dalam ASP.NET Core, model hosting menentukan cara aplikasi dihosting, dikonfigurasi, dan melayani permintaan HTTP masuk. Ada dua model hosting utama:

  1. InProcess Hosting
  2. OutOfProcess Hosting

Kedua model ini menentukan bagaimana aplikasi dihosting, server web yang digunakan, dan cara permintaan diproses. Memahami model ini sangat penting untuk mengoptimalkan kinerja aplikasi.

Apa itu Model Hosting InProcess?
Model Hosting InProcess membuat aplikasi ASP.NET Core berjalan di dalam proses IIS worker (w3wp.exe). Model ini adalah pengaturan default untuk aplikasi yang dijalankan di Windows menggunakan IIS atau IIS Express. Keuntungan utamanya adalah kinerja yang lebih baik karena tidak ada komunikasi antarproses.

Cara Kerja Model Hosting InProcess pada ASP.NET Core
Pada model ini, aplikasi hanya menggunakan IIS sebagai server utama. Berikut langkah-langkahnya:

  1. Permintaan dari Internet
    Pengguna mengakses aplikasi melalui browser atau klien lain, mengirim permintaan HTTP ke IIS.

  2. IIS
    IIS menerima permintaan, mengecek apakah aplikasi sudah berjalan:

    • Jika belum, IIS meminta modul ASP.NET Core (ANCM) untuk memulai aplikasi.
    • Jika aplikasi sudah berjalan, permintaan langsung diteruskan ke IIS HTTP Server.
  3. ASP.NET Core Module (ANCM)
    ANCM bertugas memuat runtime .NET Core dan menjalankan aplikasi ASP.NET Core dalam proses IIS worker jika belum dimulai. Jika aplikasi sudah aktif, ANCM tidak ikut campur.

  4. IIS HTTP Server
    Komponen ini menangani protokol HTTP seperti URL, metode HTTP (GET, POST, dll.), dan header HTTP. Kemudian, permintaan diteruskan ke kode aplikasi.

  5. Kode Aplikasi ASP.NET Core
    Di sini, logika bisnis dieksekusi, termasuk middleware, otentikasi, dan routing. Hasilnya (HTML, JSON, dll.) dikembalikan ke IIS HTTP Server.

  6. IIS HTTP Server
    Respons dari aplikasi diterima, lalu diteruskan ke IIS untuk dikirim ke klien.

  7. IIS
    IIS mengirimkan respons akhir ke browser atau klien lain.

Keunggulan utama model ini adalah kinerja yang cepat karena aplikasi berjalan dalam proses yang sama dengan IIS, sehingga tidak ada overhead komunikasi antarproses.

Contoh Model Hosting InProcess
Berikut kode sederhana untuk menunjukkan bagaimana aplikasi menggunakan model hosting InProcess:

namespace FirstCoreWebApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);
            var app = builder.Build();
            app.MapGet("/", () => "Worker Process Name : " + System.Diagnostics.Process.GetCurrentProcess().ProcessName);
            app.Run();
        }
    }
}

Saat aplikasi dijalankan, nama proses worker akan ditampilkan, menunjukkan bahwa aplikasi berjalan langsung di dalam IIS Worker Process.

Konfigurasi Model Hosting InProcess
Ada dua cara untuk mengatur model hosting:

  1. Melalui File Proyek
    Tambahkan elemen <AspNetCoreHostingModel> ke file proyek dengan nilai InProcess:
    <Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
      </PropertyGroup>
    </Project>
    
  2. Melalui Antarmuka GUI
    Buka Properties dari proyek, pilih tab Debug, dan pastikan model hosting diset ke InProcess.


Model hosting InProcess cocok untuk aplikasi yang memerlukan kinerja tinggi karena mengurangi overhead komunikasi antarproses. Model ini biasanya digunakan untuk aplikasi yang dihosting di IIS pada sistem operasi Windows.

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...