ASP Genel VMware

ASP.NET Core ile MVC Tasarımı Nasıl Yapılır

ASP.NET Core ile MVC Tasarımı Nasıl Yapılır

ASP.NET Core ile MVC Tasarımı Nasıl Yapılır

ASP.NET Core, Microsoft tarafından geliştirilen, platformlar arası çalışabilen ve açık kaynak kodlu bir web uygulama çerçevesidir. ASP.NET Core ile MVC (Model-View-Controller) tasarımı, web uygulamalarının modüler, test edilebilir ve sürdürülebilir bir şekilde geliştirilmesine olanak tanır. Bu makalede, ASP.NET Core ile MVC tasarımının nasıl yapılacağına dair derinlemesine bir inceleme sunacağız.

1. ASP.NET Core MVC’nin Temelleri

ASP.NET Core MVC, model-view-controller tasarım desenine dayalı bir framework’tür. Bu tasarım deseni, uygulamanın iş mantığını, kullanıcı arayüzünü ve kullanıcı girdisini üç ayrı bileşene ayırarak geliştirme sürecini daha yönetilebilir hale getirir.

Model

Model, uygulamanın veri katmanını temsil eder. Veritabanı işlemleri, iş kuralları ve uygulama mantığı bu katmanda yer alır. Model sınıfları, genellikle Entity Framework Core gibi ORM araçları kullanılarak oluşturulur.

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

Bu örnek, basit bir ürün modelini temsil eder. Product sınıfı, ürünün kimliğini, adını ve fiyatını tutar.

View

View, kullanıcıya sunulan arayüzdür. Razor, ASP.NET Core MVC’de yaygın olarak kullanılan bir view engine’dir. Razor, C

kodlarını HTML içinde kullanarak dinamik içerik oluşturmayı kolaylaştırır.

@model Product

@Model.Name

Price: @Model.Price

Bu Razor view, Product modelini kullanarak ürün adını ve fiyatını görüntüler.

Controller

Controller, model ve view arasında köprü görevi görür. Kullanıcı isteklerini alır, gerekli iş mantığını uygular ve uygun view’i döndürür.

public class ProductController : Controller
{
    public IActionResult Details(int id)
    {
        var product = new Product { Id = id, Name = "Sample Product", Price = 99.99m };
        return View(product);
    }
}

Bu controller, belirli bir ürünün detaylarını döndürmek için bir Details eylem metoduna sahiptir.

2. ASP.NET Core MVC Projesi Oluşturma

ASP.NET Core MVC projesi oluşturmak için Visual Studio veya .NET CLI kullanılabilir. İşte Visual Studio kullanarak bir ASP.NET Core MVC projesi oluşturma adımları:

1. Visual Studio’yu açın ve “Create a new project” seçeneğini tıklayın.

  1. “ASP.NET Core Web Application” şablonunu seçin ve “Next”e tıklayın.
3. Projeye bir isim verin ve “Create”e tıklayın.
  1. “Web Application (Model-View-Controller)” şablonunu seçin ve “Create”e tıklayın.

Bu adımlar, temel bir ASP.NET Core MVC projesi oluşturur. Proje yapısında Controllers, Views ve Models klasörleri yer alır.

3. Routing (Yönlendirme) Yapılandırması

ASP.NET Core MVC, URL’leri eylem metodlarına yönlendirmek için routing kullanır. Routing, Startup.cs dosyasında yapılandırılır.

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

Bu kod, varsayılan route’u tanımlar. URL, controller adı, action adı ve isteğe bağlı bir id parametresi içerir.

4. Veri Tabanı Entegrasyonu

ASP.NET Core MVC projelerinde veri tabanı işlemleri için Entity Framework Core sıkça kullanılır. Entity Framework Core, .NET Core uygulamalarında veri tabanı işlemlerini yönetmek için güçlü bir ORM aracıdır.

Entity Framework Core ile Veri Tabanı İşlemleri

Entity Framework Core, veritabanı işlemlerini yönetmek için DbContext sınıfını kullanır. DbContext, veri tabanı bağlantılarını ve CRUD işlemlerini yönetir.

public class ApplicationDbContext : DbContext
{
    public DbSet Products { get; set; }

    public ApplicationDbContext(DbContextOptions options)
        : base(options)
    {
    }
}

Bu DbContext sınıfı, Product tablosunu temsil eden bir DbSet içerir.

Veri Tabanı Bağlantı Ayarları

Veri tabanı bağlantı ayarları appsettings.json dosyasında yapılandırılır.

"ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;"
}

Bu ayar, yerel bir SQL Server veritabanına bağlanmak için kullanılır.

Veri Tabanı Migration İşlemleri

Entity Framework Core, veritabanı şemasını yönetmek için migration’ları kullanır. Migration’lar, veritabanı şemasındaki değişiklikleri takip eder ve uygular.

dotnet ef migrations add InitialCreate
dotnet ef database update

Bu komutlar, veritabanı için başlangıç migration’ını oluşturur ve uygular.

5. Güvenlik ve Kimlik Doğrulama

