मैंने DTO को डोमेन ऑब्जेक्ट्स से मैप करने से संबंधित बहुत सारे प्रश्न देखे हैं , लेकिन मुझे नहीं लगा कि उन्होंने मेरे प्रश्न का उत्तर दिया है। मैंने पहले कई तरीकों का इस्तेमाल किया है और मेरी अपनी राय है लेकिन मैं कुछ और ठोस देख रहा हूं।
स्थिति:
हमारे पास कई डोमेन ऑब्जेक्ट हैं। हम एक CSLA मॉडल का उपयोग कर रहे हैं ताकि हमारे डोमेन ऑब्जेक्ट बहुत जटिल हो सकें और उनमें अपना डेटा एक्सेस हो। आप तार पर इन चारों को पारित नहीं करना चाहते हैं। हम कुछ नई सेवाओं को लिखने जा रहे हैं जो कई प्रारूपों (.Net, JSON, आदि) में डेटा लौटाएंगे। इसके लिए (और अन्य कारणों से) हम तार पर घूमने के लिए एक दुबला, डेटा ट्रांसफर ऑब्जेक्ट भी बना रहे हैं।
मेरा सवाल है: डीटीओ और डोमेन ऑब्जेक्ट को कैसे जोड़ा जाना चाहिए?
मेरी पहली प्रतिक्रिया एक फाउलर, डीटीओ पैटर्न-प्रकार के समाधान का उपयोग करना है । मैंने कई बार ऐसा किया है और यह मुझे सही लगता है। डोमेन ऑब्जेक्ट में DTO का कोई संदर्भ नहीं है। एक बाहरी ऑब्जेक्ट (एक "मैपर" या "असेंबलर") को डोमेन ऑब्जेक्ट से डीटीओ बनाने के लिए कहा जाता है। आम तौर पर डोमेन ऑब्जेक्ट पक्ष पर एक ORM होता है। इसका नकारात्मक पक्ष यह है कि "मैपर" किसी भी वास्तविक स्थिति के लिए अत्यंत जटिल हो जाता है और बहुत नाजुक हो सकता है।
एक अन्य विचार यह है कि डोमेन ऑब्जेक्ट के लिए DTO को "समाहित" करना है, क्योंकि यह केवल एक दुबला डेटा ऑब्जेक्ट है। डोमेन ऑब्जेक्ट गुण आंतरिक रूप से डीटीओ गुणों का संदर्भ देंगे और यदि मांगे गए तो बस डीटीओ को वापस कर सकते हैं। मैं इसके साथ कोई समस्या नहीं देख सकता लेकिन यह गलत लगता है। मैंने कुछ लेख देखे हैं जहां NHibernate का उपयोग करने वाले लोग इस पद्धति का उपयोग करते दिखाई दिए।
क्या अन्य तरीके हैं? क्या उपयोग करने के लायक ऊपर का एक तरीका है? यदि ऐसा है या नहीं तो क्यों?