एडीएम वितरित सेवाओं के समाधान के लिए एक अच्छा पैटर्न है। यह आज के कई वेब आधारित व्यावसायिक मामलों में फिट बैठता है।
विचार करें कि क्या हमारे पास ऑर्डर डोमेन ऑब्जेक्ट है। OOP दृष्टिकोण के साथ हम Order.Purchase () Order.Cancel () आदि जोड़ेंगे। यह एक डेस्कटॉप ऐप में अच्छा काम करेगा, जहाँ हम मेमोरी में ऑर्डर रखते हैं और एक ही उदाहरण के लिए कई काम करते हैं।
लेकिन अगर हमारे पास एक वितरित प्रणाली है, ऐसे कार्यक्रमों के साथ जो सिर्फ एक चीज के लिए हैं, यानी ऑर्डर की सूची तक पहुंचें और प्रत्येक को बदले में खरीद लें, या ऑर्डर की एक सूची प्राप्त करें और प्रत्येक को बदले में रद्द कर दें तो दोनों तरीकों को एक ही वस्तु पर रखने से कोई फायदा नहीं होता है। समझ। हमारे पास दो डोमेन या बाउंडेड कॉन्टेक्ट्स होंगे:
PurchaseSystemOrder.Purchase()
तथा
CancelSystemOrder.Cancel();
इन वस्तुओं को साझा करने वाली एकमात्र चीज़ गुणों की डेटा संरचना होगी।
जैसा कि आप अधिक से अधिक माइक्रोसर्विसेज जोड़ते हैं, आप दर्जनों प्रकार के ऑर्डर के साथ समाप्त होते हैं। यह अब के बारे में बात करने के लिए समझ में आता है एक , एक डोमेन वस्तु के रूप में आदेश भी इसकी एक ही वैचारिक क्रम है जो इन सभी प्रणालियों प्रोसेस कर रहे हैं, हालांकि।
यह एक एनीमिक मॉडल, ऑर्डर करने के लिए कहीं अधिक समझ में आता है, जो सिर्फ डेटा को एनकैप्सुलेट करता है और तदनुसार आपकी सेवाओं का नाम बदल देता है:
PurchaseService.Purchase(Order order)
अब हम फिर से ऑर्डर के बारे में बात कर सकते हैं और हम वर्तमान में तैनात अन्य सेवाओं को प्रभावित किए बिना, जो भी नई प्रक्रिया शुरू करने के लिए सोचते हैं उसे जोड़ सकते हैं।
फाउलर और सह एक मोनोलिथ सिस्टम पृष्ठभूमि से आते हैं, उनकी दुनिया में एक एडीएम दृष्टिकोण का अर्थ होगा इन सभी अलग-अलग सेवाओं के साथ एक एकल ऐप, जो कि मेमोरी में तुरंत चालू हो जाता है और ऑर्डरड्टो चारों ओर पारित हो जाता है और उत्परिवर्तित होता है। यह समृद्ध ऑर्डर मॉडल पर विधियों को डालने से कहीं अधिक खराब होगा।
लेकिन एक वितरित प्रणाली में, कई कार्यक्रम हैं, प्रत्येक को केवल एक ही ऑर्डर विधि की आवश्यकता होती है और इसे कई आदेशों पर चलाता है, प्रत्येक को लोड करता है, विधि को चलाता है और फिर इसे छोड़ देता है। इसके लिए केवल एकल सेवा और डेटा ऑब्जेक्ट्स की एक स्ट्रीम की आवश्यकता होती है।
एक समृद्ध मॉडल को पूरी तरह से आबाद करना, सभी तरीकों की आवश्यकताओं और निर्भरता के बारे में चिंता करना, केवल एक को कॉल करना और फिर लगभग तुरंत वस्तु को त्यागना व्यर्थ है।
इसके अलावा तरीकों में से किसी एक में बदलाव से सभी वितरित घटकों को अपडेट करने की आवश्यकता होगी क्योंकि वे सभी अपने तर्क के लिए रिच मॉडल पर निर्भर करते हैं।
मेरे पास सामान के लिए मेरे कोड बेस (एस) में कोई जगह नहीं है जिसकी उन्हें आवश्यकता नहीं है