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


