Skip to content

sameteeraslann/EShoppingProject

Repository files navigation

1. EShoppingProject adında Blank Solution açılır.

 Not : DDD Katmanlı mimari ile ilgili daha fazla bilgi almak için bknz https://samettteraslan.gitbook.io/ddd-katmanli-mimari/

2. EShoppingProject.Domain adında ClassLibrary(.Core) Projesi açılır.

Domain : Fonksiyonelite açısından zengin domain in kolay anlaşılabilir bir modelidir.Repositoryler ve factory ler bu katmanın birer üyeleri olarak kabul edilseler de coğu ORM araçları tarafından altyapı katmanına ait üyeler olarak kabul görmektedirler.


	2.1 Enums klasörü açılır ve bu kkasör altına Status.cs açılır.

	2.2 Entities klasörü açılır. Interface ve Concrete klasörleri altında projede ihtiyaç duyulan varlıklar yaratılır. 
	
		2.2.1 Interface klasörünün altına IBaseEntity.cs açılır.

		2.2.2 Concrete bu klasörüde projemizde ihtiyaç duyulan sınıflar oluşturulur. 
			2.2.2.1 BaseEntity.cs açılır child sınıflara kalıtım vermek amaçlı açılır ve abstract olarak işaretlenir, IBaseEntity'den implement alınır ve IBaseEntity'de yazdığımız propertyler burada gövde kazanır.


		Not: Microsoft.EntityFrameworkCore yüklenir.(5.0.2) Nuget Package Manager'den yüklenir.

		Not: Kullanıcı ile ilgili işlemlerde Microsoft.Extensions.Identity.Stores sınıfından yararlanacağım. Bu bağlamda AppUserRole ve AppUser sınıflarında Identity sınıfdan kalıtım alacaklar. Bunu için Microsoft.AspCore.Identity(5.0.2) paketini yükleyeceğiz.

			2.2.2.2 AppUser.cs açılır IdentityUser'dan kalıtım alır.
			2.2.2.3 AppRole.cs açılır. IdentityRole'den kalıtım alır.
			2.2.2.4
			2.2.2.5


	2.3 Repositories klasörü açılır. Projede temel anlamda CRUD operasyonlarını yürüteceğim methodları asenkron programing'e uygun şekilde oluşturacağım.

	Not: GenericRepository ile ilgili daha fazla bilgi için bknz https://samettteraslan.gitbook.io/desing-patterns/

		2.3.1 BaseRepo klasörü açılır.
			2.3.1.1 IBaseRepository.cs açılır burada AppUser işlemlerinde kullanıcak CRUD methodlar ve filtre işlemlerinde kullanılacak sorguların yazılır.

		2.3.2 IAppUserRepository.cs açılır. Bu sınıf IBaseRepository'den AppUser tipinde kallıtım vereceğiz.
		2.3.3
		2.3.4
		2.3.5
	
	2.4 UnitOfWork klasörü açılır.

	Not: UnitOfWork ile ilgili daha fazla bilgi için bknz https://samettteraslan.gitbook.io/desing-patterns/

		2.4.1 IUnitOfWork.cs açılır. Bu arayüzde Unit Of Work desenine dahil etmek istediğimiz Repository'leri ekliyoruz.

3. EShopping.Infrastructure adında Class Library (.Core) Projesi açılır.

Infrastructure: Teknolojiye özel kararlara odaklanılır amaçtan ziyade implementasyon kısmı ile ilgilenilir.Bu katmanda domainlerin instanceları yaratılabilir.Ancan genellikle repositoryler bu katmanda etkileşim içerisinde olurlar.

	Not: EShoppingProject.Domain katmanından referans alınması gerekiyor. 
	Not: Microsoft.EntityFrameworkCore yüklenir.(5.0.2) Nuget Package Manager'den yüklenir.
	

	3.1 Mapping klasörü açılır. Bu klasör altında Mapleme işlemleri uygulanır.
		3.1.1 Abstract klasörü açılır. Altına child map katmanında ortak olan özellikleri buraya tanımlıyoruz.
			3.1.1.1 BaseMap.cs açılır.

		3.1.2 Concrete klasörü açılır. Bu klasörde Entitylerin kendilerine özel Mapleme işlemleri yapılır.
			3.1.2.1 AppUserMap.cs BaseMap den kalıtım alır.
			3.1.2.2 AppRoleMap.cs BaseMap den kalıtım alır.
			3.1.2.3
			3.1.2.4
			3.1.2.5

	3.2 Context klasörü açılır.
		3.3.1 ApplicationDbContext.cs açılır. CodeFirst ile ayağa kaldıracağımız projenın tablolarını DbSet edeceğiz ve Mapping içerisinde yapmış olduğumuz Map'leme işlemlerini override edeceğiz.

		Not: Microsoft.AspNetCore.Identity.EntityFrameworkCore(5.0.2) Nuget Package Manager'den yüklenir.
		Not: Microsoft.EntityFrameworkCore.SqlServer(5.0.2) Nuget Package Manager'den yüklenir.
		Not: Microsoft.EntityFrameworkCore.Tools (5.0.2) Nuget Package Manager'den yüklenir.
	
	3.3 Repositories Klasörü açılır. Burada Domain kısmında oluşturduğumuz Generic Repository'lere gövde kazandıracağız.
	
		
		3.3.1 AppUserRepository açılır.
		3.3.2
		3.3.3
		3.3.4


	3.4 UnitOfWork Klasörü açılır.
		3.4.1 UnitOfWork.cs eklenir. Burada TwitterProject.Domain katmanında oluşturduğumuz UnitOfWork methodlarını gövdelendireceğiz.

