ASP.NET Core nasıl çalışır?
ASP.NET Core uygulaması temelde ihtiyacınız olan web uygulaması bileşen özelliklerini ayarlayan ve çalıştırmasını sağlayan Program.cs dosyası olan bir .NET uygulamasıdır.
En temel ASP.NET Core uygulamasının Program.cs dosyası:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Önceki kodla:
- Kök URL'de HTTP GET isteklerini ("/") dinleyen ve "Merhaba Dünya!" ile yanıt veren temel bir ASP.NET Core web uygulaması ayarlanır.
- Uygulama başlatılır, tek bir yol yapılandırılır ve web sunucusunu başlatır.
Blazor
Blazor kullanarak ASP.NET Core ile etkileşimli web kullanıcı arabirimi oluşturabilirsiniz. Blazor, HTML, CSS ve C# kullanarak etkileşimli web URI'leri oluşturmak için kullanılan, ASP.NET Core ile tümleştirilmiş bileşen tabanlı bir web kullanıcı arabirimi çerçevesidir.
Counter.razor dosyasında aşağıdaki Counter
bileşen gibi yeniden kullanılabilir bir Blazor bileşeni tanımlanır:
@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++;
}
}
Önceki kodla:
- Sayaç görüntüleyen bir bileşen oluşturulur.
- Blok @code , sayacı artırma yöntemi de dahil olmak üzere C# kullanan bileşenin mantığını içerir.
- Sayaç değeri görüntülenir ve düğmeye her tıklandığında güncelleştirilir.
- Bileşen yaklaşımı, kodun uygulamanın farklı bölümlerinde yeniden kullanılmasına olanak tanır ve tarayıcıda veya Blazor uygulamasında sunucuda çalıştırılma esnekliğine sahiptir.
Bileşen, Counter
öğesi eklenerek <Counter />
uygulamadaki herhangi bir web sayfasına eklenebilir.
@page "/"
<PageTitle>Home</PageTitle>
<h1>Hello, world!</h1>
<Counter />
API'ler
ASP.NET Core, istemcilere anında veri güncelleştirmeleri göndermek için SignalR ile API'ler, gRPC hizmetleri ve gerçek zamanlı uygulamalar oluşturmaya yönelik çerçeveler sağlar.
Temel Minimal API:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/hello", () => "Hello, World!");
app.Run();
Önceki kodla:
- /hello URL'sinde HTTP GET isteklerini dinleyen ve "Hello, World!" ile yanıt veren en düşük API ayarlanır.
-
WebApplicationBuilder
, uygulamayı yapılandırmak için kullanılır. - yöntemi,
MapGet
GET istekleri için bir yol ve işleyici tanımlar.
Ara yazılım
ASP.NET Core, HTTP isteklerini ve yanıtlarını işlemek için ara yazılım bileşenlerinden oluşan bir işlem hattı kullanır. Bu modüler yaklaşım esneklik sağlayarak gerektiğinde ara yazılım bileşenleri ekleyerek veya kaldırarak uygulamanızın işlevselliğini özelleştirmenize ve genişletmenize olanak sağlar.
Ara yazılım işlem hattı HTTP isteklerini sıralı bir şekilde işler ve isteği işlem hattındaki bir sonraki bileşene geçirmeden önce her bileşenin belirlenen görevini gerçekleştirebilmesini sağlar.
Program.cs dosyasına yerleşik ara yazılım ekleme:
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();
Önceki kodda, birkaç yaygın ara yazılım bileşeni eklendi:
-
UseHttpsRedirection
: HTTP isteklerini HTTPS'ye yönlendirir. -
UseRouting
: İstekleri uç noktalara eşlemek için yönlendirmeyi etkinleştirir. -
MapStaticAssets
: HTML, CSS, JavaScript, görüntüler ve diğer varlıklar gibi statik dosyaların teslimini iyileştirir. -
UseAuthentication
: Kimlik doğrulama özellikleri ekler. -
UseAuthorization
: Yetkilendirme özellikleri ekler. -
app.MapGet
: Bu, uygulamanın çalıştığını göstermek için basit bir uç noktadır.
Bağımlılık Ekleme
ASP.NET Core, uygulama ve çeşitli çerçeve bileşenleri tarafından kullanılan hizmetleri yapılandırmak için yerleşik bağımlılık ekleme (DI) desteği içerir.
Örneğin, uygulamanızın diğer bölümlerinin veritabanına erişmek için bağımlı olduğu EntityFramework Core gibi bir çerçeve kullanarak bir hizmeti merkezi olarak yapılandırmak isteyebilirsiniz. EntityFramework Core'dan bir veritabanı bağlamı yapılandırmak için aşağıdaki gibi bağımlılık eklemeyi kullanabilirsiniz:
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();
Önceki kodla:
- ,
DbContext
bağımlılık ekleme kullanılarak hizmet olarak yapılandırılır. -
WebApplicationBuilder
, uygulamayı yapılandırmak için kullanılır. - yöntemi,
AddDbContext
bağımlılık ekleme kapsayıcısıyla öğesiniDbContext
kaydeder. - bağlantı dizesi yapılandırmadan alınır ve veritabanı bağlamını ayarlamak için kullanılır.
Yapılandırma
ASP.NET Core, JSON dosyaları, ortam değişkenleri ve komut satırı bağımsız değişkenleri gibi çeşitli kaynaklardan yapılandırma verilerine erişimi destekler.
appsetting.json dosyasında bağlantı dizesi yapılandırma:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;"
}
}
Program.cs dosyasında:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
var app = builder.Build();
app.Run();
Önceki kodla:
- bağlantı dizesi appsettings.json dosyasında yapılandırılır.
-
WebApplicationBuilder
, uygulamayı yapılandırmak için kullanılır. - yöntemi,
AddDbContext
bağımlılık ekleme kapsayıcısıyla öğesiniDbContext
kaydeder. - bağlantı dizesi yapılandırmadan alınır ve veritabanı bağlamını ayarlamak için kullanılır.
İzleme ve tanılama
ASP.NET Core, uygulamalarınızın sistem durumunu ve performansını izlemek ve korumak için kapsamlı bir araç paketi sağlar. Bu özellikler uygulamanıza kolayca ara yazılım bileşenleri olarak eklenebilir ve belirli işlevleri projenizle tümleştirebilir:
- Yerleşik ölçümler: ASP.NET Core, istek oranları, yanıt süreleri ve hata oranları gibi uygulamanızın performansının çeşitli yönlerini izleyen yerleşik ölçümler içerir.
- Esnek günlük çerçevesi: Esnek bir günlük çerçevesi yerleşiktir ve konsol, hata ayıklama ve olay kaynağı gibi çeşitli günlük sağlayıcılarını destekler. Bu, tanılama ve izleme için ayrıntılı günlükleri yakalamaya yardımcı olur.
- İzleme: ASP.NET Core, farklı hizmetler ve bileşenler arasındaki istek akışını izlemenize yardımcı olan dağıtılmış izlemeyi destekler. Bu, performans sorunlarını tanılamak ve uygulamanızın farklı bölümleri arasındaki etkileşimleri anlamak için yararlıdır.
- OpenTelemetry: ASP.NET Core, bulutta yerel yazılımlar için açık kaynak gözlemlenebilirlik çerçevesi olan OpenTelemetry ile tümleştirilir. OpenTelemetry ölçümleri, günlükleri ve izlemeleri toplamak için standartlaştırılmış API'ler ve izlemeler sağlayarak uygulamalarınızı daha etkili bir şekilde izlemenizi ve tanılamanızı sağlar.
- Sistem Durumu Denetimleri: Sistem durumu denetimleri API'si, uygulamanızın ve bağımlılıklarının durumunu izlemenize olanak tanır. Veritabanları, dış hizmetler ve daha fazlası gibi çeşitli bileşenlerin durumunu raporlamak için sistem durumu denetimlerini yapılandırabilirsiniz.
- Tanılama Araçları: ASP.NET Core, uygulamanızdan tanılama verilerini toplamanıza ve çözümlemenize yardımcı olan dotnet-trace, dotnet-dump ve dotnet-gcdump gibi çeşitli tanılama araçları sağlar.