ASP Genel VMware

ASP.NET Performans İyileştirme Teknikleri

ASP.NET Performans İyileştirme Teknikleri

ASP.NET Performans İyileştirme Teknikleri

ASP.NET, web uygulamaları geliştirmek için güçlü bir platform sunar. Ancak, performans optimizasyonu, uygulamanızın hızlı ve verimli çalışmasını sağlamak için kritik bir öneme sahiptir. Bu makalede, ASP.NET uygulamalarının performansını artırmak için kullanabileceğiniz çeşitli teknikleri inceleyeceğiz.

1. Cache Kullanımı

Cache, sık erişilen verilerin bellekte saklanarak uygulama performansının artırılmasına yardımcı olur. ASP.NET, çeşitli cache mekanizmaları sunar.

1.1 Output Caching

Output caching, bir sayfanın veya kontrolün çıktısını cache’leyerek, sunucuya yapılan isteklerin sayısını azaltır.

<%@ OutputCache Duration="60" VaryByParam="none" %>

Bu örnek, sayfanın çıktısını 60 saniye boyunca cache’ler. “VaryByParam” özelliği, cache’lemenin hangi parametrelere göre değişkenlik göstereceğini belirtir.

1.2 Data Caching

Data caching, veri tabanı sorguları gibi sık kullanılan verilerin cache’lenmesini sağlar.

Cache.Insert("key", data, null, DateTime.Now.AddMinutes(10), Cache.NoSlidingExpiration);

Bu kod, “key” anahtarına sahip veriyi 10 dakika boyunca cache’ler. “NoSlidingExpiration”, cache’in belirli bir süre boyunca güncellenmeden kalmasını sağlar.

2. Asenkron Programlama

Asenkron programlama, uygulamanızın daha fazla isteği aynı anda işlemesine olanak tanır, bu da genel performansı artırır.

2.1 Async ve Await Kullanımı

ASP.NET uygulamalarında, asenkron işlemler “async” ve “await” anahtar kelimeleri ile gerçekleştirilir.

public async Task GetDataAsync()
{
    var data = await _service.GetDataAsync();
    return View(data);
}

Bu örnek, verilerin asenkron olarak alınmasını ve işlenmesini gösterir. “await” anahtar kelimesi, işlemin tamamlanmasını bekler ve ardından devam eder.

3. Bağlantı Havuzu (Connection Pooling)

Veritabanı bağlantıları, uygulamanızın performansını etkileyen önemli faktörlerden biridir. Bağlantı havuzu, veritabanı bağlantılarının yeniden kullanılmasını sağlayarak performansı artırır.

3.1 SQL Server Bağlantı Havuzu

ASP.NET, SQL Server bağlantı havuzunu otomatik olarak yönetir. Ancak, bağlantı dizginizde bazı ayarlamalar yaparak performansı daha da optimize edebilirsiniz.

"Data Source=server;Initial Catalog=database;Integrated Security=True;Max Pool Size=100;"

“Max Pool Size”, bağlantı havuzundaki maksimum bağlantı sayısını belirler. Bu değer, uygulamanızın ihtiyaçlarına göre ayarlanmalıdır.

4. Sıkıştırma ve Minifikasyon

Uygulamanızın yanıt süresini azaltmak için, istemciye gönderilen verilerin boyutunu küçültmek önemlidir.

4.1 Gzip Sıkıştırma

Gzip sıkıştırma, HTTP yanıtlarını sıkıştırarak veri boyutunu azaltır.

public void ConfigureServices(IServiceCollection services)
{
    services.AddResponseCompression(options =>
    {
        options.EnableForHttps = true;
    });
}

Bu kod, ASP.NET Core uygulamanızda Gzip sıkıştırmayı etkinleştirir. “EnableForHttps” özelliği, HTTPS üzerinden sıkıştırmayı etkinleştirir.

4.2 JavaScript ve CSS Minifikasyonu

JavaScript ve CSS dosyalarının minifikasyonu, dosya boyutunu küçültür ve yükleme süresini hızlandırır.

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
            "~/Scripts/jquery-{version}.js"));