ASP.NET Core MVC projelerinde güvenlik ve kimlik doğrulama, uygulamanın güvenliğini sağlamak için kritik öneme sahiptir. ASP.NET Core, kimlik doğrulama ve yetkilendirme işlemleri için Identity kütüphanesini sunar.

ASP.NET Core Identity Kullanımı

ASP.NET Core Identity, kullanıcı kimlik doğrulama ve yetkilendirme işlemlerini yönetir. Kullanıcı kaydı, oturum açma ve rol yönetimi gibi işlemler için kapsamlı bir çözüm sunar.

services.AddIdentity()
    .AddEntityFrameworkStores()
    .AddDefaultTokenProviders();

Bu kod, ASP.NET Core Identity’i uygulamaya ekler ve ApplicationDbContext ile entegre eder.

Kimlik Doğrulama Middleware’i

Kimlik doğrulama middleware’i, kimlik doğrulama işlemlerini yönetmek için kullanılır. Startup.cs dosyasında yapılandırılır.

app.UseAuthentication();
app.UseAuthorization();

Bu middleware’ler, kimlik doğrulama ve yetkilendirme işlemlerini uygular.

6. Performans Optimizasyonu

ASP.NET Core MVC uygulamalarında performans optimizasyonu, kullanıcı deneyimini iyileştirmek için önemlidir. İşte performans optimizasyonu için bazı ipuçları:

Caching (Önbellekleme)

Önbellekleme, sık kullanılan verilerin bellekte saklanarak erişim süresini azaltır. ASP.NET Core, önbellekleme için çeşitli stratejiler sunar.

services.AddResponseCaching();
app.UseResponseCaching();

Bu kod, yanıt önbellekleme özelliğini etkinleştirir.

Asenkron Programlama

Asenkron programlama, uygulamanın daha verimli çalışmasını sağlar. ASP.NET Core, asenkron işlemler için async ve await anahtar kelimelerini destekler.

public async Task GetProductsAsync()
{
    var products = await _context.Products.ToListAsync();
    return View(products);
}

Bu eylem metodu, ürün listesini asenkron olarak alır ve döndürür.

7. Sunucu ve Dağıtım Seçenekleri

ASP.NET Core MVC uygulamaları, çeşitli sunucu ve dağıtım seçenekleri ile dağıtılabilir. İşte bazı popüler seçenekler:

Kestrel ve IIS

Kestrel, ASP.NET Core uygulamaları için varsayılan web sunucusudur. IIS, daha gelişmiş özellikler sunar ve Kestrel ile birlikte kullanılabilir.

Docker

Docker, uygulamaları konteynerize etmek için kullanılır. ASP.NET Core uygulamaları, Docker ile platformlar arası çalışabilir.

Cloud Sunucular

ASP.NET Core uygulamaları, Cloud Sunucular üzerinde dağıtılabilir. Cloud sunucular, ölçeklenebilirlik ve esneklik sağlar.

8. Hata Yönetimi ve Loglama

ASP.NET Core MVC projelerinde hata yönetimi ve loglama, uygulamanın izlenebilirliğini artırır. ASP.NET Core, hata yönetimi ve loglama için çeşitli araçlar sunar.

Hata Yönetimi

Hata yönetimi, uygulama hatalarını ele almak için kullanılır. Startup.cs dosyasında yapılandırılır.

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

Bu kod, hataları özel bir hata sayfasına yönlendirir ve HSTS’yi etkinleştirir.

Loglama

Loglama, uygulama olaylarını kaydetmek için kullanılır. ASP.NET Core, çeşitli loglama sağlayıcılarını destekler.

services.AddLogging(builder =>
{
    builder.AddConsole();
    builder.AddDebug();
});

Bu kod, konsol ve debug loglama sağlayıcılarını ekler.

9. SEO ve Kullanıcı Deneyimi

ASP.NET Core MVC projelerinde SEO ve kullanıcı deneyimi, web uygulamasının başarısı için kritik öneme sahiptir. İşte bazı ipuçları:

SEO Uyumlu URL’ler

SEO uyumlu URL’ler, arama motorları tarafından daha iyi indekslenir. ASP.NET Core MVC, URL yönlendirmeleri için esnek bir yapı sunar.

Mobil Uyumlu Tasarım

Mobil uyumlu tasarım, kullanıcı deneyimini iyileştirir. ASP.NET Core MVC, responsive tasarımlar için CSS framework’leri ile entegre edilebilir.

Sonuç

ASP.NET Core ile MVC tasarımı, modern web uygulamaları geliştirmek için güçlü bir yaklaşımdır. Bu makalede, ASP.NET Core MVC’nin temel bileşenlerinden başlayarak veri tabanı entegrasyonu, güvenlik, performans optimizasyonu ve dağıtım seçeneklerine kadar geniş bir yelpazede konuları ele aldık. ASP.NET Core’un sunduğu esneklik ve performans avantajları, web uygulamalarınızı daha etkili ve sürdürülebilir bir şekilde geliştirmenizi sağlar.