मैं एक ऐप लिख रहा हूं जो नेटवर्क कनेक्शन पर सुनता है, और जब कुछ डेटा आते हैं, तो यह वापस जवाब देता है, और आने वाले डेटा के आधार पर, इसे वापस जवाब देने से पहले उपयोगकर्ता (संवाद दिखाएं) से पूछने की आवश्यकता हो सकती है।मॉडल-व्यू-व्यूमोडेल आर्किटेक्चर में मॉडल की विधि के बीच से उपयोगकर्ता इनपुट को साफ तरीके से कैसे प्राप्त करें?
मुझे नहीं पता कि एमवी-वीएम आर्किटेक्चर में यह साफ तरीके से कैसे किया जाए: यदि मुझे आने वाले डेटा के आधार पर जीयूआई अपडेट करने की ज़रूरत है तो घटनाओं और बाध्यकारी संग्रहों को अच्छा लगेगा, लेकिन अगर मुझे वास्तव में एक एवर की आवश्यकता है तो क्या होगा वापस जवाब देने से पहले उपयोगकर्ता?
और चीजों को और खराब करने के लिए, मैं इसे सिंक्रनाइज़ करना चाहता हूं, क्योंकि मैं चाहता हूं कि मेरा उत्तर एल्गोरिदम एक ही स्थान पर हो, अस्पष्ट 'कौन-कॉल-कौन' जिम्मेदारियों के साथ कई कॉलबैक में विभाजित न हो।
बस
HandleMessage(Message msg){
string reply;
if (msg.type == 1) {
reply = ...
} else {
string question = msg...
reply = ShowModalDialog(question); // MVVM violation!
}
sender.Send(reply);
}
लेकिन जैसे कुछ मैं नहीं चाहता कि मॉडल से देखने या viewmodel कॉल करने के लिए, मॉडल के रूप में पुन: प्रयोज्य और परीक्षण योग्य होने की जरूरत है चाहता हूँ - मैं हर परीक्षण समय में संवाद पॉपिंग नहीं करना चाहते, और यह एमवीवीएम का उल्लंघन होगा! कोई घटना नहीं (वे केवल एक तरफ हैं जहां तक मुझे पता है, और घटना मूल के जवाब पाने के लिए कोई पिछड़ा चैनल नहीं है) या डाटाबेसिंग, क्योंकि यह असीमित होगा।
क्या यह करने योग्य है? यह एक प्रश्न है जिसे मैंने कई परीक्षण संचालित विकास प्रचारकों से पूछा, और अब तक, मुझे व्यावहारिक रूप से उपयोग करने योग्य उत्तर नहीं मिला। फिर भी, प्रसंस्करण के बीच में कुछ अतिरिक्त इनपुट की आवश्यकता काफी आम है।
धन्यवाद!
संपादित करें: यह एप्लिकेशन तर्क है, इसलिए यह स्पष्ट रूप से मॉडल से संबंधित है, और यहां तक कि यदि इस मामले में ऐसा नहीं होता है, तो भी मैं मामलों के समाधान को जानना चाहता हूं जब मुझे वास्तव में व्यवसाय के मध्य में उपयोगकर्ता के इनपुट की आवश्यकता होती है मॉडल में तर्क दिनचर्या।
+1 इसे करने से मुझे बहुत बेहतर समझाने के लिए +1। –
धन्यवाद, यह एक स्वच्छ समाधान की तरह लगता है, मैं लिंक पढ़ूंगा (उनके लिए धन्यवाद!) –