bundles.Add(new StyleBundle("~/Content/css").Include(
            "~/Content/site.css"));

Bu örnek, ASP.NET MVC uygulamasında BundleConfig sınıfı kullanılarak JavaScript ve CSS dosyalarının minifikasyonunu gösterir.

5. Veritabanı Optimizasyonu

Veritabanı sorgularının optimizasyonu, uygulamanızın performansını doğrudan etkiler.

5.1 Sorgu Optimizasyonu

Sorgularınızı optimize etmek için, gereksiz verileri filtreleyin ve yalnızca ihtiyaç duyduğunuz alanları seçin.

SELECT Name, Age FROM Users WHERE IsActive = 1

Bu sorgu, yalnızca aktif kullanıcıların isim ve yaş bilgilerini getirir, gereksiz verilerin alınmasını önler.

5.2 İndeks Kullanımı

Veritabanı tablolarınıza uygun indeksler eklemek, sorguların daha hızlı çalışmasını sağlar.

CREATE INDEX idx_active_users ON Users(IsActive)

Bu komut, “IsActive” sütunu üzerinde bir indeks oluşturur ve sorgu performansını artırır.

6. Uygulama İzleme ve Profiling

Uygulamanızın performansını izlemek ve analiz etmek için çeşitli araçlar kullanabilirsiniz.

6.1 Application Insights

Azure Application Insights, uygulamanızın performansını izlemek ve analiz etmek için güçlü bir araçtır.

services.AddApplicationInsightsTelemetry(Configuration["ApplicationInsights:InstrumentationKey"]);

Bu kod, ASP.NET Core uygulamanızda Application Insights’ı etkinleştirir ve yapılandırır.

6.2 Profiling Araçları

Profiling araçları, uygulamanızın performansını analiz etmenize ve darboğazları belirlemenize yardımcı olur. Visual Studio Profiler ve ANTS Performance Profiler gibi araçlar bu amaçla kullanılabilir.

7. Sunucu Seçimi ve Yapılandırma

Uygulamanızın performansını artırmak için doğru sunucu yapılandırması ve seçimi önemlidir. VDS Sunucular ve Cloud Sunucular gibi seçenekler, ihtiyacınıza uygun esneklik ve performans sunar.

7.1 Sunucu Kaynaklarının Optimizasyonu

Sunucu kaynaklarınızı optimize ederek uygulamanızın daha verimli çalışmasını sağlayabilirsiniz. CPU, bellek ve disk kullanımı gibi kaynakların izlenmesi ve gerektiğinde ölçeklendirilmesi önemlidir.

7.2 CDN Kullanımı

Content Delivery Network (CDN) kullanarak statik içeriklerinizi farklı coğrafi konumlarda dağıtarak yükleme sürelerini azaltabilirsiniz.

8. Hata Yönetimi ve Loglama

Hataların etkin bir şekilde yönetilmesi ve loglanması, performans sorunlarının hızlı bir şekilde tespit edilmesine yardımcı olur.

8.1 Hata Yönetimi

ASP.NET, hataların yakalanması ve yönetilmesi için kapsamlı bir hata yönetimi altyapısı sunar.

app.UseExceptionHandler("/Home/Error");

Bu kod, uygulamanızda bir hata meydana geldiğinde kullanıcıyı özel bir hata sayfasına yönlendirir.

8.2 Loglama

Loglama, uygulamanızda meydana gelen olayların kaydedilmesine yardımcı olur. ASP.NET Core, entegre bir loglama altyapısı sunar.

public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();
}

Bu kod, ASP.NET Core uygulamanızda konsol ve debug loglamayı etkinleştirir.

ASP.NET uygulamalarınızın performansını artırmak için bu teknikleri uygulayarak, daha hızlı ve daha verimli bir kullanıcı deneyimi sunabilirsiniz. Performans optimizasyonu, kullanıcı memnuniyetini artırmanın yanı sıra, sunucu maliyetlerini de düşürebilir. Doğru optimizasyon tekniklerini kullanarak, uygulamanızın potansiyelini en üst düzeye çıkarabilirsiniz.