2010-10-04 16 views
42

के बीच क्या अंतर है एमवीसी मॉडल ऑब्जेक्ट, एक डोमेन ऑब्जेक्ट और डीटीओ के बीच क्या अंतर है?एमवीसी मॉडल ऑब्जेक्ट, एक डोमेन ऑब्जेक्ट और डीटीओ

मेरे समझ है:

MVC मॉडल वस्तु:

मॉडल डेटा एक इसी दृश्य से प्रदर्शित करने के लिए। जैसे कि किसी डोमेन ऑब्जेक्ट पर सीधे मानचित्र नहीं हो सकता है, यानी एक या अधिक डोमेन ऑब्जेक्ट्स से डेटा शामिल हो सकता है।

  1. क्लाइंट साइड
  2. व्यापार तर्क हो सकते हैं, जैसे कि सत्यापन, गणना गुण, आदि
  3. कोई हठ संबंधित तरीकों

डोमेन वस्तु:

वस्तु है कि मॉडल आरक्षण, ग्राहक, आदेश, आदि जैसे समस्या डोमेन डेटा बनी रहती है करने के लिए प्रयुक्त में एक वास्तविक दुनिया वस्तु ।

  1. सर्वर साइड
  2. कोई व्यापार तर्क

डीटीओ (डाटा ट्रांसफर वस्तु):

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

  1. परतों
  2. कोई व्यापार तर्क
  3. कोई हठ संबंधित तरीकों

तो सवाल के बीच पारित कर दिया के रूप में दोनों पक्षों पर उपयोग किया:

(1) मेरी समझ सही है? क्या मुझे कुछ महत्वपूर्ण बिंदु याद आ रहे हैं?

(2) क्या एमबीसी मॉडल के रूप में डोमेन ऑब्जेक्ट्स का उपयोग न करने के कोई कारण हैं कि मॉडल ऑब्जेक्ट्स को अतिरिक्त व्यावसायिक तर्क की आवश्यकता नहीं है?

(3) क्या एमटीसी मॉडल के रूप में डीटीओ का उपयोग न करने के कोई कारण हैं कि मॉडल ऑब्जेक्ट्स को अतिरिक्त व्यावसायिक तर्क की आवश्यकता नहीं है?

धन्यवाद।

टिम

+5

अच्छा प्रश्न .. +1 – nawfal

उत्तर

7

डोमेन और डीटीओ भी अपने "मॉडल" वस्तुओं हो सकता है - आप "ग्राहक" डोमेन वस्तु का विवरण प्रस्तुत करने के लिए एक दृश्य हो सकता है।

डोमेन ऑब्जेक्ट में डोमेन इकाई के गुणों को लागू करने के लिए एक डोमेन ऑब्जेक्ट में व्यावसायिक तर्क हो सकता है। सत्यापन एक ऐसा मामला है।डोमेन ऑब्जेक्ट में दृढ़ता से संबंधित विधियां नहीं होती हैं, लेकिन इसमें दृढ़ता

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

+1

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

+1

और एक अलग एमवीसी मॉडल क्लास केवल तभी आवश्यक है जब मॉडल डेटा के साथ प्रदर्शित महत्वपूर्ण व्यावसायिक तर्क/प्रसंस्करण हो? –

+1

हां, डोमेन ऑब्जेक्ट का उपयोग करने के विरोध में उचित समर्पित मॉडल रखने का एक कारण होगा। आपका डोमेन ऑब्जेक्ट केवल यूटीसी की तारीख को संग्रहीत कर सकता है और यह आपके सभी बिज़ तर्क के लिए भी पर्याप्त है। लेकिन यूआई पर, मान लें कि आपको इसे उपयोगकर्ता खाते के टाइमज़ोन में प्रदर्शित करना होगा। इस यूआई विशिष्ट कंप्यूटेशंस करने के लिए एक मॉडल उपयोगी होगा। – kartheek

11

