Skip to content

Bu projede Domain-Driven-Design / DDD katmanlı mimari ile alt yapı hazırlandı. Asynchronous Programming, Unit Of Work, Generic Repository gibi teknolojiler kullanıldı.

Notifications You must be signed in to change notification settings

sameteeraslann/SocialMediaProject

Repository files navigation

1- TwitterProject adında BlankSolution açılır

2- TwitterProject.Domain adında Class Library(.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.

		2.1.1 Bu klasör altına Status.cs açılır.
	 
	2.2 Entities klasrü açılır. 
		2.2.1 Interface klasörü açılır ve bu klasör altına IBaseEntity.cs interface'si açılır.

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

            2.2.2.2 AppRole.cs açılır.

            Not: Kullanıcı ile ilgili işlemlerde Asp .Net Core Identity 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.Extensions.Identity.Store paketini yükleyeceğiz.

            2.2.2.3 AppUser.cs açılır.
			2.2.2.4 Follow.cs açılır.
			2.2.2.5 Mention.cs açılır.
			2.2.2.6 Like.cs açılır.
			2.2.2.7 Share.cs açılır.
			2.2.2.8 Tweet.cs açılır.

	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.
		2.3.1 BaseRepo klsörü açılır içine IRepository interfaces eklenir.
		Not: Microsoft.EntityFremeworkCore(5.0.2) Nuget Package Manager'den yüklenir.
		Not: GenericRepository Pattern, DIP kullanacağımız için her Concrete sınıf için Repository açacağız.
		2.3.2 EntityTypeRepo klasörü açılır.
			2.3.2.1 IAppUserRepository açılır.
			2.3.2.2 IFollowRepository açılır.
			2.3.2.3 ILikeRepository açılır.
			2.3.2.4 IMentionRepository açılır.
			2.3.2.5 IShareRepository açılır.
			2.3.2.6 ITweetRepository açılır.

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


3-TwitterProject.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: Microsoft.EntityFremeworkCore(5.0.2) Nuget Package Manager'den yüklenir.
	Not: Referanslara TwitterProject.Domain katmanı eklenir.

	3.2 Mapping Klasörü Açılır.

		3.2.1 Abstract klasörü eklenir.
			3.1.1.1 BaseMap.cs eklenir ve abstract olarak işaretlenir.

		3.2.2 Concrete klasörü eklenir.
			3.2.2.1 AppRoleMap.cs açılır.
			3.2.2.2 AppUserMap.cs açılır.
			3.2.2.3 FollowMap.cs açılır.
			3.2.2.4 LikeMap.cs açılır.
			3.2.2.5 MentionMap.cs açılır.
			3.2.2.6 ShareMap.cs açılır.
			3.2.2.7 TweetMap.cs açılır.
	
	3.3 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.EntityFrameWork.Core (5.0.2) Nuget Package Manager'den yüklenir.


	3.4 Repositories Klaösür açılır. Burada Domain kısmında oluşturduğumuz Generic Repository'lere gövde kazandıracağız.
		Not: GenericRepository ile ilgili daha fazla bilgi için bknz https://samettteraslan.gitbook.io/desing-patterns/

		3.4.1 AppUserRepository açıldı.
		3.4.2 FollowRepository açıldı.
		3.4.3 LikeRepository açıldı.
		3.4.4 MentionRepository açıldı.
		3.4.5 ShareRepository açıldı.
		3.4.6 TweetRepository açıldı.

	3.5 UnitOfWork Klasörü açılır.
		3.5.1 UnitOfWork.cs eklenir. Burada TwitterProject.Domain katmanında oluşturduğumuz UnitOfWork methodlarını gövdelendireceğiz.
		Not: UnitOfWork ile ilgili daha fazla bilgi için bknz https://samettteraslan.gitbook.io/desing-patterns/


4-TwitterProject.Application Katmanı açılır.
		NOT: Microsoft.AspNet.Core.Http.Features (5.0.2) Nuget Package Manager'den yüklenir.

	4.1 Models klasörü eklenir.
		4.1.2 DTOs klasörü eklenir.
			4.1.2.1 AddMentionDTO açıldı.
			4.1.2.2 AddTweetDTO açıldı.
			4.1.2.3 EditProfileDTO açıldı.
			4.1.2.4 FollowDTO açıldı.
			4.1.2.5 LikeDTO açıldı.
			4.1.2.6 LoginDTO açıldı.
			4.1.2.7 ProfileSummaryDTO açıldı.
			4.1.2.8 RegisterDTO açıldı.

	4.2 AutoMapper yapmak için Mapper klasörü açılır ve altına Mapping.cs adında sınıf eklendir.

		NOT: AutoMapper Nuget Package Manager'den yüklenir.
		NOT: AutoMapper Microsoft.DependencyInjection 8.1.1 Nuget Package Manager'den yüklenir.

		NOT: AUTOMAPPER için daha fazla bilgi için https://samettteraslan.gitbook.io/object-operations/
				

	4.3 Services klasörü açılır.

	NOT: Microsoft.AspNet.Core.Identity (2.2.0) Nuget Package Manager'den yüklenir.

		4.3.1 Interfaces klasörü açılır.
			4.3.1.1 IAppUserService açılır.
			4.3.1.2 IFollowService açılır.
			4.3.1.3 ILikeService açılır.
			4.3.1.4 IMentionService açılır.
			4.3.1.5 ITweetService açılır.
			
		4.3.2 Concrete klaösür açılır.
			4.3.2.1 AppUserService açılır.
			4.3.2.2 FollowService açılır.
			4.3.2.3 LikeService açılır.
			4.3.2.4 MentionService açılır.
			4.3.2.5 TweetService açılır.

	4.4 IoC klaösürü açılır ve altına DepencyInjection.cs eklenir.




	FluentValidation yüklenir.
		


		



About

Bu projede Domain-Driven-Design / DDD katmanlı mimari ile alt yapı hazırlandı. Asynchronous Programming, Unit Of Work, Generic Repository gibi teknolojiler kullanıldı.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published