Bir Mikro Hizmetteki İş Karmaşıklığını DDD ve CQRS Desenleriyle Giderme
İpucu
Bu içerik, .NET Docs'ta veya çevrimdışı olarak okunabilen ücretsiz indirilebilir bir PDF olarak sağlanan Kapsayıcılı .NET Uygulamaları için .NET Mikro Hizmetler Mimarisi e-Kitabı'ndan bir alıntıdır.
Her mikro hizmet veya Sınırlanmış Bağlam için iş etki alanının anlaşılmasını yansıtan bir etki alanı modeli tasarlar.
Bu bölümde, karmaşık alt sistemleri veya sürekli değişen iş kurallarıyla etki alanı uzmanlarının bilgisinden türetilen mikro hizmetleri ele almanız gerektiğinde uygulayabileceğiniz daha gelişmiş mikro hizmetlere odaklanılır. Bu bölümde kullanılan mimari desenleri, Şekil 7-1'de gösterildiği gibi etki alanı temelli tasarım (DDD) ve Komut ve Sorgu Sorumluluğu Ayrım (CQRS) yaklaşımlarını temel alır.
Dış mimari arasındaki fark: mikro hizmet desenleri, API ağ geçitleri, dayanıklı iletişimler, pub/sub vb. ve iç mimari: veri temelli/CRUD, DDD desenleri, bağımlılık ekleme, birden çok kitaplık vb.
Şekil 7-1. Her mikro hizmet için dış mikro hizmet mimarisi ile iç mimari desenleri karşılaştırması
Bununla birlikte, ASP.NET Core Web API hizmeti uygulama veya Swashbuckle veya NSwag ile Swagger meta verilerini kullanıma sunma gibi veri temelli mikro hizmetlere yönelik tekniklerin çoğu, DDD desenleriyle dahili olarak uygulanan daha gelişmiş mikro hizmetler için de geçerlidir. Daha önce açıklanan uygulamaların çoğu burada veya herhangi bir mikro hizmet türü için de geçerli olduğundan, bu bölüm önceki bölümlerin bir uzantısıdır.
Bu bölümde öncelikle eShopOnContainers başvuru uygulamasında kullanılan basitleştirilmiş CQRS desenleriyle ilgili ayrıntılar sağlanır. Daha sonra, uygulamalarınızda yeniden kullanabileceğiniz yaygın desenleri bulmanıza olanak tanıyan DDD tekniklerine genel bir bakış elde edersiniz.
DDD, öğrenme için zengin kaynaklara sahip büyük bir konudur. Eric Evans'ın Domain-Driven Design ve Vaughn Vernon, Jimmy Nilsson, Greg Young, Udi Dahan, Jimmy Bogard ve diğer birçok DDD/CQRS uzmanının ek malzemeleri gibi kitaplarla başlayabilirsiniz. Ancak en önemlisi, somut iş alanınızdaki uzmanlarla konuşmalar, beyaz tahta oluşturma ve etki alanı modelleme oturumlarından DDD tekniklerinin nasıl uygulanacağını öğrenmek için denemeniz 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.htmlJimmy Bogard. Etki alanınızı güçlendirme: astar
https://lostechies.com/jimmybogard/2010/02/04/strengthening-your-domain-a-primer/
DDD kitapları
Eric Evans. Domain-Driven Tasarımı: Yazılımın Kalbinde Karmaşıklığı Azaltma
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ımı Damıtılmış
https://www.amazon.com/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420/Jimmy Nilsson. Domain-Driven Tasarımını ve Desenlerini Uygulama
https://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202/Cesar 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 Marinescu. Hızlı Domain-Driven Tasarımı
https://www.amazon.com/Domain-Driven-Design-Quickly-Abel-Avram/dp/1411609255/Scott Millett, Nick Tune - Domain-Driven Tasarımının Desenleri, İlkeleri ve Uygulamaları
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