c# Web

Core MVC Uygulamalarında Area Yapısı ile Modüler Tasarım ve Yönlendirme Yönetimi

Giriş

ASP.NET Core MVC, büyük ve kompleks web uygulamaları geliştirmek için güçlü bir platformdur. Uygulamanın yapısını yönetmek ve modüler bir şekilde geliştirmek için Area yapısı, projelerde modülerliği sağlamak ve daha iyi bir yönlendirme yönetimi elde etmek amacıyla kullanılan önemli bir özelliktir. Bu makalede, Area yapısının nasıl kullanılacağı ve Area yapısının yönlendirme ve organizasyon üzerindeki etkileri anlatılacaktır. Ayrıca verilen örnekle, Area yapısının nasıl düzenlenebileceğine dair somut bir bakış açısı sunulacaktır.

Area Yapısının Temel Özellikleri

ASP.NET Core MVC'de Area yapısı, uygulamanın farklı modüllerini (veya alanlarını) birbirinden ayırmak için kullanılır. Bu yapı, özellikle büyük projelerde çok önemli bir yer tutar çünkü her bir modül kendi içerisinde bağımsız olarak yönetilebilir. Bir Area, uygulamanın belirli bir işlevsel alanını temsil eder. Her Area, kendi Controllers, Views ve Models klasörlerine sahip olabilir.

Örnek olarak şu yapıyı ele alalım:

Area/Web/Controllers/Uyg

Area/Web/Views/Index

Area/Grafik/Controllers/Uyg

Area/Grafik/Views/Index

Bu yapıda Area, projede belirli bir modülün tüm bileşenlerini organize etmek için kullanılıyor.

1. Area/Web/Controllers/Uyg

Bu klasör, Web adlı modülün kontrolcüleri için ayrılmıştır. Bu kontrolcüler, gelen istekleri karşılamak ve uygun View'ları döndürmekle sorumludur. Her Area, kendi kontrolcüleriyle bağımsız olarak çalışır ve farklı yönlendirmelere hizmet eder.

Örneğin, UygController sınıfı şunları içerebilir:

namespace Web.Areas.Uyg.Controllers

{

    [Area("Web")]

    public class UygController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

2. Area/Web/Views/Index

Bu klasör, Uyg modülüne ait Views’ı içerir. Her bir Area, modüllerin görsel bileşenlerini barındıran kendi Views klasörüne sahiptir. Örneğin, UygController'ın Index metoduna karşılık gelen Index.cshtml dosyası burada yer alır.

@{

    ViewData["Title"] = "Uyg Modülü Ana Sayfa";

}

 

<h2>Uyg Modülü Ana Sayfa</h2>

3. Area/Grafik/Controllers/Uyg

Grafik modülü için aynı şekilde bir kontrolcü oluşturulmuş. Bu, Grafik alanında yapılacak işlemler için sorumlu olacak ve farklı yönlendirmeleri yönetecektir. 

namespace Web.Areas.Grafik.Controllers

{

    [Area("Grafik")]

