2010-08-30 15 views
7

मैं पहली बार एमवीवीएम पैटर्न के बाद एक WPF ऐप लिखने की योजना बना रहा हूं लेकिन कुछ मेरे लिए बिल्कुल स्पष्ट नहीं है। आइए मान लें कि दृश्य में "सेव" बटन है और जब यह मारा जाता है तो मुझे अपने डेटा (मॉडल) की वर्तमान स्थिति को सहेजने की आवश्यकता होती है। यह एक एसओएपी सेवा को एक एसओएपी संदेश भेजकर किया जाएगा।WPF एमवीवीएम सेवा परत

मेरे एमवीवीएम सेटअप में इन एसओएपी अनुरोध/प्रतिक्रिया हैंडलर रहते हैं? जब दृश्य बटन मारा जाता है तो दृश्य मॉडल एसओएपी कॉल स्वयं करता है? क्या दृश्य मॉडल मॉडल को स्वयं को बचाने के लिए सूचित कर सकता है? शायद यह कुछ अन्य तरीका है, एमवीवीएम से पूरी तरह अलग है?

मेरी सोच यह थी कि (कम से कम इस विशिष्ट मामले में) दृश्य मॉडल इसे संभाल लेगा क्योंकि इसे वर्तमान में सहेजने के अनुरोध को पूरा होने तक दृश्य में सहेजें बटन को अक्षम करने की आवश्यकता है।

+0

मैंने एक उत्तर लिखना शुरू कर दिया, और उसके बाद खुद से बात की, और इसके बजाय +1। मेरा वृत्ति यह है कि मॉडल को इसे संभालना चाहिए, क्योंकि अधिकांश व्यूमोडेल मॉडल के डेटा कॉन्टेक्स्ट का उपयोग करते हैं, लेकिन यह वास्तव में मॉडल को अपडेट नहीं कर रहा है, बल्कि मॉडल के बाहर कुछ भी ... –

उत्तर

5

मैं आमतौर पर व्यूमोडेल और एसओएपी/डब्ल्यूसीएफ/वेबसाइट सेवा परत के बीच एक लॉजिकल क्लाइंट-साइड एप्लिकेशन/बिजनेस लेयर डालता हूं। यह परत वह जगह है जहां सभी गैर-व्यू व्यवसाय तर्क और प्रसंस्करण तर्क रहता है। याद रखें, व्यूमोडेल दृश्य का मॉडल है, न कि डोमेन का मॉडल। इसलिए, आप ASAP के नीचे अगली परत पर नियंत्रण बंद करना चाहते हैं।

इस परिदृश्य में, मेरे पास व्यूमोडेल पर एक सेव कमांड ट्रिगर होगा, जो बदले में एप्लिकेशन लेयर में कॉल करेगा, जो बदले में दूरस्थ सेवाओं पर कोई कॉल करेगा।

4

व्यू मॉडेल, ऐसा ऑपरेशन नहीं करना चाहिए। यह केवल इसे ट्रिगर करना चाहिए। इसलिए मॉडल को यह करना है (या एक और इंटरमीडिएट परत जो लोड-एंड सेव-ऑपरेशंस के लिए ज़िम्मेदार है, लेकिन व्यूमोडेल स्वयं नहीं)।

व्यूमोडेल सहेजने का निरीक्षण कर सकता है और दृश्य के लिए प्रगति के बारे में राज्य-जानकारी प्रदान कर सकता है।

0

मैं एक सेवा हैंडलर तैयार करूंगा जिसे व्यूमोडेल द्वारा एक्सेस किया जा सकता है। इसे व्यूमोडेल के निर्माता में पास करें, और सेवा हैंडलर द्वारा प्रकट विधियों को कॉल करें।

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