Cara kerja ASP.NET Core
Aplikasi ASP.NET Core pada dasarnya adalah aplikasi .NET dengan file Program.cs yang menyiapkan fitur komponen aplikasi web yang Anda butuhkan dan menjalankannya.
File Program.cs aplikasi ASP.NET Core yang paling mendasar:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Dengan kode sebelumnya:
- Aplikasi web dasar ASP.NET Core disiapkan yang mendengarkan permintaan HTTP GET di URL akar ("/") dan merespons dengan "Halo Dunia!".
- Aplikasi ini diinisialisasi, mengonfigurasi satu rute, dan memulai server web.
Blazor
Anda dapat membangun antarmuka pengguna web interaktif dengan ASP.NET Core menggunakan Blazor. Blazor adalah kerangka kerja UI web berbasis komponen yang terintegrasi dengan ASP.NET Core, digunakan untuk membangun UI web interaktif menggunakan HTML, CSS, dan C#.
Komponen Blazor yang dapat digunakan kembali, seperti komponen berikut Counter didefinisikan dalam file Counter.razor :
@page "/counter"
@rendermode InteractiveServer
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
Dengan kode sebelumnya:
- Komponen dibuat yang menampilkan penghitung.
- @code Blok berisi logika komponen menggunakan C#, termasuk metode untuk menaikkan penghitung.
- Nilai penghitung ditampilkan dan diperbarui setiap kali tombol diklik.
- Pendekatan komponen memungkinkan penggunaan kembali kode di berbagai bagian aplikasi dan memiliki fleksibilitas untuk dijalankan baik di browser atau di server di aplikasi Blazor.
Komponen Counter dapat ditambahkan ke halaman web apa pun di aplikasi dengan menambahkan <Counter /> elemen .
@page "/"
<PageTitle>Home</PageTitle>
<h1>Hello, world!</h1>
<Counter />
API
ASP.NET Core menyediakan kerangka kerja untuk membangun API, layanan gRPC, dan aplikasi real time dengan SignalR untuk langsung mendorong pembaruan data ke klien.
API Minimal Dasar:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/hello", () => "Hello, World!");
app.Run();
Dengan kode sebelumnya:
- API minimal disiapkan yang mendengarkan permintaan HTTP GET di URL /hello dan merespons dengan "Halo, Dunia!".
-
WebApplicationBuilderdigunakan untuk mengonfigurasi aplikasi. - Metode ini
MapGetmendefinisikan rute dan handler untuk permintaan GET.
Middleware
ASP.NET Core menggunakan alur komponen middleware untuk menangani permintaan dan respons HTTP. Pendekatan modular ini memberikan fleksibilitas, memungkinkan Anda menyesuaikan dan memperluas fungsionalitas aplikasi Anda dengan menambahkan atau menghapus komponen middleware sesuai kebutuhan.
Alur middleware memproses permintaan HTTP secara berurutan, memastikan bahwa setiap komponen dapat melakukan tugas yang ditunjuk sebelum meneruskan permintaan ke komponen berikutnya dalam alur.
Menambahkan middleware bawaan dalam file Program.cs :
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseHttpsRedirection();
app.UseRouting();
app.MapStaticAssets();
app.UseAuthentication();
app.UseAuthorization();
app.MapGet("/", () => "Hello World!");
app.Run();
Dalam kode sebelumnya, beberapa komponen middleware umum ditambahkan:
-
UseHttpsRedirection: Mengalihkan permintaan HTTP ke HTTPS. -
UseRouting: Memungkinkan perutean untuk memetakan permintaan ke titik akhir. -
MapStaticAssets: Mengoptimalkan pengiriman file statis seperti HTML, CSS, JavaScript, gambar, dan aset lainnya. -
UseAuthentication: Menambahkan kemampuan autentikasi. -
UseAuthorization: Menambahkan kemampuan otorisasi. -
app.MapGet: Ini adalah titik akhir sederhana untuk menunjukkan bahwa aplikasi sedang berjalan.
Injeksi Dependensi
ASP.NET Core mencakup dukungan bawaan untuk injeksi dependensi (DI) untuk mengonfigurasi layanan yang digunakan oleh aplikasi dan berbagai komponen kerangka kerjanya.
Misalnya, Anda mungkin ingin mengonfigurasi layanan secara terpusat menggunakan kerangka kerja seperti EntityFramework Core yang bergantung pada bagian lain aplikasi Anda untuk mengakses database. Anda dapat mengonfigurasi konteks database dari EntityFramework Core sebagai layanan menggunakan injeksi dependensi seperti ini:
public class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }
public DbSet<Product> Products { get; set; } = default!;
}
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
var app = builder.Build();
app.Run();
Dengan kode sebelumnya:
-
DbContextdikonfigurasi sebagai layanan menggunakan injeksi dependensi. -
WebApplicationBuilderdigunakan untuk mengonfigurasi aplikasi. - Metode
AddDbContextmendaftarkanDbContextdengan kontainer injeksi dependensi. - string koneksi diambil dari konfigurasi dan digunakan untuk menyiapkan konteks database.
Konfigurasi
ASP.NET Core mendukung akses data konfigurasi dari berbagai sumber, seperti file JSON, variabel lingkungan, dan argumen baris perintah.
Mengonfigurasi string koneksi dalam file appsetting.json :
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;"
}
}
Dalam file Program.cs:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
var app = builder.Build();
app.Run();
Dengan kode sebelumnya:
- String koneksi dikonfigurasi dalam file appsettings.json .
-
WebApplicationBuilderdigunakan untuk mengonfigurasi aplikasi. - Metode
AddDbContextmendaftarkanDbContextdengan kontainer injeksi dependensi. - string koneksi diambil dari konfigurasi dan digunakan untuk menyiapkan konteks database.
Pemantauan dan diagnostik
ASP.NET Core menyediakan serangkaian alat yang komprehensif untuk memantau dan menjaga kesehatan dan performa aplikasi Anda. Fitur-fitur ini dapat dengan mudah ditambahkan ke aplikasi Anda sebagai komponen middleware, mengintegrasikan fungsi tertentu ke dalam proyek Anda:
- Metrik bawaan: ASP.NET Core mencakup metrik bawaan yang melacak berbagai aspek performa aplikasi Anda, seperti tingkat permintaan, waktu respons, dan tingkat kesalahan.
- Kerangka kerja pengelogan fleksibel: Kerangka kerja pengelogan fleksibel dibangun, dan mendukung berbagai penyedia pengelogan, termasuk konsol, debug, dan sumber peristiwa. Ini membantu dalam menangkap log terperinci untuk diagnostik dan pemantauan.
- Pelacakan: ASP.NET Core mendukung pelacakan terdistribusi, yang membantu Anda melacak alur permintaan di berbagai layanan dan komponen. Ini berguna untuk mendiagnosis masalah performa dan memahami interaksi antara berbagai bagian aplikasi Anda.
- OpenTelemetry: ASP.NET Core terintegrasi dengan OpenTelemetry, kerangka kerja pengamatan sumber terbuka untuk perangkat lunak cloud-native. OpenTelemetry menyediakan API dan instrumentasi standar untuk mengumpulkan metrik, log, dan jejak, memungkinkan Anda memantau dan mendiagnosis aplikasi Anda secara lebih efektif.
- Pemeriksaan Kesehatan: API pemeriksaan kesehatan memungkinkan Anda memantau kesehatan aplikasi Anda dan dependensinya. Anda dapat mengonfigurasi pemeriksaan kesehatan untuk melaporkan status berbagai komponen, seperti database, layanan eksternal, dan banyak lagi.
- Alat Diagnostik: ASP.NET Core menyediakan berbagai alat diagnostik, seperti dotnet-trace, dotnet-dump, dan dotnet-gcdump, yang membantu Anda mengumpulkan dan menganalisis data diagnostik dari aplikasi Anda.