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