Bir Mikro Hizmetteki İş Karmaşıklığını DDD ve CQRS Desenleriyle Giderme

Her mikro hizmet için bir etki alanı modeli veya iş etki alanının anlaşılmasını yansıtan Sınırlayıcı Bağlam tasarlar.

Bu bölüm, karmaşık alt sistemleri veya sürekli değişen iş kurallarına sahip etki alanı uzmanlarının bilgisinden türetilen mikro hizmetleri ele a çözmeniz gerekirken uygulayan daha gelişmiş mikro hizmetlere odaklanır. Bu bölümde kullanılan mimari desenleri, Şekil 7-1'de gösterildiği gibi etki alanı odaklı tasarım (DDD) ve Komut ve Sorgu Sorumluluklarının Ayrılığı (CQRS) yaklaşımlarını temel almaktadır.

Dış ve iç mimari desenlerini karşılaştıran diyagram.

Dış mimari arasındaki fark: mikro hizmet desenleri, API ağ geçitleri, güçlü iletişimler, pub/sub vb. ve iç mimari: veri odaklı/CRUD, DDD desenleri, bağımlılık ekleme, birden çok kitaplık vb.

Şekil 7-1. Her mikro hizmet için dış mikro hizmet mimarisiyle iç mimari desenleri karşılaştırması

Ancak, ASP.NET Core Web API hizmetini uygulama veya Swashbuckle veya NSwag ile Swagger meta verilerini açığa çıkarma gibi veri odaklı mikro hizmetlere yönelik tekniklerin çoğu, DDD desenleri ile dahili olarak uygulanan daha gelişmiş mikro hizmetler için de geçerlidir. Bu bölüm önceki bölümlerin bir uzantısıdır çünkü daha önce açıklanan uygulamaların çoğu burada veya herhangi bir mikro hizmet için de geçerlidir.

Bu bölüm ilk olarak eShopOnContainers başvuru uygulamasında kullanılan basitleştirilmiş CQRS desenlerinin ayrıntılarını sağlar. Daha sonra, uygulamalarınız için yeniden kullana yaygın desenleri bulmanızı sağlayan DDD tekniklerinin bir genel bakışını elde etmek üzere.

DDD, öğrenme için zengin bir kaynak kümesine sahip olan büyük bir konudur. Eric Evans'ın Domain-Driven Design (Etki Alanı Odaklı Tasarım) gibi kitaplarla ve ayrıca 1.000.000.000 abd'den (18.00.000.000 ABD)'ye kadar olan diğer birçok DDD/CQRS uzmanından edinebilirsiniz. Ancak DDD tekniklerini somut iş etki alanınız uzmanlarıyla yapılan konuşmalardan, beyaz tahtadan ve etki alanı modelleme oturumlarından nasıl uygulayacaklarını öğrenmeye çalışmanız gerekir.

Ek kaynaklar

DDD (Etki Alanı Odaklı Tasarım)
DDD kitapları
DDD eğitimi