ASP Genel VMware

ASP.NET Core’da Performans Optimizasyonu Teknikleri

ASP.NET Core'da Performans Optimizasyonu Teknikleri

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 List GetProducts()
    {
        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.