2009-04-08 15 views
7

मुझे डीटीओ/डोमेन ऑब्जेक्ट्स का उपयोग क्यों करना चाहिए जब मैं क्लास लाइब्रेरी में सभी बिजनेस क्लास डाल सकता हूं, उन्हें व्यवसाय तर्क में उपयोग कर सकता हूं, फिर उन व्यवसाय वस्तुओं को सीमा वर्गों पर भी पास कर सकता हूं?डाटा ट्रांसफर ऑब्जेक्ट (डीटीओ) का बिंदु क्या है?

अद्यतन: सभी महान अंक हैं, मदद के लिए धन्यवाद। एक अनुवर्ती प्रश्न:

आप आमतौर पर इन डीटीओ कहां रखते हैं? डोमेन ऑब्जेक्ट्स के साथ-साथ एक ही नामस्थान में?

namespace MedSched.Medical 
{ 
    public class MedicalGroup 
    { 
     //... 
    } 

    public class MedicalGroupDTO 
    { 
     //... 
    } 
} 

उत्तर

7
  • डीटीओ आपके डोमेन मॉडल के लिए एक अमूर्त परत प्रदान करते हैं। इसलिए आप मॉडल को बदल सकते हैं और अपने सेवा ग्राहकों के लिए अनुबंध को तोड़ नहीं सकते हैं। यह डेटाबेस डिज़ाइन में एक सामान्य प्रथा के समान है जहां अंतर्निहित डेटा मॉडल के लिए विचार और प्रक्रियाएं अमूर्त परत बन जाती हैं।
  • सीरियलाइजेशन - आप डेटा का पर्दाफाश कर सकते हैं और तार पर फूले हुए संदेश भेज सकते हैं। धारावाहिक विशेषताओं का उपयोग करके इसे कम किया जा सकता है, लेकिन आपके पास अभी भी अतिरिक्त जानकारी हो सकती है।
  • लागू बनाम स्पष्ट अनुबंध - डोमेन ऑब्जेक्ट्स को उजागर करके आप क्लाइंट को अपने उपयोग की व्याख्या करने के लिए छोड़ देते हैं क्योंकि उनके पास उनके निपटारे में पूरा मॉडल नहीं है। आप अक्सर संगठनों की मौजूदगी या हटाने के आधार पर डोमेन ऑब्जेक्ट्स को अद्यतन कर देंगे, या सभी परिवर्तनों को अंधाधुंध स्वीकार करेंगे। डीटीओ स्पष्ट रूप से सेवा और वांछित ऑपरेशन के उपयोग को व्यक्त करते हैं।
  • डिस्कनेक्ट किया गया परिदृश्य - स्पष्ट संदेश या DTOs होने आप इस तरह के संदेश ब्रोकर, आदि
  • DDD के रूप में संदेश और संदेश भेजने के पैटर्न को लागू करने के लिए यह आसान होगा - शुद्ध DDD की मांग है कि डोमेन वस्तुओं बाह्य अपरिवर्तनीय हैं, और इसलिए आप ऑफलोड चाहिए यह किसी अन्य वस्तु के लिए, आमतौर पर एक डीटीओ।
3

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

यदि आपका एप्लिकेशन वेब सेवा आधारित नहीं है, तो डीटीओ हैं वास्तव में आपको कुछ खरीदने के लिए नहीं जा रहा हूँ।

तो डीटीओ का उपयोग करने या उपयोग करने का निर्णय लेने से आपके आवेदन की वास्तुकला पर आधारित होना चाहिए।

+0

समझ में आता है - हाँ, प्रश्न में विशेष ऐप एक अत्यधिक वितरित ऐप है। इनपुट के लिए धन्यवाद। – Aaron

+0

किस अर्थ में वितरित? यदि आप तकनीक की तरह रीमोटिंग का उपयोग कर रहे हैं, तो आप आमतौर पर अपने डोमेन ऑब्जेक्ट्स को क्रमबद्ध कर सकते हैं और बिना किसी समस्या के सीमाओं में पारित कर सकते हैं। एक बार जब आप विभिन्न प्लेटफार्मों में शामिल हो जाते हैं, तो डीटीओ आमतौर पर चीजों को आसान बनाते हैं। – Bob

1

ऐसे समय होते हैं जब डेटा आप पास करना चाहते हैं, बिल्कुल व्यापार वस्तुओं की संरचना के लिए मानचित्र नहीं है, इस मामले में आप डीटीओ का उपयोग करते हैं।

पूर्व: जब आप डेटा या प्रक्षेपण का सबसेट पास करना चाहते हैं।

4

मैं DTOs प्रयोग करने के लिए 2 बुनियादी स्थितियों के बारे में सोच सकते हैं:

  • आप अधूरा है और सत्यापन असफल हो जायेगी कि डेटा से अपने व्यवसाय को वस्तु बना रहे हैं। उदाहरण के लिए, आप एक CSV फ़ाइल या एक्सेल फ़ाइल को पार्स कर रहे हैं जहां से आपका व्यवसाय ऑब्जेक्ट बनाया गया है। यदि आप अपनी ऑब्जेक्ट ऑब्जेक्ट बनाने के लिए सीधे इन ऑब्जेक्ट्स से डेटा का उपयोग करते हैं, तो ऑब्जेक्ट के भीतर कई सत्यापन नियमों को विफल करना काफी संभव है, क्योंकि ऐसी फ़ाइलों से डेटा त्रुटियों से ग्रस्त हैं। उनके पास आपके अंतिम व्यावसायिक ऑब्जेक्ट में एक अलग संरचना होती है: उस अपूर्ण डेटा के लिए प्लेसहोल्डर होने पर उपयोगी होगा।

  • आप बैंडविड्थ गहन पर एक माध्यम के माध्यम से अपना व्यावसायिक ऑब्जेक्ट ले जा रहे हैं। यदि आप एक वेब सेवा का उपयोग कर रहे हैं, तो परिवहन से पहले अपनी वस्तु को सरल बनाने के लिए आपको डीटीओ का उपयोग करना होगा; अन्यथा सीएलआर में आपके सभी डेटा को क्रमबद्ध करने का प्रयास करने में कठिनाई होगी।

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