-
Notifications
You must be signed in to change notification settings - Fork 0
sameteeraslann/SocialMediaProject
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
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 0
No packages published