    public class GrafikController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

4. Area/Grafik/Views/Index

GrafikController'ın Index metoduna karşılık gelen Index.cshtml dosyası, yine Grafik alanına özgü görsel bileşenleri içerecektir.

@{

    ViewData["Title"] = "Grafik Modülü Ana Sayfa";

}

 

<h2>Grafik Modülü Ana Sayfa</h2>

Yönlendirme ve Route Yapısı

ASP.NET Core MVC'de, Area yapıları için yönlendirme işlemleri de oldukça önemlidir. Her bir Area, kendi yönlendirme düzenini izler. Route yapılandırmasında, yönlendirme işlemleri Area parametresiyle yapılır. Örneğin, Uyg alanındaki Index metoduna yönlendirmek için şu şekilde bir rota yapılandırması yapılabilir:

app.UseEndpoints(endpoints =>

{

    endpoints.MapControllerRoute(

        name: "default",

        pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

});

Bu yapı, her Area için farklı Controller ve Action metodlarına yönlendirme yapılmasını sağlar. Eğer Uyg alanındaki Index sayfasına yönlendirmek isterseniz, şu URL'yi kullanırsınız:

/Web/Uyg/Index

Benzer şekilde, Grafik alanındaki Index metoduna yönlendirme yapılabilir:

/Grafik/Uyg/Index

Program.cs dosyasında şu ayarları yapalım.

app.UseRouting();

// Area'lar için routing ayarı
app.MapControllerRoute(
    name: "areas",
    pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"); 

Area Yapısının Avantajları

Modülerlik: Area yapısı, her modülü bağımsız bir şekilde yönetmeyi sağlar. Her alan, kendi kontrolcülerine, görünümlerine ve modellerine sahip olabilir.

Yönlendirme Kolaylığı: Uygulamanın farklı bölümleri arasında yönlendirme yapmak daha düzenli ve kolay hale gelir.

Büyük Projelerde Yönetim Kolaylığı: Özellikle büyük projelerde, farklı modüllerin birbirinden bağımsız çalışması sayesinde geliştirme süreci daha verimli hale gelir.

Sonuç

Area yapısı, Core MVC uygulamalarında modüler bir tasarım oluşturmak için güçlü bir araçtır. Özellikle büyük ve karmaşık uygulamalarda, her bir modülün kendi Controller, View ve Model bileşenlerine sahip olması, uygulamanın bakımını ve yönetimini oldukça kolaylaştırır. Bu yapıyı kullanarak, projenin her bir alanını bağımsız olarak geliştirebilir ve yönlendirme işlemlerini düzenli bir şekilde yönetebilirsiniz.

Bununla ilgili örnekler verelim.

1. Area/Yonetim/Controllers/PanelController

namespace Web.Areas.Yonetim.Controllers

{

    [Area("Yonetim")]

    public class PanelController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Yonetim alanı, admin panelini temsil eder.

2. Area/Yonetim/Views/Panel/Index.cshtml

@{

    ViewData["Title"] = "Yönetim Paneli";

}

 

<h2>Yönetim Paneli</h2>

3. Area/Blog/Controllers/BlogController

namespace Web.Areas.Blog.Controllers

{

    [Area("Blog")]

    public class BlogController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Blog alanı, blog içeriğini yönetmek için kullanılır.

4. Area/Blog/Views/Blog/Index.cshtml

@{

    ViewData["Title"] = "Blog Ana Sayfa";

}

 

<h2>Blog Ana Sayfa</h2>

5. Area/E-ticaret/Controllers/SatisController

namespace Web.Areas.Eticaret.Controllers

{

    [Area("Eticaret")]

    public class SatisController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

E-ticaret alanı, satış işlemleri ve ürün yönetimi için kullanılır.

6. Area/E-ticaret/Views/Satis/Index.cshtml

@{

    ViewData["Title"] = "E-ticaret Ana Sayfa";

}

 

<h2>E-ticaret Ana Sayfa</h2>

7. Area/Destek/Controllers/TeknikDestekController

namespace Web.Areas.Destek.Controllers

{

    [Area("Destek")]

    public class TeknikDestekController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Destek alanı, müşteri destek ve teknik yardım için kullanılır.

8. Area/Destek/Views/TeknikDestek/Index.cshtml

@{

    ViewData["Title"] = "Teknik Destek Sayfası";

}

 

<h2>Teknik Destek Sayfası</h2>

9. Area/Raporlama/Controllers/RaporController

namespace Web.Areas.Raporlama.Controllers

{

    [Area("Raporlama")]

    public class RaporController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Raporlama alanı, sistem raporlarının yönetildiği yerdir.

10. Area/Raporlama/Views/Rapor/Index.cshtml

@{

    ViewData["Title"] = "Raporlar";

}

 

<h2>Raporlar</h2>

11. Area/Kullanici/Controllers/ProfilController

namespace Web.Areas.Kullanici.Controllers

{

    [Area("Kullanici")]

    public class ProfilController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Kullanici alanı, kullanıcıların profil bilgilerini düzenleyebileceği alanı temsil eder.

12. Area/Kullanici/Views/Profil/Index.cshtml

@{

    ViewData["Title"] = "Kullanıcı Profil Sayfası";

}

 

<h2>Kullanıcı Profil Sayfası</h2>

13. Area/Yonetim/Controllers/KullaniciYonetimiController

namespace Web.Areas.Yonetim.Controllers

{

    [Area("Yonetim")]

    public class KullaniciYonetimiController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Yonetim alanı, kullanıcı yönetimi işlemlerini yöneten bir kontrolcüye sahiptir.

14. Area/Yonetim/Views/KullaniciYonetimi/Index.cshtml

@{

    ViewData["Title"] = "Kullanıcı Yönetimi";

}

 

<h2>Kullanıcı Yönetimi</h2>

15. Area/Musteri/Controllers/MusteriController

namespace Web.Areas.Musteri.Controllers

{

    [Area("Musteri")]

    public class MusteriController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Musteri alanı, müşteri hizmetleri ve taleplerini yönetir.

16. Area/Musteri/Views/Musteri/Index.cshtml

@{

    ViewData["Title"] = "Müşteri Ana Sayfa";

}

 

<h2>Müşteri Ana Sayfa</h2>

17. Area/Finance/Controllers/FaturaController

namespace Web.Areas.Finance.Controllers

{

    [Area("Finance")]

    public class FaturaController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Finance alanı, finansal işlemler ve faturaların yönetimi için kullanılır.

18. Area/Finance/Views/Fatura/Index.cshtml

@{

    ViewData["Title"] = "Fatura Yönetimi";

}

 

<h2>Fatura Yönetimi</h2>

19. Area/Satis/Controllers/ProduktController

namespace Web.Areas.Satis.Controllers

{

    [Area("Satis")]

    public class ProduktController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Satis alanı, ürün satışları ve işlemleri ile ilgilenir.

20. Area/Satis/Views/Produkt/Index.cshtml

@{

    ViewData["Title"] = "Ürünler";

}

 

<h2>Ürünler</h2>

21. Area/Ariza/Controllers/ArizaYonetimiController

namespace Web.Areas.Ariza.Controllers

{

    [Area("Ariza")]

    public class ArizaYonetimiController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Ariza alanı, sistemdeki arıza ve bakım işlemlerini yönetir.

22. Area/Ariza/Views/ArizaYonetimi/Index.cshtml

@{

    ViewData["Title"] = "Arıza Yönetimi";

}

 

<h2>Arıza Yönetimi</h2>

23. Area/Egitim/Controllers/KursController

namespace Web.Areas.Egitim.Controllers

{

    [Area("Egitim")]

    public class KursController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Egitim alanı, eğitim kurslarının yönetimi için kullanılır.

24. Area/Egitim/Views/Kurs/Index.cshtml

@{

    ViewData["Title"] = "Eğitim Kursları";

}

 

<h2>Eğitim Kursları</h2>

25. Area/Depo/Controllers/DepoController

namespace Web.Areas.Depo.Controllers

{

    [Area("Depo")]

    public class DepoController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Depo alanı, depolama ve envanter yönetimi için kullanılır.

26. Area/Depo/Views/Depo/Index.cshtml

@{

    ViewData["Title"] = "Depo Yönetimi";

}

 

<h2>Depo Yönetimi</h2>

27. Area/Yonetim/Controllers/RaporlarController

namespace Web.Areas.Yonetim.Controllers

{

    [Area("Yonetim")]

    public class RaporlarController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Yonetim alanı, yönetim raporlarının oluşturulmasını sağlar.

28. Area/Yonetim/Views/Raporlar/Index.cshtml

@{

    ViewData["Title"] = "Yönetim Raporları";

}

 

<h2>Yönetim Raporları</h2>

29. Area/Blog/Controllers/KategoriController

namespace Web.Areas.Blog.Controllers

{

    [Area("Blog")]

    public class KategoriController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Blog alanı, blog kategorileri ve içeriği ile ilgilidir.

30. Area/Blog/Views/Kategori/Index.cshtml

@{

    ViewData["Title"] = "Blog Kategorileri";

}

 

<h2>Blog Kategorileri</h2>

31. Area/Araba/Controllers/ArabaController

namespace Web.Areas.Araba.Controllers

{

    [Area("Araba")]

    public class ArabaController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Araba alanı, araç satışları ve bilgileri ile ilgilenir.

32. Area/Araba/Views/Araba/Index.cshtml

@{

    ViewData["Title"] = "Araçlar";

}

 

<h2>Araçlar</h2>

33. Area/Servis/Controllers/ServisController

namespace Web.Areas.Servis.Controllers

{

    [Area("Servis")]

    public class ServisController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Servis alanı, sistemdeki bakım ve servis talepleri ile ilgilenir.

34. Area/Servis/Views/Servis/Index.cshtml

@{

    ViewData["Title"] = "Servis Talepleri";

}

 

<h2>Servis Talepleri</h2>

35. Area/Medya/Controllers/MedyaController

namespace Web.Areas.Medya.Controllers

{

    [Area("Medya")]

    public class MedyaController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

    }

}

Medya alanı, medya içerikleri ve yüklemeleri ile ilgilidir.

36. Area/Medya/Views/Medya/Index.cshtml

@{

    ViewData["Title"] = "Medya İçerikleri";

}

 

<h2>Medya İçerikleri</h2>

Bu örnekler, ASP.NET Core MVC'de farklı işlevsel alanlarda nasıl modüler yapılar oluşturabileceğinizi gösteriyor. Her bir Area, belirli bir uygulama modülünü temsil eder ve projedeki yönetimi kolaylaştırır.


İlgili Makaleler
Web Tabanlı Uygulama Geliştirme Dersi İkinci Dönem İkinci Yazılı Çalışma Soruları
2020 TYT Matematik Ortakatlı Kuralıyla İlgili Sorunun Çözümünü c# Diliyle Web Form Sayfasında Kodlama
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama1
Web Tabanlı Uygulama Geliştirme Dersi İkinci Dönem Birinci Yazılı Çalışma Soruları
Visual Studio 2022 Programında Asp.Net Web Application Şablonu Görünmüyor Hatasını Düzeltme
Core Mvc Projesinde Tuple Nesneleri Post Etme ve Yakalama İşlemleri
Seri Port Yardımıyla Arduino Devresine Bağlanıp Ledleri Asp.Net Web Uygulamasından Yakıp Söndürme
Sitenin Alexa Dünya Sıralamasını Kodlarla Öğrenme
Personele Ait Boy ve Kilo Bilgilerine Göre İdeal Kiloyu Bulan Uygulamayı Asp.Net İle Yapınız
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama4
Bir Otobüs Firmasına Ait Bilet Satış İşlemlerini Class(Sınıf) Tanımlayarak Yapan c# Form Uygulaması
Asp.Net Uygulamasında Manual Olarak JSON Oluşturma
Asp.Net Uygulamalarında Modal PopUp Oluşturma
Web Uygulamalarında SqLite Kullanımı
Asp.Net Uygulamalarında DataList (Veri Listeleme) Kontrolü
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama2
C# Uygulamasında Miladi Takvimi Hicri Takvime, Hicri Takvimi Miladi Takvime Dönüştürme
2022 TYT Matematik Onbirinci Sorunun Çözümünü c# Diliyle Web Form Sayfasında Kodlama
RadioButton ile Cinsiyet Bilgisini Alan Asp.Net c# Uygulaması
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama3

Yorum Ekle
   
Kötü İyi