ASP.NET Çekirdek Mimarisini Anlamak
ASP.NET Core, Microsoft tarafından geliştirilen, platformlar arası, açık kaynaklı bir web çerçevesidir. Modern web uygulamaları geliştirmek için esnek ve modüler bir yapı sunar. Bu makalede, ASP.NET Core mimarisinin temel unsurlarını ve uygulama yöntemlerini inceleyeceğiz.
1. ASP.NET Core Mimarisi
ASP.NET Core, hafif ve yüksek performanslı bir çerçeve olarak tasarlanmıştır. Modüler yapısı sayesinde, yalnızca ihtiyaç duyulan bileşenleri ekleyerek uygulamaların daha hızlı ve daha az bellek kullanarak çalışmasını sağlar.
1.1. Modüler Yapı
ASP.NET Core’un modüler yapısı, NuGet paketleri üzerinden bileşenlerin eklenmesine olanak tanır. Bu sayede, gereksiz bileşenler yüklenmez ve uygulama daha verimli çalışır. Örneğin, yalnızca belirli bir veritabanı desteğine ihtiyacınız varsa, sadece o veritabanı için gerekli olan NuGet paketlerini ekleyebilirsiniz.
1.2. Platformlar Arası Çalışabilirlik
ASP.NET Core, Windows, macOS ve Linux gibi farklı işletim sistemlerinde çalışabilir. Bu özellik, geliştiricilere uygulamalarını farklı ortamlarda test etme ve dağıtma esnekliği sağlar. Özellikle VDS Sunucular veya Cloud Sunucular üzerinde çalıştırılabilir.
1.3. Bağımlılık Enjeksiyonu
Bağımlılık enjeksiyonu, ASP.NET Core’un temel özelliklerinden biridir. Bu, bileşenlerin ve hizmetlerin daha kolay yönetilmesini sağlar. Aşağıda basit bir bağımlılık enjeksiyonu örneği verilmiştir:
public interface IGreetingService { string Greet(string name); } public class GreetingService : IGreetingService { public string Greet(string name) => $"Hello, {name}!"; } public class HomeController : Controller { private readonly IGreetingService _greetingService; public HomeController(IGreetingService greetingService) { _greetingService = greetingService; } public IActionResult Index() { var message = _greetingService.Greet("World"); return View((object)message); } }
Bu örnekte, IGreetingService
arayüzü ve GreetingService
sınıfı bağımlılık enjeksiyonu kullanılarak HomeController
’a enjekte edilmiştir.
2. ASP.NET Core Uygulama Geliştirme
ASP.NET Core ile uygulama geliştirirken, belirli tasarım kalıplarını ve yöntemlerini takip etmek önemlidir. Bu, uygulamanın bakımını ve genişletilmesini kolaylaştırır.
2.1. MVC Deseni
Model-View-Controller (MVC) deseni, ASP.NET Core’da yaygın olarak kullanılır. Bu desen, uygulamanın farklı bileşenlerini ayırarak kodun daha okunabilir ve yönetilebilir olmasını sağlar.
– Model: Uygulamanın veri ve iş mantığını temsil eder.
– View: Kullanıcıya gösterilen arayüzü temsil eder.
– Controller: Model ve View arasında köprü görevi görür.
2.2. Razor Sayfaları
Razor Sayfaları, ASP.NET Core’da sayfa tabanlı senaryolar için kullanılan bir özellikdir. MVC’ye benzer şekilde çalışır ancak sayfa odaklı bir yaklaşım sunar. Razor Sayfaları, özellikle küçük ve orta ölçekli uygulamalar için idealdir.
2.3. Middleware Bileşenleri
ASP.NET Core, HTTP isteklerini işlemek için bir dizi middleware bileşeni kullanır. Bu bileşenler, isteklerin yönlendirilmesi, kimlik doğrulama, hata yönetimi gibi işlemleri gerçekleştirir.
public void Configure(IApplicationBuilder app) { app.Use(async (context, next) => { // İstek işleme öncesi await next.Invoke(); // İstek işleme sonrası }); app.UseStaticFiles(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }
Bu örnekte, bir middleware bileşeni kullanılarak HTTP istekleri işlenmektedir.
3. Performans Optimizasyonu
ASP.NET Core, yüksek performanslı uygulamalar geliştirmek için çeşitli optimizasyon teknikleri sunar.
3.1. Caching
Veri ve sayfa önbellekleme, uygulamanın performansını artırmanın etkili bir yoludur. ASP.NET Core, bellek içi önbellekleme gibi çeşitli önbellekleme stratejileri sunar.
public void ConfigureServices(IServiceCollection services) { services.AddMemoryCache(); } public class HomeController : Controller { private readonly IMemoryCache _cache; public HomeController(IMemoryCache cache) { _cache = cache; } public IActionResult Index() { if (!_cache.TryGetValue("cachedTime", out DateTime cachedTime)) { cachedTime = DateTime.Now; _cache.Set("cachedTime", cachedTime, TimeSpan.FromMinutes(5)); } return View((object)cachedTime); } }
Bu örnekte, bir tarih ve saat bilgisi 5 dakika boyunca önbellekte saklanmaktadır.
3.2. Asenkron Programlama
Asenkron programlama, uygulamanın yanıt verme süresini artırarak daha fazla eşzamanlı istek işlenmesini sağlar. ASP.NET Core, asenkron programlamayı destekler ve async
ve await
anahtar kelimeleri ile kullanılır.
public async Task GetDataAsync() { var data = await _dataService.GetDataAsync(); return View(data); }
Bu örnekte, bir veri hizmetinden asenkron olarak veri alınmaktadır.
4. Güvenlik
ASP.NET Core, uygulamaların güvenliğini sağlamak için çeşitli özellikler sunar.
4.1. Kimlik Doğrulama ve Yetkilendirme
ASP.NET Core, kimlik doğrulama ve yetkilendirme için kapsamlı bir altyapı sağlar. OAuth, OpenID Connect gibi protokoller desteklenir.
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options => { options.LoginPath = "/Account/Login"; });
Bu örnekte, çerez tabanlı kimlik doğrulama yapılandırılmaktadır.
4.2. Veri Koruma
Veri koruma, hassas verilerin şifrelenmesi ve korunması için kullanılır. ASP.NET Core, veri koruma API’si ile bu işlemi kolaylaştırır.
public class DataProtectionExample { private readonly IDataProtector _protector; public DataProtectionExample(IDataProtectionProvider provider) { _protector = provider.CreateProtector("SamplePurpose"); } public string ProtectData(string input) { return _protector.Protect(input); } public string UnprotectData(string input) { return _protector.Unprotect(input); } }
Bu örnekte, veri koruma API’si kullanılarak veriler şifrelenmekte ve çözülmektedir.
5. Dağıtım ve Barındırma
ASP.NET Core uygulamaları, çeşitli ortamlarda dağıtılabilir ve barındırılabilir. Fiziksel Sunucu veya Dedicated Sunucu gibi seçenekler mevcuttur.
5.1. Kestrel Web Sunucusu
Kestrel, ASP.NET Core uygulamaları için varsayılan web sunucusudur. Yüksek performanslı ve hafif bir sunucudur. Kestrel, doğrudan internete açılabilir veya bir ters proxy sunucusu (örn. Nginx, Apache) ile kullanılabilir.
5.2. Ters Proxy Yapılandırması
Ters proxy sunucuları, Kestrel gibi uygulama sunucularının önünde çalışarak güvenlik ve yük dengeleme gibi ek özellikler sağlar.
server { listen 80; server_name example.com; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
Bu Nginx yapılandırması, gelen istekleri Kestrel sunucusuna yönlendirir.
Sonuç
ASP.NET Core, modern web uygulamaları geliştirmek için güçlü ve esnek bir çerçevedir. Modüler yapısı, platformlar arası çalışabilirliği, bağımlılık enjeksiyonu, performans optimizasyonları ve güvenlik özellikleri ile geliştiricilere kapsamlı bir araç seti sunar. Uygulamalarınızı Sanal Sunucular veya Yurt Dışı Lokasyon Sanal Sunucular üzerinde barındırarak global erişim sağlayabilirsiniz. ASP.NET Core’un sunduğu bu özellikler, uygulama geliştirme sürecini daha verimli ve etkili hale getirir.