Article

Pazartesi, 23 Eyl 2024 - 23:09

Asp.Net Core Uygulama Best Practice'leri

Owner: Barış Gelebek

"Bir web sitesi veya web tabanlı bir uygulama geliştirirken, yükleme süresi her zaman bir uygulamanın başarısı ile ilgili kritik noktalardan biri olarak kabul edilir. Eğer bir web sitesi veya uygulama 3 saniyeden daha uzun bir süre alıyorsa, kullanıcıların siteyi terk etme olasılığı oldukça yüksektir. "



Bu nedenle, her zaman mükemmel ve sağlam bir uygulama yaratmayı hedefleriz. Bu amaçla, ASP.NET Core en iyi çerçevedir. Bu makalede, ASP.NET Core uygulamalarında en iyi uygulamaları keşfedeceğiz.


Neden ASP.NET Core Kullanmalıyız?

ASP.NET Core, Microsoft tarafından geliştirilmiş açık kaynaklı, hafif, hızlı ve çok platformlu bir çerçevedir. ASP.NET Framework’ün yeniden yazımıdır. ASP.NET’in güncellenmiş bir versiyonu değildir; bu nedenle geliştiricilere normal program akışını kolaylıkla kontrol etme imkanı sunar. Sıfırdan yeniden tasarlanmış olup, ASP.NET Web API ve ASP.NET MVC’nin tek bir programlama modelini sağlar. Hız, ASP.NET Core'un kritik özelliklerinden biridir çünkü daha iyi ve hızlı performans için optimize edilmiştir.

ASP.NET Core'un web tabanlı uygulamalar için kullanılmasının birkaç nedeni vardır:

  • Herhangi bir web uygulaması, IoT tabanlı uygulamalar ve mobil uygulamalara ilişkin arka uç hizmetleri geliştirebiliriz.
  • Açık kaynaklı bir çerçeve olduğu için, geliştirilen uygulama Windows, macOS ve Linux gibi her türlü işletim sisteminde çalışabilir.
  • Geliştirilen uygulamayı bulut veya yerel sunucularda dağıtabiliriz.


ASP.NET Core ile İlgili Kod Performansı En İyi Uygulamaları