4. EShopping.Application adında Class Library (.Core) Projesi açılır.

	Not: EShoppingProject.Domain,
			EShopping.Infrastructure katmanlarından referans alınır.  

	Not: Microsoft.AspNetCore.Identity (2.2.0) Nuget Package Manager'den yüklenir.

		4.1 Services klasörü açılır.
			4.1.1 Interfaces klasörü açılır
				4.1.1.1 IAppUserServices.cs açılır.
				4.1.1.2
				4.1.1.3
				4.1.1.4

			4.1.2 Concrete klasörü açılır.
				4.1.2.1 AppUserServices.cs açılır.
				4.1.2.2
				4.1.2.3
				4.1.2.4
		
		4.2 Model klasörü açılır. Burada projede ihtiyaçlarımıza yönelik DTO ve VM ile ilgili işlemleri yapıyoruz.

			DTO ve VM ile ilgili daha fazla bilgi almak isterseniz bknz https://samettteraslan.gitbook.io/object-operations/

			4.2.1 DTOs klasörü açılır.
				4.2.1.1 EditProfileDTO açılır.
				4.2.1.2 LoginDTO açılır.
				4.2.1.3 ProfileDTO açılır
				4.2.1.4 RegisterDTO açılır.

			4.2.2 VMs klasörü açılır.
				4.2.2.1
				4.2.2.2
				4.2.2.3
				4.2.2.4

		4.3 Mapper klasörü açılır. Burada AutoMapper yapacağımız Map leri Create edeceğiz.
			Not: AutoMapper ile ilgili bilgi almak isterseniz bknz. https://samettteraslan.gitbook.io/object-operations/

			Not: AutoMapper (10.1.1) Nuget Package Manager'den yüklenir.
			Not: AutoMapper.Extensions.Microsoft.DependendencyInjection(8.1.0) Nuget Package Manager'den yüklenir.

			4.3.1 Mapper klasörü açılır.
				4.3.1.1 Mapping.cs açılır. Burada conscructor method içerisinde Mapping işlemlerimizi yapacağız.


		4.4 IoC klasörü açılır. Ben burada AUTOFAC Container kullanacağım. Genel olarak Containerler'ı kullanma amacımız bağımlılıkları tersine çevirmeyi temiz ediyor. Bu yöntem new yapmanın sıkı sıkıya bağlılığını ortadan kaldırır.

				------------------------BURAYA GİTBOOK LİNK EKLE------------

			Not: Autofac(6.1.0) Nuget Package Manager'den yüklenir.
				4.4.1	AutoFacContainer.cs açılır.

		4.5 Extensions klasörü açılır.
			4.5.1 ClaimsPrincipalExtensions.cs açılır. Kullanıcıdan alınan bilgilerin belirli şartlara uyması sağlanır.
	
		4.6 Validations klasörü açılır. Burada Validate(ModelState) işlemleri uygulanır.
			
			Not: FluentValidation.AspNetCore(9.5.1) Nuget Package Manager'den yüklenir.

			4.6.1 LoginValidation

	5.EShopping.Presentation (ASP.NET Core Web Application) açılır.




	
	


	



	ImageResizer 4 2 8
	ImageResizer.Plugins.DiskCache 428




	uı katmanı 


	Microsoft.EntityFrameworkCore 502
	Microsoft.EntityFrameworkCore.Design 502
	Microsoft.EntityFrameworkCore.SqlServer 502

	Autofac.Extensions.DependencyInjection 710

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published