आप वेब पेज पर इन्वेंट्री स्तर प्रदर्शित करना चाह सकते हैं, या आप स्टॉक में इन्वेंट्री के संस्करण संख्या को प्रदर्शित करना चाह सकते हैं (कल्पना करें कि आपकी इन्वेंट्री किताबें, पत्रिकाएं आदि हैं)। यह जानकारी इन्वेंटरी डोमेन से आती है।
इस बिंदु पर ध्यान देने वाली मुख्य बात यह है कि आप एक दृश्य के बारे में बात कर रहे हैं, जो यह कहना है कि बासी डेटा का उपयोग करना स्वीकार्य है।
यह कहा जा रहा है, आपको समुच्चय के साथ बातचीत करने की आवश्यकता नहीं है (जो कि व्यवसाय के उल्लंघनकर्ता के परिवर्तनों को रोकने के लिए ज़िम्मेदार हैं), लेकिन कुल राज्य की हालिया प्रति के प्रतिनिधित्व के साथ।
तो मैं सामान्य रूप से क्या उम्मीद करूंगा कि उत्पाद सूची के खिलाफ एक क्वेरी रन, और इन्वेंटरी के खिलाफ एक और रन, और डीटीओ में दो की रचना करने के लिए कुछ ऐसा है जिसे आपको देखने का समर्थन करने की आवश्यकता है।
उत्पाद डोमेन और इन्वेंटरी डोमेन एग्रीगेट्स दोनों को लोड करें?
तो वह करीब है । हमें समुच्चय लोड करने की आवश्यकता नहीं है, क्योंकि हम कुछ भी बदलने नहीं जा रहे हैं। लेकिन हमें उनके राज्य की आवश्यकता है; इसलिए हम इसे लोड कर सकते हैं। उन्होंने कहा, मैं सामान्य रूप से उम्मीद करूंगा कि दोनों डोमेन विभिन्न प्रक्रियाओं में चल रहे हैं। इसलिए, हम दोनों को लोडिंग नहीं, दोनों कह रहे होंगे।
क्या आप स्टॉक में संख्या और स्टॉक में संस्करण के लिए अपने उत्पाद डोमेन इकाई पर कुछ संपत्तियाँ रखेंगे, और फिर इन्वेंटरी इकाई को अपडेट करने के लिए डोमेन इवेंट का उपयोग करेंगे?
"धाराओं को पार मत करो। यह बुरा होगा।"
डोमेन संदर्भों में जानकारी के समन्वय के लिए घटनाओं का उपयोग करना: महान विचार। उन अवधारणाओं को धक्का देना जो एक डोमेन में दूसरे में हैं: एक महान विचार के विपरीत, और अधिक को छोड़कर।
आप डोमेन को साफ रखना चाहते हैं। अनुप्रयोगों है कि परस्पर प्रभाव डोमेन के साथ, यह इतना महत्वपूर्ण नहीं है। उदाहरण के लिए, किसी दृश्य में जोड़ने के लिए कुछ उत्पाद विशिष्ट अवधारणाओं को क्वेरी करने के लिए उत्पाद एप्लिकेशन में एक सेवा को कॉल करने के लिए इन्वेंटरी एप्लिकेशन के लिए यह उचित है। या ठीक इसके विपरीत।
मुझे किसी भी कारण का पता नहीं है कि एक एकल आवेदन को एक डोमेन के लिए प्रतिबंधित किया जाना चाहिए। जब तक सच्चाई का एक ही स्रोत है, तब तक आप किसी भी तरह से लेनदेन को वितरित कर सकते हैं।
लेकिन सिर्फ यह सोचने के लिए, ऊपर के उदाहरण में हम उत्पाद सूची और उत्पाद सूची के लिए संभावित 2 DB तालिकाओं के साथ समाप्त हो जाएंगे। अब, क्या हम इनमें समान पहचानकर्ता का उपयोग करते हैं क्योंकि यह समान उत्पाद है।
यह आसान तरीका होगा। बड़े शब्दों में, आप समान पहचानकर्ता का उपयोग करते हैं क्योंकि वास्तविक विश्व इकाई एक ही है; दो अलग-अलग बंधे हुए संदर्भ मॉडल जो उस इकाई को अलग तरीके से देखते हैं, लेकिन मॉडल वास्तविक विश्व इकाई नहीं है।
जब वह काम नहीं करता है, तो अंतर को पाटने के लिए आपको कुछ क्वेरी की आवश्यकता होगी। मुझे लगता है कि इसकी सबसे आम भिन्नता यह है कि नई इकाई पुरानी इकाई की आईडी को संरक्षित करती है। आप इसे एकल बीसी के भीतर भी देखेंगे: आवेदक, अनुमोदित होने पर, ग्राहक बन जाते हैं। यह एक अलग समुच्चय है (एक ग्राहक के साथ जुड़ा राज्य आवेदक की तुलना में एक अलग आवेग के अधीन है); इसलिए यदि आपकी दृढ़ता घटना धाराओं का उपयोग कर रही है, तो नए समुच्चय के लिए स्ट्रीम को एक अलग पहचानकर्ता की आवश्यकता होगी। तो कहीं न कहीं एक अवस्था होगी जो कहती है "यह आवेदक इस ग्राहक बन गया"।
या, क्या हम डेटा के लिए 1 टेबल और 1 टेबल पंक्ति का उपयोग कर सकते हैं और बस एग्रीगेट गुणों पर संबंधित डेटा को मैप कर सकते हैं?
ओह! नहीं, ऐसा मत करो। आप ऐसा करने के लिए किसी भी व्यावसायिक कारण के बिना लेनदेन विवाद को जोड़ रहे हैं।