ASP.NET Core ile ilgili en iyi kodlama uygulamalarını şimdi tartışacağız. Bu uygulamalar, geliştiricilerin bu çerçeveyi kullanarak optimum performans elde etmeleri için yardımcı olacaktır.

  1. Inline Methods Uygulamanın performansını artırmak için argümanlar geçirerek inline yöntemler kullanmalısınız. JIT (Just-In-Time) derleyicisi tarafından içerdiği bir throw ifadesi olan teknikler inline değildir. Bunun için, tüm throw ifadelerini kapsayan statik bir yardımcı işlem kullanmalısınız.

  2. Use Async Methods (async-await) Uygulamayı daha güvenilir, hızlı ve etkileşimli hale getirmek için ASP.NET Core, Asenkron programlama yaklaşımını kullanır. Uygulamalarımız için uçtan uca asenkron programlama uygulamalıyız.

    Yanlış Yaklaşım

    public class StreamReaderController : Controller
    { [HttpGet("/home")] public ActionResult Get() { var json = new StreamReader(Request.Body).ReadToEnd(); return JsonSerializer.Deserialize(json); } }

    Doğru Yaklaşım

    public class StreamReaderAsyncController : Controller
    { [HttpGet("/home")] public async Task<ActionResult> Get() { var json = await new StreamReader(Request.Body).ReadToEndAsync(); return JsonSerializer.Deserialize(json); } } 
  3. Optimize DAL Layer Uygulamaların performansını artırmak için DAL katmanını optimize etmeliyiz. Uygulamalar genellikle veritabanına bağımlıdır ve verileri almak, işlemek ve uygulamada görüntülemek zorundadır. Bu tür uygulamalar için aşağıdaki önerilere uymalıyız:

    • Verileri asenkron API yöntemleri ile veritabanından alın.
    • Gereksiz verileri almayın.
    • Entity Framework Core'da sadece görüntüleme amaçlı veri alırken, izleme dışı sorgular kullanın.
    • Aggregate ve filtreleme LINQ sorguları kullanın.                                      

  4. Use Asynchronous Programming Asenkron programlama, engelleyici olmayan işlemleri gerçekleştirmek, yanıt verme yeteneğini artırmak ve dış kaynak kullanmadan ölçeklenebilirliği artırmak için oldukça faydalıdır.

  5. Optimize Data Access Veri erişimi, sorgu gruplama, veritabanı indeksleri kullanma ve LINQ sorgularını optimize etme teknikleriyle optimize edilebilir. Bu, veritabanı turunu azaltarak uygulamanın genel performansını artırır.

  6. Always Use Cache Önbellek kullanarak uygulamanın performansı artırılabilir çünkü sık erişilen veriler bellekte saklanır, böylece hesaplamaların veya veritabanı sorgularının tekrarlanmasına gerek kalmaz.

  7. Response Caching Middleware Components Bu, uygulamanızda gecikmeyi azaltmak ve genel performansı artırmak için çok faydalıdır. ASP.NET Core’daki yanıt önbellekleme bileşenleri ile HTTP yanıtlarını sunucu veya istemci seviyesinde kolayca önbelleğe alabilirsiniz.

  8. Bundling and Minification ASP.NET Core'da paketleme ve küçültme, web sayfalarının yükleme sürelerini hızlandırır ve performansı artırır. CSS, JavaScript ve görseller gibi statik varlıkların boyutunu azaltmaya yardımcı olurlar.

  9. Use Content Delivery Network (CDN) İçerik Dağıtım Ağı, statik varlıkların teslimatını hızlandırır çünkü bunlar dünya çapında birden fazla sunucuya dağıtılır.

  10. Load JavaScript from the Bottom JavaScript dosyalarının HTML belgelerinin altına yüklenmesi, kritik içeriğin önce render edilmesini sağlayarak kullanıcı deneyimini iyileştirir.

  11. Use Exceptions only When Necessary Beklenmedik çöküşleri önlemek ve hata yönetimini geliştirmek için istisnaları yalnızca gerçekten gerekli olduğunda kullanmalısınız.

  12. Use Swagger API belgelemenizi etkileşimli hale getiren bir yöntemdir. Swagger'ı ASP.NET Core uygulamanıza entegre etmeniz yeterlidir.

  13. Delete Unused Profiles Uzun süredir kullanılmayan profilleri kalıcı olarak silmelisiniz. Bu profilleri, yapılandırmaları veya kod segmentlerini kaldırmak, uygulamanızın karmaşıklığını azaltır ve güvenliğini artırır.

  14. Use the caching techniques. Önbellekleme, uygulamaların performansını artırmanın en iyi ve en test edilmiş yollarından biridir. ASP.NET Core, yanıt önbellekleme aracılığıyla büyük veri nesnelerini önbelleğe almanıza yardımcı olur.

  15. Response Caching Middleware ASP.NET Core'da, yanıt önbellekleme araçlarını kullanarak yanıt verilerini önbelleğe alabilirsiniz. Bu yaklaşım, uygulamaların performansını artırır.

  16. Compression Yanıt boyutunu azaltarak uygulamanın gerçek performansını artırabilirsiniz. ASP.NET Core’daki yanıt sıkıştırma işlevselliği, yanıt verilerinin boyutunu küçülterek bant genişliği gereksinimlerini azaltır.

  17. Load JavaScript Files at the End Web uygulamasında JavaScript dosyaları kullanıyorsanız, bunları gerekli değilse en sona yüklemelisiniz.

  18. Use Exception only when Required. Uygulama içinde istisna mantığını yalnızca gerektiğinde uygulamalısınız.

  19. Routing Rotalarda detay adını sağlamalı ve rota anahtarları için fiiller yerine isimler kullanmalısınız.

  20. Use AutoMapper Boş kod yazımını önlemek için AutoMapper işlevini kullanmalıyız. AutoMapper, minimal yapılandırma gerektiren bir nesne-nesne haritalayıcıdır.

  21. Logging  Uygulamada günlükleme sistemi uygulamak önemlidir. ASP.NET Core’da yapılandırılmış günlükleme, tasarımı tutarlı tutmak için her zaman daha iyidir.

  22. Use Refactoring for Auto-Generated Code .NET Core çerçevesi otomatik olarak çok fazla kod üretir. Bazen mantık akışını incelememiz gerekir.


