2012-04-26 14 views
5

मैं ऐसे एप्लिकेशन पर काम कर रहा हूं जहां उपयोगकर्ता एक दूसरे के साथ ट्विटर पर एक-दूसरे का अनुसरण कर सकते हैं।डीडीडी: कनेक्शन ऑब्जेक्ट्स एंटीटी ऑब्जेक्ट या वैल्यू ऑब्जेक्ट हैं?

डीडीडी पर पढ़ने के बाद, मैं समझता हूं कि मेरे उपयोगकर्ता इकाई वस्तुएं हैं - मैं उन्हें उनके अद्वितीय आईडी का उपयोग करके संदर्भित करता हूं।

जब कोई उपयोगकर्ता दूसरे का अनुसरण करता है (यानी एक कनेक्शन बनाता है), रिश्ते कई से अधिक तालिका में संग्रहीत होता है। इसके क्षेत्रों में FollowerID, TargetID, और Status शामिल हैं। प्रत्येक अनुयायी/लक्ष्य संयोजन (एक सक्रिय, अन्य निष्क्रिय) के लिए केवल दो रिकॉर्ड हो सकते हैं, इसलिए मैं सुरक्षित रूप से उनके गुणों के आधार पर वस्तुओं की पहचान कर सकता हूं।

तो, मुझे लगता है कि मेरे कनेक्शन ऑब्जेक्ट्स ऑब्जेक्ट ऑब्जेक्ट्स हैं, एंटीटी ऑब्जेक्ट्स नहीं, लेकिन मुझे यकीन नहीं है। क्या आप इस फैसले से मेरी मदद कर सकते हैं?

उत्तर

4

आप सही हैं कि संस्थाएं अद्वितीय हैं और पहचान रखने की धारणा लेती हैं (यानी केवल एक अद्वितीय उपयोगकर्ता मौजूद हो सकता है)। Connection अन्य User इकाइयों पर निर्भर है। यह दो उपयोगकर्ताओं के बीच कुछ पहलू का प्रतिनिधित्व करता है। वह पहलू यह है कि कोई सक्रिय या निष्क्रिय कनेक्शन है या नहीं। जिन उपयोगकर्ताओं के डेटा कनेक्ट हो रहे हैं, उनके डेटा के बिना, कनेक्शन में कोई पहचान नहीं है। यह डेटाबेस में अपनी प्राथमिक कुंजी भी हो सकती है, लेकिन एक डोमेन परिप्रेक्ष्य से, इसकी इसकी कोई पहचान नहीं है।

इसलिए, मैं कहूंगा कि Connectionमान ऑब्जेक्ट है।


मेरी निष्कर्ष का समर्थन करने के लिए, Microsoft.Net Architecting Applications for the Enterprise, पेज 187, कहते हैं:

एक मूल्य वस्तु वर्ग डोमेन कि ज्यादातर डेटा होता है और उसमें शामिल डेटा के लिए रहता है में एक इकाई का प्रतिनिधित्व करता है। एक मान ऑब्जेक्ट है जो इसमें शामिल मानों के संयोजन द्वारा पूरी तरह से पहचाना जाता है। दूसरी ओर, एक इकाई ऑब्जेक्ट, इसके पास मौजूद डेटा के बावजूद, अपने जीवन और समृद्ध व्यवहार है। एंटीटी ऑब्जेक्ट आमतौर पर लंबे जीवनकाल के साथ ऑब्जेक्ट्स होते हैं। एक मान वस्तु इकाई के पहलू का प्रतिनिधित्व करती है और केवल एक इकाई के संबंध में रह सकती है।

और यह भी पेज 189 पर:

आगे टिप्पणी संस्थाओं और मूल्य की वस्तुओं के बीच अंतर की व्याख्या करने की जरूरत है। किसी ऑब्जेक्ट ऑब्जेक्ट के लिए आपको रिपॉजिटरी या डेटा मैपर की आवश्यकता नहीं है। आपको केवल एक इकाई के लिए एक भंडार की आवश्यकता है। किसी दिए गए इकाई के लिए रिपोजिटरी (या मैपर) निश्चित रूप से किसी मानी गई इकाई पर निर्भर सभी मूल्य वस्तुओं की देखभाल करेगा।

+0

"जिन उपयोगकर्ताओं के डेटा कनेक्ट हो रहे हैं, उनके बिना कनेक्शन के पास कोई पहचान नहीं है" - कनेक्शन FollowerID और TargetID के संयोजन के लिए अद्वितीय है। तो अगर हमारे पास एक TaregtID और FollowerID है जो मुझे विश्वास है कि उपयोगकर्ता आईडी हैं, तो हम एक कनेक्शन की पहचान कर सकते हैं। तो यह एक इकाई वस्तु कैसे नहीं है? –

+0

@ हरिसुब्रमण्यम, इसे रखने का एक और तरीका यह है [इस साइट] (http://lostechies.com/joeocampo/2007/04/23/a-discussion-on-domain-driven-design-value-objects/) कहते हैं , "एक मूल्य वस्तु एक इकाई के बिना अपने आप नहीं रह सकती है।" निश्चित रूप से यह निर्धारित करना हमेशा आसान नहीं होता कि कौन सा है, लेकिन इसके बारे में सोचने और शोध करने के बाद, मैं मूल्य वस्तु होने की ओर झुका रहा हूं। – Matt

2

कुछ समय पहले, मैंने वैज्ञानिक के बारे में एक कार्टून देखा जिसने क्लोनिंग का आविष्कार किया था। हर बार जब उसने खुद को क्लोन किया, तो उसने पिछले संस्करण को नष्ट कर दिया। फिर प्रदर्शन करने वाले व्यक्ति ने विनाश के हिस्से को बाधित करने और छेड़छाड़ करने का फैसला किया ताकि दो वैज्ञानिक थे। कार्टून कुछ दिलचस्प अस्तित्वपूर्ण पूछताछ के साथ समाप्त हुआ।

मूल्य बनाम इकाइयां एक या दूसरे रूप में आईडी फ़ील्ड रखने या नहीं होने के बारे में नहीं हैं। प्वाइंट है - हम अपने डोमेन परिप्रेक्ष्य के माध्यम से उन वस्तुओं को कैसे देख रहे हैं।यदि वे मूल्य वस्तुएं हैं, तो केवल उनके मूल्य मायने रखता है - पहला, तीसरा और 53 वां वैज्ञानिक समान हैं। अगर हम पहचान की परवाह करते हैं, अगर हमें लगता है कि क्लोनिंग तीसरे वैज्ञानिक पहले कभी नहीं होंगे, तो हमारा ऑब्जेक्ट एक इकाई है।

संबंधित मुद्दे