@ReCapProject projem benim gelişimimle beraber gelişmekte olan güzel bir proje. 👍 Bu projede katmanlı mimari yapısını kullanmaya çalıştım ve projeyi oluştururken SOLID prensiplerine uygun kodlar yazmaya çalıştım ve çalışmaya devam edeceğim. Bu projede "CODE RAFACTORİNG (Kodları iyileştirme) " yaparak ilerleme sağlayacağım. 💥
🟣 Projeye Core katmanı eklendi.
🟣 DTOs klasörü eklendi.
🟣 Code refactoring yaparak IEntitiyRepository,IEntity classları Core katmanına yerleştirildi.
🟣 IEntityRepositoryBase class'ı oluşturuldu.
🟣 Car,Color ve Brand nesnelerinin Crud operasyonları eklendi.program.cs 'de test edildi.
🟤 Projeye Result yaoıları eklendi.
🟤 Magic strings yapısı kullanıldı.
🟤 Business classında code refactoring yapıldı. Abstract ve Concrete sınıflarındaki class'lar generic yapısıyla değiştirildi.
🔵 Projeye WebAPI katmanı eklendi.Bu katmanda Business katmanındaki tüm servislerin API karşılğı yazılıp postman test aracında test edildi.
⚪ Projeye Autofac desteği eklendi.
⚪FluentValidation desteği eklendi.
⚪Aop desteği eklendi(ValidationAspect).
🟣 Cache, Transaction ve Performance aspectlerini eklendi
🟣JWT entegrasyonu yapıldı
🟣CarImages (Araba Resimleri) tablosu oluşturuldu.
🟣Api üzerinden arabaya resim ekleyecek sistem yazıldı.
Bu katmanda iş kodlarımı yazdım.
-
Abstract:open_file_folder: :(İlgili soyut Sınıflarımı içerir.)
- ICarService.cs
- 🟣IColorService.cs
- 🟣IBrandService.cs
-
Concrete:open_file_folder: : (Somut sınıflarımı içerir.)
- CarManager.cs
- 🟣ColorManager.cs
- 🟣BrandManager.cs
-
🟤 Constants 📂(sabitlerimizi içeren klasör
+ Messages.cs 🟤 👉magic string ifadelerimizi içeren classtır. Yani projede kullandığımız sabit mesajları içerir. -
⚪ DependencyResolvers📂 Autofac desteği sağladık.IOC yapısını burda sağlamış olduk.
-
⚪ ValidationRules 📂
Var olan varlığı iş kurallarına dahil etmek için yapısal olarak uygun olup olmadığını kontrol yapımız burda mevcuttur.
Evrensel kodlarımızı kullandığımız katmanımızdır.
Core katmanı diğer katmanları referans almaz.
-
- EntityFramework 📂
- EfEntityRepository.cs 👉 Burda kodları evrensel hale getirip farklı sistemler'e implemente etmemi sağlar.
- IEntityRepository 👉 Data Access katmanındaki bu class'ı evrensel olabilmesi için Core katmanına taşıdım.
- EntityFramework 📂
-
Entities 📂
+ IDto.cs
+ IEntity.cs 👉 Entites katmanından buraya taşıdım. -
🟤Utilities 📂 Restful(JSON) sürecinin gereksinimlerini içerir. Yani Request(istek) ve Response(yanıt) sürecini yönetebilmek için ortam hazırlar.
-
🟤 Results 📂
- 🟤Abstract
- IDataResult.cs 👉 bu interface message ,success yanında data da içermesini istenen işlemlerde kullanılır.
- IResult.cs 👉 void tipinde olan veriler için success ve message bilgilerini içerir
- 🟤Abstract
-
🟤Concrete :poin_right:Result türleri için işlemin başarılı ve başarısız olma durumuna göre geçerli classları içeirir.
- DataResult.cs
- ErrorDataResult.cs
- SuccessDataResult.cs
- Result.cs
- SuccessResult.cs
- ErrorResult.cs
-
-
⚪ Aspects 📂 AOP yapısı kullanıldı.
-
⚪ CrossCuttingConcerns 📂
Validation yapısını ValidationTool altında genelleştirdim.
Veriye ulaşmak için yazdığım katman kısacası SQL kodlarımın mevcut olduğu katman
-
Abstract:open_file_folder: :(İlgili soyut Sınıflarımı içerir.)
- ICarDal.cs
- IBrandDal.cs
- IColorDal.cs
- IEntityRepository.cs ❌ 👉 Bu class'ım bu klasördeki var olan diğer class'larımın kullanacağı Generic yapısını oluşturur.
-
Concrete 📂 : (Somut sınıflarımı içerir.)
- EntityFrameWork:open_file_folder: :point_right: Bu klasör çalışmak istediğim veri tabanına bağlantı kurduğum ve istediğim verileri çekmemi sağlayan yapıları içeren bir klasördür. yani veri tabanı ile kendi class'larımı ilişkilendiğim classtır.
- EfCarDal.cs
- EfBrandDal.cs
- EfColorDal.cs
- ReCapDatabeseContext.cs 👉 Bu class'ım veri tabanına bağlanmamı sağlayan kodları içerir ve bu klasördeki diğer class'larımın veri tabanına erişimin sağlar.
-
InMemoryDal 👉 bu klasör veri tabanı kullanmadan bellekte olan verileri kullandığım klasördür.
- InMemoryCarDal.cs
Bu katman yardımcı katmanımdır.
-
Abstract 📂 :(İlgili soyut Sınıflarımı içerir.
- IEntity.cs ❌
-
Concrete:open_file_folder: : (Somut sınıflarımı içerir.) 👉 Bu klasör ise nesnelerimi ve nesnelere ait özelliklerimin tutulduğu klasördür.
+ Car.cs + Brand.cs + Color.cs
-
DTOs 🟣📂 (Veri tabanını ilişkisel tablolarını içerir. Join işlemleri burda yapılır.)
+ 🟣 CarDetailDto.cs
CarId | BrandId | ColorId | ModelYear | DailyPrice | Description |
---|---|---|---|---|---|
1 | 1 | 2 | 2012 | 100 | ManuelBenzin |
2 | 1 | 3 | 2015 | 150 | Otomotik Dizel |
3 | 2 | 1 | 2017 | 200 | Otomotik Hybrid |
4 | 3 | 3 | 2014 | 125 | Manuel Dizel |
NULL | NULL | NULL | NULL | NULL | NULL |
BranId | BrandName |
---|---|
1 | Tesla |
2 | BMw |
3 | Renault |
NULL | NULL |
ColorId | ColorName |
---|---|
1 | Beyaz |
2 | Siyah |
3 | Mavi |
4 | Gri |
5 | |
NULL | NULL |