ASP.NET Core’da Performans Optimizasyonu Teknikleri
ASP.NET Core, modern web uygulamaları geliştirmek için kullanılan güçlü bir framework’tür. Ancak, uygulamalarınızın hızlı ve verimli çalışmasını sağlamak için performans optimizasyonu tekniklerini doğru bir şekilde uygulamak önemlidir. Bu makalede, ASP.NET Core uygulamalarında performansı artırmak için kullanabileceğiniz çeşitli teknikleri inceleyeceğiz.
1. Asenkron Programlama Kullanımı
Asenkron programlama, uygulamanızın yanıt verme süresini iyileştirmek ve daha fazla kullanıcıya hizmet verebilmek için önemlidir. ASP.NET Core, asenkron programlamayı destekleyen Task tabanlı bir model sunar.
Asenkron Metotlar
Asenkron metotlar, uzun süren işlemleri (örneğin, veri tabanı sorguları veya API çağrıları) engellemeden gerçekleştirmeyi sağlar. Aşağıdaki örnek, bir veri tabanından veri çeken asenkron bir metodu göstermektedir:
public async Task> GetProductsAsync() { using (var context = new ApplicationDbContext()) { return await context.Products.ToListAsync(); } }
Bu kod, veri tabanından ürün listesini asenkron bir şekilde alır, böylece diğer işlemler engellenmez.
2. Önbellekleme Stratejileri
Önbellekleme, uygulamanızın performansını artırmanın etkili bir yoludur. ASP.NET Core, çeşitli önbellekleme stratejileri sunar.
Bellek İçi Önbellek
Bellek içi önbellek, sık kullanılan verileri sunucu belleğinde saklayarak veri tabanı veya diğer veri kaynaklarına yapılan gereksiz çağrıları azaltır.
public void ConfigureServices(IServiceCollection services) { services.AddMemoryCache(); } public class ProductService { private readonly IMemoryCache _cache; public ProductService(IMemoryCache cache) { _cache = cache; } public ListGetProducts() { if (!_cache.TryGetValue("products", out List products)) { // Veri tabanından verileri al products = FetchProductsFromDatabase(); // Önbelleğe ekle _cache.Set("products", products, TimeSpan.FromMinutes(30)); } return products; } }
Bu örnek, ürün listesini bellekte saklar ve 30 dakika boyunca önbellekten sunar.
3. Veri Sıkıştırma
Veri sıkıştırma, ağ üzerinden gönderilen verilerin boyutunu azaltarak daha hızlı yükleme süreleri sağlar. ASP.NET Core, Gzip sıkıştırmasını destekler.
Gzip Sıkıştırma
Gzip sıkıştırmayı etkinleştirmek için Startup.cs
dosyanıza aşağıdaki kodu ekleyebilirsiniz:
public void ConfigureServices(IServiceCollection services) { services.AddResponseCompression(options => { options.Providers.Add(); options.EnableForHttps = true; }); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseResponseCompression(); // Diğer middleware'ler }
Bu ayar, uygulamanızın yanıtlarını otomatik olarak sıkıştırarak ağ trafiğini azaltır.
4. Bağlantı Havuzu Kullanımı
Veri tabanı bağlantıları, uygulamanızın performansını etkileyen önemli bir faktördür. Bağlantı havuzu, veri tabanı bağlantılarını yeniden kullanarak uygulamanızın daha hızlı yanıt vermesini sağlar.
Bağlantı Havuzu Ayarları
Bağlantı havuzu ayarlarını ConnectionString
içinde yapılandırabilirsiniz:
"ConnectionStrings": { "DefaultConnection": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;Max Pool Size=100;" }
Bu ayar, bağlantı havuzunun maksimum 100 bağlantı tutmasını sağlar.
5. Veritabanı Optimizasyonu
Veritabanı optimizasyonu, sorgu performansını artırarak uygulamanızın genel performansını iyileştirir.
Sorgu Optimizasyonu
Sorgularınızı optimize etmek için indeksler kullanabilir ve gereksiz verileri çekmekten kaçınabilirsiniz. Örneğin:
var products = context.Products .Where(p => p.Price > 100) .Select(p => new { p.Name, p.Price }) .ToList();
Bu sorgu, yalnızca gerekli alanları seçerek veri tabanı yükünü azaltır.
6. Sunucu Seçimi ve Konfigürasyonu
Performans optimizasyonunda doğru sunucu seçimi de büyük önem taşır. Yüksek performanslı bir VDS Sunucu veya Dedicated Sunucu kullanarak uygulamanızın performansını artırabilirsiniz. Ayrıca, sunucu konfigürasyonlarınızı optimize etmek, kaynak kullanımını en iyi şekilde yönetmenize yardımcı olur.
7. Statik Dosyaların Yönetimi
Statik dosyalar (CSS, JavaScript, resimler) genellikle uygulama performansını etkileyebilir. ASP.NET Core, statik dosyaların daha verimli bir şekilde sunulmasını sağlayan çeşitli özellikler sunar.
Statik Dosya Sıkıştırma ve Önbellekleme
Statik dosyaları sıkıştırmak ve önbelleğe almak, sayfa yükleme sürelerini azaltabilir:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseStaticFiles(new StaticFileOptions { OnPrepareResponse = ctx => { ctx.Context.Response.Headers.Append("Cache-Control", "public,max-age=600"); } }); }
Bu ayar, statik dosyaların tarayıcı tarafından 10 dakika boyunca önbellekte saklanmasını sağlar.
8. Diğer Performans İpuçları
– Dependency Injection (DI) Optimizasyonu: Hizmetleri singleton olarak kaydederek bellek kullanımını optimize edin.
– Logging Seviyelerini Ayarlama: Gereksiz loglama işlemlerini devre dışı bırakarak performansı artırın.
– Yük Dengeleme: Cloud Sunucular kullanarak uygulamanızın yükünü dağıtın.
ASP.NET Core uygulamalarında performans optimizasyonu, kullanıcı deneyimini iyileştirmek ve sistem kaynaklarını verimli kullanmak için kritik öneme sahiptir. Yukarıda bahsedilen teknikleri uygulayarak, uygulamanızın performansını önemli ölçüde artırabilirsiniz.