Bu proje, basit bir blog uygulamasını tasarlamak ve geliştirmek için yapılandırılmıştır. Markdown formatında yazılmış blog gönderilerini yönetmek için bir API sunmaktadır.
Aşağıdaki adımları izleyerek projeyi yerel geliştirme ortamınıza kurabilirsiniz.
- .NET Core SDK
- Bir veritabanı (örneğin, SQL Server)
-
Projeyi bilgisayarınıza kopyalayın:
git clone https://github.com/atakan-acar/Blog.git
Bu proje, Domain-Driven Design (DDD) prensiplerini temel alarak tasarlanmıştır. DDD, karmaşık yazılım projelerini anlamak, tasarlamak ve uygulamak için bir yaklaşımdır. Bu yaklaşım, iş mantığını daha iyi yansıtan, sürdürülebilir ve genişletilebilir kod tabanları oluşturmayı amaçlar.
Projemizde DDD yaklaşımını temsil eden bazı anahtar kavramlar:
- Entity: Veritabanı nesnelerini temsil eden sınıflardır. Örneğin,
BlogPost
sınıfı bir entitydir. - Value Object: Kimliği olmayan ve sadece değerleri temsil eden nesnelerdir. Örneğin,
Title
veContent
gibi alanlar bir value object olabilir. - Aggregate: İlişkili entity ve value object'lerin bir araya getirildiği kök nesnedir. Bu proje içinde
BlogPost
aggregate'ini görüyoruz. - Repository: Veritabanı işlemlerini soyutlama katmanıdır. Veritabanı erişimini saklar ve iş mantığının veritabanı işlemlerinden bağımsız olmasını sağlar.
Proje yapısında, domain modelleri, servisler ve repository arayüzü ile uygulaması olmak üzere DDD yaklaşımına uygun katmanlar yer alır. Veritabanı işlemleri ve iş mantığı ayrı tutularak, kodun daha modüler ve anlaşılır olması hedeflenir.
DDD prensiplerine uygun olarak, iş mantığını ve domain yapılarını temsil eden sınıflar ayrı katmanlarda yer alır. Domain nesneleri ve servisleri, API ve veritabanı işlemlerinden bağımsızdır ve böylece uygulama daha sürdürülebilir hale gelir.
Eğer Domain-Driven Design hakkında daha fazla bilgi edinmek isterseniz, Eric Evans'ın "Domain-Driven Design: Tackling Complexity in the Heart of Software" kitabını inceleyebilirsiniz. Bu kitap, DDD prensiplerini derinlemesine anlatmaktadır.