डोमेन और मॉडल ऑब्जेक्ट्स अनिवार्य रूप से वही हैं, और इसमें व्यावसायिक तर्क हो सकता है। कार्यान्वयन के आधार पर, डोमेन और डीटीओ ऑब्जेक्ट्स समकक्ष हो सकते हैं यदि आप मॉडल से बिजनेस लॉजिक को सर्विस क्लास में हटाते हैं।

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

+0

उत्तरदाताओं दोनों के लिए धन्यवाद। अब मुझे और अधिक स्पष्ट लगता है। डोमेन ऑब्जेक्ट्स में व्यावसायिक तर्क हो सकता है जैसे प्रमाणीकरण, सीधे डेटा से संबंधित तर्क। –

+2

एक अलग एमवीसी मॉडल ऑब्जेक्ट केवल दृश्य में डेटा प्रदर्शित करने से संबंधित तर्क को समाहित करने के लिए आवश्यक है। यदि कोई नहीं है तो डोमेन ऑब्जेक्ट का उपयोग एमवीसी मॉडल ऑब्जेक्ट के रूप में करना आसान है। –

1
A DTO = is an object that carries data between processes. 

लेकिन सबसे दिलचस्प हिस्सा यह है कि, अपने डेटा के भंडारण और पुनर्प्राप्ति को छोड़कर इसका कोई व्यवहार नहीं है !!!

MVC कार्यप्रणाली पर बने रहना ...

Domain = subject of your entire application. 

Model = contains the (programming languages objects : EX: C# objects) to make up the universe of your application. 

वे obvioussly व्यवहार और गुण (डीटीओ के साथ अंतर देखें) हो सकता है।

अक्सर एक आवेदन (एक हल्का) में एक मॉडल हो सकता है - जिसमें आपका मॉडल बिल्कुल आपका डोमेन है। एक और मॉडल, एक पूरी तरह से अलग वस्तु प्रकार हो सकता है, जो किसी अन्य को संसाधित कर रहा है। उनमें से दोनों, इस मामले में आपके डोमेन का हिस्सा हैं, और उन्हें "डोमेन मॉडल - ऑब्जेक्ट्स" नाम दिया गया है।

उम्मीद है कि यह उत्तर संपूर्ण है और यह आपके लिए सब स्पष्ट है!

0

1) नहीं, यह व्यूमोडेल की परिभाषा है। एमवीसी मॉडल ऑब्जेक्ट और डोमेन ऑब्जेक्ट दोनों समान हैं।
2) डोमेन मॉडल (ऑब्जेक्ट्स) हमेशा मौजूद होते हैं, व्यवसाय तर्क वैकल्पिक है
3) यदि डोमेन ऑब्जेक्ट में कोई व्यावसायिक तर्क नहीं है तो स्वचालित रूप से यह डीटीओ बन जाता है।

0

वस्तुओं के अधिकांश के लिए कोई भी परिभाषा वस्तुओं के उपयोग करने का जगह पर विभिन्न आधारित है:

Model: एक सामान्यग्राहक या सर्वर में वस्तु प्रयोग करने के लिए परिभाषा है।

  1. Model View: client समय के सबसे में उपयोग करते हुए एक वस्तु है।
  2. Domain Object: ऑब्जेक्टserver और transfering data to the database में उपयोग कर रहा है।
  3. Data Transfer Object(DTO): एपीआई में डेटा आप ग्राहक के लिए डेटाबेस मॉडल देने के लिए नहीं होना चाहिए प्राप्त करने के लिए GET पद्धति कॉल,: कि किसी अन्य वस्तु को एक वस्तु से हस्तांतरण डेटा, विशेष रूप से (उदाहरण के लिए API Call में डेटा प्राप्त करने में एक वस्तु है इस उद्देश्य के लिए आप dto का उपयोग करें)।

नोटिस: the definitions are true most of the time लेकिन कुछ स्थितियों में व्यावहारिक नहीं है।

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