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ış 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)
Eric Evans. Etki Alanı Dili
https://domainlanguage.com/Martin Fowler. Domain-Driven Tasarımı
https://martinfowler.com/tags/domain%20driven%20design.htmlZaman: Bogard. Etki alanınızı güçlendirme: bir ana bilgi
https://lostechies.com/jimmybogard/2010/02/04/strengthening-your-domain-a-primer/
DDD kitapları
Eric Evans. Domain-Driven Tasarım: Yazılımın Merkezinde Karmaşıklığın Mücadelesi
https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/Eric Evans. Domain-Driven Tasarım Başvurusu: Tanımlar ve Desen Özetleri
https://www.amazon.com/Domain-Driven-Design-Reference-Definitions-2014-09-22/dp/B01N8YB4ZO/Vaughn Vernon. Domain-Driven Tasarımı Uygulama
https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577/Vaughn Vernon. Domain-Driven TasarımAslı
https://www.amazon.com/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420/Artık Nil almaz. Domain-Driven Tasarım ve Desenlerini Uygulama
https://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202/Şimdi de la Torre. .NET ile N Katmanlı Domain-Oriented Mimarisi Kılavuzu
https://www.amazon.com/N-Layered-Domain-Oriented-Architecture-Guide-NET/dp/8493903612/Abel Avram ve Floyd Deniz Kuvvetleri. Domain-Driven Tasarım
https://www.amazon.com/Domain-Driven-Design-Quickly-Abel-Avram/dp/1411609255/Scott Oft, Tune - Patterns, Principles, and Practices of Domain-Driven Design
https://www.wiley.com/Patterns%2C+Principles%2C+and+Practices+of+Domain+Driven+Design-p-9781118714706
DDD eğitimi
- Julie Lerman ve Steve Smith. Domain-Driven Tasarım Temelleri
https://bit.ly/PS-DDD