Bu proje Araba Kiralama Sistemi ile ilgili bir projedir.Proje hem Çok katmanlı, hem Kurumsal Mimariler, hem de SOLID prensiplerine dayalı bir projedir.Önümüzdeki süreçlerde de projeye eklemeler yapılarak daha güzel bir proje haline getirilecektir.Kampda verilen adımlara uygun olarak gerçeklekleştirdiğim bu projeyi yakından inceleyelim.
1.Business Katmanı- Burada işle ilgili(iş kuralları) kodlar yer alır.Bu katman Abstract ve Concrete isimli klasörlerden oluşur.Abstract içinde soyut(yani interfaceler), Concrete içinde somut(yani class'lar) nesneler yer alır.
- Sarı kutucuk - NuGet paketi --> Başkalarının yazdığı kodları(paket diyoruz) kullanıyoruz.Bu kodların ortak tutulduğu ve yönetildiği ortamın adına denir.
- Kırmızı kutucuk - Business katmanının referans aldığı katmanlar
- Yeşil kutucuk - Abstract klasörü içinde yer alan interface'ler
- Mavi kutucuk - Abstract klasörü içindeki interface'lerin implemente edildiği yer
2.DataAccess Katmanı- Veriye erişmek için gerekli kodlar yazılan bu katman Abstract(soyut) ve Concrete(somut) isimli klasörlerden oluşur.
- Kırmızı kutucuk - DataAccess katmanının referans aldığı katmanlar
- Yeşil kutucuk - Abstract klasörü içinde yer alan interface'ler
- Mavi kutucuk - Abstract klasörü içindeki interface'lerin implemente edildiği yer.Aynı zamanda burda IEntityFramework isimli klasörde biz veri tabanı nesneleriyle(kısaca tablolarla) yazdığımız kodlar arasında bağ kuruyoruz.
EntityFramework --> Veri tabanı tablolarıyla Nesne Yönelimli Programlama(OOP) arasında bir köprüdür.
- Sarı kutucuk - NuGet paketi --> Başkalarının yazdığı kodları(paket diyoruz) kullanıyoruz.Bu kodların ortak tutulduğu ve yönetildiği ortamın adına denir.
3.Entities Katmanı - Veri tabanı nesneleri için oluşturulmuş olan bu katman Abstract(soyut) ve Concrete(somut) isimli klasörlerden oluşur.
- Sarı kutucuk - NuGet paketi --> Başkalarının yazdığı kodları(paket diyoruz) kullanıyoruz.Bu kodların ortak tutulduğu ve yönetildiği ortamın adına denir.
- Mavi kutucuk - Abstract klasörü içindeki interface'lerin implemente edildiği yer
4.ConsoleUI Katmanı - Yaptığımız işlemlerin sonuçlarını göreceğimiz bir katman
- Kırmızı kutucuk - ConsoleUI katmanının referans aldığı katmanlar
- Turuncu kutucuk - Bura main kısmıdır.Yani en sonda uyguladığımız işlemlerin sonucunu buradan görüyoruz.
5.Core Katmanı - Yaptığımız işlemlerin sonuçlarını göreceğimiz bir katman
6.WebAPI Katmanı - Yaptığımız işlemlerin sonuçlarını göreceğimiz bir katman
- Bir database(veri tabanı) oluşturmak için:
CREATE DATABASE ReCapDb
- Tabloları oluşturmak için: ReCapDb --> Sağ CLick --> New Query
Create table Brands(
BrandId int Primary key,
BrandName varchar(50)
)
Create table Colors(
ColorId int Primary key,
ColorName varchar(20)
)
Create table Cars(
Id int Primary key identity,
BrandId int,
ColorId int,
ModelYear int,
DailyPrice decimal,
Descriptions varchar(200),
Foreign key(ColorId) References Colors(ColorId),
Foreign key(BrandId) References Brands(BrandId)
)
DİKKAT!!! nvarcahr yerine varchar kullanmak daha performanslı.Çünkü varchar kullanmadığımız karakter alanlarını boş bıraktığı halde, nvarchar onu boşluklarla doldurarak ekstradan bellek kaplamasına sebep oluyor
- Tabloya veri eklemek için: ReCapDb --> Sağ CLick --> New Query
Insert into Brands(BrandId,BrandName) values (1,'Audi'),(2,'BMW'),(3,'Hyundai'),(4,'Mitsubishi'),(5,'Nissan'),(6,'Mazda'),(7,'Porsche');
Insert into Colors(ColorId,ColorName) values (1,'Black'),(2,'White'),(3,'Silver'),(4,'Blue'),(5,'Red'),(6,'Brown'),(7,'Green');
Insert into Cars(BrandId,ColorId,ModelYear,DailyPrice,Description) values
(1,5,'2020',450,'AUDI Q8 - Red'),
(2,2,'2018',370,'BMW 2 Gran Coupé - White'),
(3,4,'2015',250,'HYUNDAI i10 - Blue'),
(4,7,'2016',290,'Mitsubishi Outlander - Green'),
(5,6,'2017',350,'NISSAN QASHQAI - Brown'),
(6,3,'2019',630,'MAZDA CX-5 - Silver'),
(7,1,'2021',720,'PORSCHE P911 Turbo S - Black');