मैंने डोमेन ऑब्जेक्ट्स पर डीटीओ मैपिंग से संबंधित बहुत सारे प्रश्न देखे हैं, लेकिन मुझे नहीं लगता कि उन्होंने मेरे प्रश्न का उत्तर दिया है। मैंने अपनी खुद की राय से पहले कई तरीकों का उपयोग किया है लेकिन मैं कुछ और ठोस बनाने की तलाश में हूं।डोमेन ऑब्जेक्ट पर डीटीओ मैपिंग के लिए सर्वोत्तम अभ्यास?
स्थिति:
हम कई डोमेन वस्तुओं की है। हम एक सीएसएलए मॉडल का उपयोग कर रहे हैं, इसलिए हमारी डोमेन ऑब्जेक्ट्स बहुत जटिल हो सकती हैं और उनमें अपनी डेटा एक्सेस शामिल है। आप इन तारों को तार पर पास नहीं करना चाहते हैं। हम कुछ नई सेवाएं लिखने जा रहे हैं जो कई प्रारूपों (नेट, जेएसओएन, आदि) में डेटा वापस कर देंगे। इसके लिए (और अन्य कारणों) हम तार पर चारों ओर पारित करने के लिए एक दुबला, डेटा स्थानांतरण ऑब्जेक्ट भी बना रहे हैं।
मेरा प्रश्न यह है कि डीटीओ और डोमेन ऑब्जेक्ट को कैसे जोड़ा जाना चाहिए?
मेरी पहली प्रतिक्रिया Fowler, DTO pattern-type solution का उपयोग करना है। मैंने इसे कई बार देखा है और यह मेरे लिए सही लगता है। डोमेन ऑब्जेक्ट में डीटीओ का कोई संदर्भ नहीं है। एक डोमेन ऑब्जेक्ट से एक डीटीओ बनाने के लिए एक बाहरी इकाई (एक "मैपर" या "असेंबलर") कहा जाता है। आम तौर पर डोमेन ऑब्जेक्ट पक्ष पर एक ओआरएम होता है। इसका नकारात्मक पक्ष यह है कि "मैपर" किसी भी वास्तविक स्थिति के लिए बेहद जटिल हो जाता है और यह बहुत नाजुक हो सकता है।
डोमेन ऑब्जेक्ट के लिए डीटीओ को "शामिल" करने का एक और विचार है, क्योंकि यह केवल एक दुबला डेटा ऑब्जेक्ट है। डोमेन ऑब्जेक्ट गुण आंतरिक रूप से डीटीओ गुणों का संदर्भ देंगे और यदि पूछे जाने पर डीटीओ वापस कर सकते हैं। मैं इसके साथ कोई समस्या नहीं देख सकता लेकिन यह गलत लगता है। मैंने कुछ लेख देखे हैं जहां एनएचबीर्नेट का उपयोग करने वाले लोग इस विधि का उपयोग करने के लिए प्रकट हुए।
क्या अन्य तरीके हैं? उपयोग करने के लायक तरीकों में से एक है? यदि ऐसा है या नहीं, तो क्यों?
अग्रिम में किसी भी अंतर्दृष्टि के लिए धन्यवाद।
ऑटोमैपर दिलचस्प लग रहा है। मैंने पहले कोड को देखा है इससे पहले कि यह बदलेगा। मेरा मुख्य मुद्दा यह है कि यदि मैं किसी भी कारण से मैपिंग कोड के टन के साथ फंस जाऊंगा, तो मैं इसे अपने ऊपर नियंत्रण रखना पसंद करूंगा। –
जब हम डीटीओ _to_ डोमेन ऑब्जेक्ट्स से जाते हैं, तो मैपिंग 100% मैन्युअल है। हल करने के लिए यह एक कठिन समस्या है, क्योंकि हम केवल डेटा कंटेनर के बजाय, हमारे डोमेन ऑब्जेक्ट्स को ऑपरेशन-आधारित रखने की कोशिश करते हैं। _to_ एक डीटीओ जा रहा है, यह हल करने में एक आसान समस्या है। –
मैं इस बात से सहमत हूं कि यह गलत है कि डोमेन ऑब्जेक्ट को डीटीओ ऑब्जेक्ट का कोई ज्ञान नहीं होना चाहिए। हालांकि वे इस मामले में संबंधित हो सकते हैं, उनका उद्देश्य पूरी तरह से अलग है (डीटीओ आमतौर पर उद्देश्य के लिए बनाए जाते हैं) और आप एक अनावश्यक निर्भरता बनायेंगे। – Sinaesthetic