ASP.NET Core Güvenlik En İyi Uygulamaları

ASP.NET Core, en güvenli çerçevelerden biri olarak kabul edilir. Ancak yine de uygulamadaki etkinlikleri izlemeli ve güvenlik uygulamaları ile ilgili en iyi uygulamaları takip etmeliyiz.

  • Cross-Site Scripting (XSS): XSS saldırılarına karşı uygulamaları korumak için her zaman düzenli ifadeler kullanmalısınız.
  • Cross-Site Request Forgery (CSRF): CSRF saldırılarını önlemek için, kontrolcü eyleminden önce anti-forgery jetonları kullanmalısınız.
  • SSL ve HTTPS Kullanma: SSL, istemci ve sunucu arasında güvenli bağlantılar kurar.
  • SQL Enjeksiyonu: SQL enjeksiyonu, web tabanlı uygulamalar için yaygın bir tehdittir. Bu tür saldırılardan korunmak için kodun SQL sorgularına doğrudan bağımlı olmaması gerekir.
  • Güncel Çerçeve Versiyonları Kullanma: Uygulama geliştirirken her zaman en son kütüphaneleri kullanmalısınız.
  • Güvenli Giriş Kullanma: Kullanıcıları doğrularken dikkatli olmalısınız.
  • XML Dış Varlık (XXE): XXE saldırılarına karşı XmlTextReader kullanarak XML dosyalarını işlemelisiniz.
  • Çerezleri Temizleme: Kullanıcılar uygulamadan çıktığında ilgili çerezleri veya oturum nesnelerini kaldırmalısınız.
  • Versiyon Bilgilerini Gizleme: Uygulamanızın versiyon bilgilerini gizlemelisiniz.
  • Denetim İzleri ve Günlük Analizi: Denetim ve günlükleme sistemi, olağandışı durumlarla ilgili bilgi sağlar.


ASP.NET Core Projeniz İçin Neden En İyi?

ASP.NET Core, projeleriniz için en iyi seçeneklerden biridir ve bu seçimi destekleyen birçok neden vardır:

  • Artan Güvenlik: XSS, CSRF koruması gibi birçok özellik sunar.
  • Çok Platformlu Uyumluluk: Windows, Linux, macOS üzerinde çalışabilir.
  • Geliştirilmiş Performans: İyileştirilmiş istek işleme ve sunucu barındırma özellikleri ile yüksek performans sunar.
  • Dil ve Platform Esnekliği: C#, F# ve Visual Basic gibi birçok programlama dilini destekler.
  • Maliyet Etkinliği: Açık kaynaklı olması nedeniyle lisans maliyeti yoktur.
  • Birleşik Ekosistem: Microsoft teknolojileri ile entegrasyonu sayesinde geniş bir ekosistem sunar.


Sonuç

.NET 6 ile birlikte daha hızlı performans ve daha akıcı web tabanlı uygulamalar elde edebiliriz. Bu makalede performans artırımı için çeşitli yöntemler ele alınmıştır. ASP.NET Core sertifikası alarak bilgi ve yeteneklerinizi geliştirebilirsiniz.

Bir sonraki yazıda görüşmek üzere...


Comments: