2010-12-30 22 views
6

मुझे डीआरवाई के लिए प्रयास करना पसंद है, और जाहिर है यह हमेशा संभव नहीं है। हालांकि, मुझे एक अवधारणा पर अपने सिर को खरोंच करना है जो "मॉडल देखें" की एमवीसी में काफी आम है।एमवीसी और दृश्य मॉडल के साथ डीआरवाई बनाम सुरक्षा और रखरखाव

व्यू मॉडल को सुरक्षा, रखरखाव और परीक्षण दोनों चिंताओं के लिए केवल न्यूनतम मात्रा में जानकारी को पास करने के लिए डिज़ाइन किया गया है। मै समझ गया। यह समझ में आता है।

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

क्या देखें मॉडल DRY का उल्लंघन करते हैं? क्या वे एक आवश्यक बुराई हैं? क्या वे बुरे से ज्यादा अच्छा करते हैं?

उत्तर

4

इसे बार-बार लाया गया है। न केवल यह एक बहुत ही महत्वपूर्ण डुप्ली है बल्कि उत्तर व्यक्तिपरक और तर्कवादी है। ViewModels डीडीडी और दृढ़ता अज्ञान की अवधारणा का जवाब है।

व्यूमोडल्स का उपयोग न करने का कहना है कि डैंजो और रेल और अधिकांश PHP ओआरएम/एमवीसी ढांचे को अनदेखा करना उन अवधारणाओं पर ध्यान नहीं देता है। क्या आप चाहते हैं कि कोई आपको उन सभी अन्य भाषाओं को बताने के लिए कहें और ढांचे "गलत कर रहे हैं?"।

चाहे आप व्यूमोडल्स का उपयोग करना चाहते हैं या नहीं, आप किस आर्किटेक्चर शैलियों के लिए जा रहे हैं और आवेदन के लक्ष्य क्या हैं, इस पर 100% निर्भर हैं।

यह पूछ खींचने और उचित एक वेबफ़ॉर्म अनुप्रयोग में GridViews गिर रही है की तरह है? बहुत सी चीजों पर निर्भर करता है।

वहाँ भी यहाँ है कि आप सूखी के बारे में एक गलत धारणा है। डब्ल्यूसीएफ सेवा से प्रॉक्सी कक्षाएं डीआरवाई का उल्लंघन करती हैं? क्या ViewModel में तर्क शामिल है? डीआरवाई का प्राथमिक लक्ष्य एक सार्थक उद्देश्य के साथ डुप्लिकेट तर्क नहीं है। ऑब्जेक्ट आकृतियों को साझा करने वाले कुछ डीटीओ का उल्लंघन करें?

घिरे संदर्भों की DDD प्रिंसिपल एक अच्छा भी पढ़ने के लिए होगा। यदि एक शॉपिंगकार्ट ऑब्जेक्ट को वेयरहाउस बनाम ईकॉमर्स वेबसाइट सेटिंग में अलग-अलग काम करने की ज़रूरत है तो क्या इसका मतलब है कि आप प्रकारों को साझा करना चाहते हैं? क्या होता है जब एकमात्र साझा कार्यक्षमता मूल्य (मूल्य + कर + शिपिंग) कुल कर रही है? क्या आप इसके लिए बेस क्लास बनाते हैं, इसलिए बढ़ते युग्मन? GetTotal() जैसी सरल विधि के लिए 100% DRY होने के लिए समय/लागत/रखरखाव में ट्रेडऑफ क्या हैं। डीआरवाई का उल्लंघन करते समय यह समझ में आता है कि वास्तव में जटिलता और आपके कोडबेस को बनाए रखने की समग्र लागत कम हो रही है?

मुझे इतने सारे प्रश्नों के उत्तर देने के लिए खेद है, लेकिन उम्मीद है कि अब आप पूछे गए प्रश्न की बारीकियों और जटिलताओं को देख सकते हैं। ;)

+0

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

+0

@Mystere मैन - http://stackoverflow.com/search?q=viewmodels+DRY+[asp.net-mvc] – jfar

+0

शायद आप वास्तव में परिणाम पढ़ना चाहिए। उनमें से कोई भी लागू नहीं होता है। –

2

कोई यह भी ध्यान रख सकता है कि दृश्य मॉडल का उपयोग नहीं करना एक जिम्मेदारी सिद्धांत का उल्लंघन होगा - आपकी इकाई को यूआई चिंताओं के साथ प्रदूषित नहीं किया जाना चाहिए।

मैं भी लगता है कि दृश्य मॉडल के वास्तविक मूल्य जरूरी नहीं कि आपके आवेदन के संस्करण 1.0 में स्पष्ट हो जाता है। संस्करण 2.0 पर काम करते समय आप स्वयं को धन्यवाद देंगे जब आप पूरी तरह से फिर से सोचें कि आपका बैक-एंड कैसे काम करता है लेकिन आपको दृश्य परिवर्तन को उन परतों को ले जाने की आवश्यकता नहीं है।

+0

मैं वास्तव में यह कैसे SRP का उल्लंघन होगा, के बाद से SRP एक मॉडल की तुलना में एक नियंत्रक मुद्दे के अधिक है नहीं दिख रहा। –

+0

एसआरपी कहीं भी हर एप्लिकेशन के लिए एक मुद्दा है। यह तर्कसंगत रूप से सबसे महत्वपूर्ण ओओपी सिद्धांत है। –