ADM, mikro hizmetler gibi dağıtılmış hizmetlerin çözümü için iyi bir modeldir. Günümüzün web tabanlı iş örneklerinin çoğuna uyar.
Sipariş Etki Alanı nesnesimiz olup olmadığını düşünün. Bir OOP yaklaşımı ile Order.Purchase () Order.Cancel () vb.
Ancak, dağıtılmış bir sistemimiz varsa, sadece bir şeye sahip olan programlara sahipsek, yani bir sipariş listesine erişip her birini sırayla satın alın veya sırayla bir sipariş listesi alın ve her birini iptal edin, ardından aynı nesnede her iki Metot da duygusu. İki Alan veya Sınırlı Bağlamımız olması gerekir:
PurchaseSystemOrder.Purchase()
ve
CancelSystemOrder.Cancel();
Bu nesnelerin paylaşacağı tek şey özelliklerin veri yapısı olacaktır.
Giderek daha fazla mikro hizmet ekledikçe, düzinelerce sipariş türü elde edersiniz. Artık tüm bu sistemler tarafından işlenen aynı kavramsal düzen olmasına rağmen, bir Etki Alanı nesnesi olarak bir Sipariş hakkında konuşmak mantıklı değildir .
Sadece verileri kapsayan ve hizmetlerinizi buna göre yeniden adlandıran bir Anemik model olan Order'a sahip olmak çok daha mantıklıdır:
PurchaseService.Purchase(Order order)
Şimdi Sipariş hakkında tekrar konuşabiliriz ve şu anda konuşlandırılan diğer hizmetleri etkilemeden işlemek için düşündüğümüz yeni hizmetleri ekleyebiliriz.
Fowler ve Co, yekpare bir sistem geçmişinden geliyor, dünyalarında bir ADM yaklaşımı, bellekte somutlaştırılan tüm bu ayrı hizmetlerin ve OrderDTO'nun aktarıldığı ve mutasyona uğradığı tek bir uygulama anlamına geliyor. Bu, yöntemleri zengin bir Sipariş modeline koymaktan çok daha kötü olurdu.
Ancak dağıtılmış bir sistemde, her biri yalnızca tek bir Sipariş yöntemi gerektirir ve her birini yükleyerek, yöntemi çalıştırıp sonra atarak birçok program çalıştırır. Yalnızca tek bir Hizmet ve bir veri nesnesi akışı gerektirir.
Zengin bir modeli tam olarak doldurmak, tüm Yöntemlerin gereksinimlerini ve bağımlılıklarını sadece tek bir tane çağırmak ve daha sonra nesneyi hemen atmak için endişelenmek anlamsızdır.
Ayrıca yöntemlerden birinde yapılan bir değişiklik, mantıklarının tümü Zengin Model'e bağlı olduğu için tüm dağıtılmış bileşenlerin güncellenmesini gerektirecektir.
Kod üslerimde ihtiyaç duymadıkları şeyler için yerim yok