2008-12-17 17 views
41

एक Silverlight नियंत्रण के साथ चुनौती यह है कि जब गुण कोड के लिए बाध्य कर रहे हैं, वे अब सच में ब्लेंड में संपादन योग्य रहे हैं। उदाहरण के लिए, यदि आपके पास एक सूची फ़ीड है जो डेटा फ़ीड से पॉप्युलेट किया गया है, तो जब आप ब्लेंड में नियंत्रण संपादित करते हैं तो कोई तत्व दिखाई नहीं देता है।क्या मुझे सिल्वरलाइट परियोजनाओं में मॉडल-व्यू-व्यू मॉडेल (एमवीवीएम) पैटर्न का उपयोग करना चाहिए?

मैंने सुना है कि MVVM पैटर्न, WPF विकास समुदाय द्वारा शुरु हुआ, भी Silverlight नियंत्रण "blendable" रखने के साथ कर सकते हैं। मैं अभी भी इसके चारों ओर मेरे सिर लपेटकर हूँ, लेकिन यहाँ हैं कुछ स्पष्टीकरण:

एक संभावित नकारात्मक पक्ष यह है कि पैटर्न अतिरिक्त की आवश्यकता है कक्षाएं, हालांकि जरूरी नहीं कि अधिक कोड (जैसा कि ऊपर दिए गए दूसरे लिंक द्वारा दिखाया गया है)। विचार?

+0

मैं आपको यह भी आईओसी, Caliburn-सूक्ष्म एवं Ninject का उपयोग एक भयानक कॉम्बो बनाने की सलाह देते हैं। –

उत्तर

32

मैं निश्चित रूप से लगता है कि तुम सिल्वरलाइट अनुप्रयोगों के लिए MVVM पैटर्न का उपयोग करना चाहिए - और पैटर्न के लाभों में से एक यह है कि आप वास्तव में अपने आवेदन वास्तव में कुछ सरल तकनीकों के माध्यम से blendable कर सकते हैं। मैं अक्सर "मिश्रणशीलता" के रूप में "डिजाइन करने योग्यता" के रूप में संदर्भित करता हूं - यह सुनिश्चित करने के लिए कि आप ब्लेंड में आपका एप्लिकेशन शानदार दिखते हैं, कुछ तकनीकों का उपयोग करते हैं।

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

चुनौती अक्सर डेटाकॉन्टेक्स्ट को घोषणात्मक रूप से सेट करने का तरीका होता है - इसलिए मैं अक्सर आईओसी कंटेनर में एक सेवा लोकेटर कक्षा ए "फ्रंट एंड" का उपयोग कर समाप्त होता हूं। इस तरह से मैं सेवा लोकेटर पर किसी संपत्ति के डेटा संदर्भ को बाध्य कर सकता हूं। डिजाइन समय DataContext और रनटाइम डाटा प्रसंग:

एक और तकनीक ObjectDataSource नियंत्रण (गैर दृश्य) दो गुण है कि किसी तरह का पैदा करते हैं। नियंत्रण निष्पादित करने का कार्य करता है कि यह कहां निष्पादित किया जा रहा है, और उसके बाद अभिभावक डेटा कॉन्टेक्स्ट को सही ऑब्जेक्ट पर सेट करना है।

4

मुझे यकीन है कि अगर मैं अपने प्रश्न का उत्तर नहीं कर सकते, लेकिन मैं बहुत ही मूल्यवान नीचे दिए गए लेख foudn है। Jonas Follesø डिजाइन/मिश्रण मोड में अपनी सेवाओं को बदलने के लिए निंजा का उपयोग कर रहा है। बहुत अच्छा!

http://jonas.follesoe.no/YouCardRevisitedImplementingDependencyInjectionInSilverlight.aspx

+0

लिंक Torbjørn जोड़ने के लिए धन्यवाद –

2

मैं कुछ ही विकल्प की कोशिश की है और मुझे लगता है मेरे लिए सबसे अच्छा विकल्प के रूप में MVVM पर बसने से कर रहा हूँ। ब्लेंडेबिलिटी एक महत्वपूर्ण बिंदु है, और मुझे वीएम पहलू को गतिशील व्यवहार और प्रक्रियात्मक प्रभाव और एनिमेशन (जैसे निखिल की सिल्वरलाइट.एफएक्स) को कठोर बनाने के लिए अंतर्ज्ञानी भी मिलती है। एक बिंदु पर मैंने फ्लैंट इंटरफेस के माध्यम से पूरी तरह से मिश्रण से बचने की कोशिश की लेकिन मुझे लंबे समय तक यूआई और व्यवहार के बीच युग्मन मिल रहा है। मैं ब्लेंड में अपना यूआई डिज़ाइन करना चाहता हूं और फिर कोड में प्रभाव और अन्य व्यवहार जोड़ना चाहता हूं, यह अब तक मेरे लिए सबसे अच्छा पैटर्न साबित हो रहा है।

1

मैं अलग सिल्वरलाइट परियोजनाओं के एक जोड़े पर हाल ही में MVVM का उपयोग किया गया है और यह वास्तव में अच्छी तरह से काम कर रहा है, मैं निश्चित रूप से यह सिफारिश करेंगे।Jonas's post शुरू करने के लिए एक शानदार जगह है, मैंने हाल ही में अपने एमवीवीएम अनुभवों पर blogged भी बनाया है और मुख्य स्पर्श बिंदुओं को डेमो करने के लिए वास्तव में एक सरल समाधान बनाया है।

0

