मेरे पास दो कुल जड़ों और एक नियमित इकाई का एक सरल परीक्षा डोमेन है। Tenant
, UserGroup
और User
जहां इस विशेष नमूने में Tenant
और User
दो AggregateRoots के लिए बनाते हैं।डोमेन इवेंट हैंडलर कब खेलते हैं?
जब यूआई/सेवा परत से कमांड प्राप्त होता है तो यह कमांड हैंडलर तक पहुंचता है जो केवल डोमेन लिखता है।
आप कह सकते हैं कि User
एक AggregateRoot बिल्कुल लेकिन जब से यह दूसरों के द्वारा संदर्भित किया जाएगा होना चाहिए नहीं है, यह एक नियमित रूप से इकाई नहीं हो सकता। (हाँ?)
इन दो समग्र रूट्स को संवाद करने की आवश्यकता है। User
को UserGroup
से संबंधित के बिना बनाया नहीं जा सकता है, जो Tenant
के बाध्य संदर्भ में एक इकाई है। संभवतः, हम बना सकते हैं, क्योंकि यह एक साधारण बाधा है, निर्माता के माध्यम से एक उपयोगकर्ता। User.Create(TenantId, UserGroupId)
यह DomainEvent
उत्पन्न करता है दिनांक, समेकितवर्सन और समेकित आईडी (उपयोगकर्ता का)। अब हम धुंधले हिस्सों में आते हैं।
इस घटना को स्टोर में खोलना खोलें, यह घटना बस (स्मृति, जो कुछ भी) पर प्रसारित की जाती है। यह वह बिंदु है जहां कमांड हैंडलर के समान डोमेन के ईवेंट हैंडलर, UserId
जोड़ने के लिए उपयोगकर्ता को बनाए गए और Tenant
के UserGroup
को सूचित/कुशलतापूर्वक उपयोग करते हैं?
क्या यह पूरी तरह से गलत दिशा में जाने के बारे में मेरे विचार हैं?
आप अपने मॉडल पर पुनर्विचार करके अपनी समस्या को सरल बनाने में सक्षम हो सकते हैं। जब आप क्रॉस बाध्य संदर्भ संचार की आवश्यकता होती है, या जब आप डोमेन पत्राचार के समर्थन में ईमेल पत्राचार जैसे व्यवसाय तर्क का समर्थन करना चाहते हैं, तो डोमेन ईवेंट उपयोगी होते हैं। क्या आपके मॉडल को कई बाध्य संदर्भों की आवश्यकता है? क्या आप सेवा परत में सभी आवश्यक संचालन कर सकते हैं, जैसे उपयोगकर्ता सेवा? – eulerfx
किसी को हमेशा यह जांचना चाहिए कि क्या आप समस्या के आसपास मॉडल नहीं कर सकते हैं। इस मामले में हालांकि यह एक समेकित उदाहरण है जिसका अर्थ यह है कि अलग-अलग बाध्य एआर के बीच संचार कैसे होता है, इस पर जवाब प्राप्त करने के लिए। – Jaapjan
"उपयोगकर्ता समूह में भविष्य के व्यवहार के लिए UserId की आवश्यकता है?" पूछने के लिए एक बहुत ही महत्वपूर्ण सवाल है (अन्यथा आप समेकन के बीच संवाद क्यों करेंगे)।अपने डोमेन का किरायेदार हिस्सा बनाना प्रतीत होता है ... अजीब अगर आपका डोमेन बहु किरायेदारी के बारे में नहीं है (बहु किरायेदारी के साथ भ्रमित नहीं होना चाहिए)। यदि वे एक ही बीसी में हैं तो कुछ टीडीए के साथ मिलकर सहयोग करने के लिए अपने डोमेन ऑब्जेक्ट्स का उपयोग करें। –