2010-09-16 3 views
9

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

क्या यह मॉडल मॉडल को व्यूमोडेल फ़ोल्डर के रूप में समझने के लिए समझ में आता है? क्या बहुत से लोग ऐसा करते हैं? क्या एमवीवीएम के रूप में ऐसा कोई पैटर्न है?

उत्तर

15

यदि आप अपने प्रेजेंटेशन कोड पर पूरी तरह भरोसा नहीं करते हैं (या बस इस तरह के encapsulation अधिक सुरुचिपूर्ण) पर एक दृश्य मॉडल एक और स्तर का अमूर्त जोड़ने के लिए कुछ है।

यही है, अगर आपके Person वर्ग एक Delete विधि या एक SSNumber संपत्ति है, तो आपको एक दृश्य को यह वस्तु पारित नहीं करने के लिए, इस के रूप में चाहते हो सकता है, धारणात्मक, इसे कहते हैं हटाएं या प्रदर्शित एसएसएन, सक्षम बनाता है जो इसे चाहिए नहीं कर सकेंगे।
इस स्थिति से बचने के लिए, आप एक और कक्षा, PersonViewModel बनाते हैं, जिसमें केवल जानकारी/विधियां होती हैं जिन्हें दृश्य से सुरक्षित किया जाता है।

यह एमवीसी अनुप्रयोग से मॉडल तर्क लेने के साथ बहुत कम नहीं है। आप अपने मॉडल के लिए एक अलग प्रोजेक्ट बना सकते हैं और इसे अपने वेब एप्लिकेशन से संदर्भित कर सकते हैं चाहे आप ViewModel encapsulation का उपयोग करते हों या नहीं। ऐसा करने से किताबें मैंने अभी तक पढ़ी हैं।

5

मैं तुम्हें MVVM पैटर्न (Model-View-ViewModel)

वहाँ MVVC की तरह ऐसी बात नहीं है का उल्लेख लगता है।

4

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

दूसरी तरफ प्रेजेंटेशन एक अलग परिप्रेक्ष्य है, आपको ज्यादातर डोमेन ऑब्जेक्ट्स को बाध्य करना आसान बनाने के लिए फ़्लैट करना होगा, आपको प्रस्तुति परत में डोमेन मॉडल इकाइयों के कुछ विशेषताओं और गुणों में रुचि नहीं हो सकती है, इस प्रकार प्रेजेंटेशन मॉडल (व्यू मॉडल) दृश्य उद्देश्यों के लिए मॉडल का एक और अनुकूलन है, संरचना अलग हो सकती है, आप कुछ फ़ील्ड हटा सकते हैं जो प्रीनेटाटायन के लिए अनियंत्रित हैं और प्रस्तुति उद्देश्यों के लिए कुछ फ़ील्ड भी जोड़ते हैं (जैसे "IsIdEnabled" या स्लाइडरविड्थ, ...)

0

जैसा कि ऊपर वर्णित डीएक्स_ है, एमवीवीसी जैसी कोई चीज़ नहीं है।

लेकिन, यह अच्छी बात एमवीवीएम का बहुत अच्छी तरह से वर्णन करती है: Deep Dive MVVM