मैं हमेशा सोचा है MVVM और PresntationModel http://martinfowler.com/eaaDev/PresentationModel.html अनिवार्य रूप से एक ही बात कर रहे हैं। प्रस्तुति मॉडल कहने के लिए बहुत आसान है। मैंने इसे जावा स्विंग, विंडोज़ फॉर्म, डब्ल्यूपीएफ और चांदी की रोशनी में सफलतापूर्वक इस्तेमाल किया है। यदि आप चिंताओं को अलग करने के मामले में सोचते हैं तो प्रेजेंटेशन मॉडल बहुत समझ में आता है। आपके पास एक वर्ग है जिसका एकमात्र चिंता प्रस्तुति अनुकूल मॉडल प्रदान कर रही है। वास्तव में कोई फर्क नहीं पड़ता कि स्क्रीन पर इसे दिखाने के लिए किस तकनीक का उपयोग किया जाता है। यह कुछ कार्यान्वयन विवरण बदल सकता है लेकिन चिंताओं को अलग करना एक अच्छा विचार है इससे कोई फर्क नहीं पड़ता कि आप जानकारी कैसे दिखाते हैं। उस अलगाव के कारण आप दृश्य प्रौद्योगिकी के बावजूद आसानी से अपने प्रेजेंटेशन मॉडल के खिलाफ परीक्षण लिख सकते हैं। तो यह एक प्लस है।

2

मैं हम में से कई अग्रणियों आगे जाना है और (उस बात के लिए और WPF) सिल्वरलाइट में MVVM का उपयोग कर वास्तव में अच्छा नमूना क्षुधा बनाने के लिए के लिए इंतजार कर रहे हैं लगता है। lack of ICommand in Silverlight जैसे कई मुश्किल क्षेत्रों हैं, या interacting with animations की कठिनाई केवल डेटा बाध्यकारी का उपयोग शुरू और रोकना है।

इसका निश्चित रूप से एक पैटर्न है, हालांकि भविष्य के लिए देखने के लिए, और यदि आप कोई आपत्ति नहीं है कभी कभी 'धोखा दे' स्थानों पर जहां आप काफी यह आंकड़ा बाहर नहीं कर सकते में बाहर की कोशिश कर रहा लायक है।

2

I agree with Jonas। एमवीवीएम ऐसा मॉडल प्रतीत होता है जो मेरे लिए सबसे अच्छा काम करता है (हालांकि जॉन पापा सोचते हैं कि एमवीपी अधिक समझ में आता है)। मार्च में आने वाले मेरे पास एक एमएसडीएन आलेख है जो उम्मीद है कि एक अच्छे उदाहरण के लिए कॉल का जवाब देगा।

बीटीडब्ल्यू, मैं एमवीवीएम फ्रेमवर्क विभाग में कुछ समेकन देखना चाहता हूं। ढांचे के लिए अभी तक पालन करने के लिए कोई अच्छा समाधान नहीं है। मुझे जोनास पसंद है (मुझे लगता है कि जोनास 'एफएक्स फ्रेमवर्क है) लेकिन चूंकि यह डब्ल्यूपीएफ संगत नहीं है, इसलिए यह कुछ के लिए सही विकल्प नहीं हो सकता है।

3

I also agree with Jonas सिल्वरलाइट के साथ एमवीवीएम के संबंध में। मुझे विश्वास है कि एमवीपी भी एक अच्छी पसंद है, लेकिन हाल ही में मेरे पास सिल्वरलाइट के साथ एमवीपी और एमवीवीएम दोनों को आजमाने का समय है और मैं एमवीवीएम के परिणामों के साथ ज्यादा खुश हूं। (हाँ, मैंने अपना दिमाग बदल दिया जितना मैंने एमवीवीएम का इस्तेमाल किया)। वीएम एमवीवीएम में दृश्य (स्पष्ट रूप से) से मॉडल के बाध्यकारी को सारणीबद्ध करता है जो एमवीपी के मुकाबले अधिक बाध्यकारी परिदृश्य (कम से कम क्लीनर तरीके) करने की अनुमति देता है। हालांकि, यह सिर्फ एक पहलू है।

मैं अपनी साइट पर दोनों एमवीपी और MVVM Silverlight के साथ के कुछ उदाहरण पोस्ट करेंगे।

2

मुझे व्यूमोडेल पैटर्न पसंद है और अत्यधिक अनुशंसा करते हैं। मेरे पास मेरे ब्लॉग पर कुछ "पोस्टमोडेल के साथ शुरू करना" पोस्ट है।

1

वहाँ एक बहुत अच्छा Techdays MVVM पैटर्न 2010 वीडियो परिचय है, स्पष्ट रूप से व्याख्या:

अधिक जटिल अनुप्रयोगों परीक्षण स्वचालित के एक उच्च स्तर की आवश्यकता है कि के लिए निश्चित रूप से समझ में आता है, और निर्भरताप्रॉपर्टीज से डेटाकॉन्टेक्स्ट बाइंडिंग में स्थानांतरित होने से एएसपी.NET समकक्ष की तुलना में बहुत साफ है।

सिल्वरलाइट के साथ मिली सबसे बड़ी चुनौती वास्तविक यूआई का परीक्षण कर रही है (अब तक एक वाणिज्यिक ढांचा है जो मुझे लगता है), और डब्ल्यूसीएफ सेवाओं (या उस मामले के लिए वेब क्लाइंट) का उपयोग करते समय आपको घटना का विशाल उलझन मिलता है) सिल्वरलाइट के साथ।

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