2010-11-05 13 views
11

मैंने डब्ल्यूपीएफ का उपयोग करके एक पूर्ण परियोजना की है, और एक्सएएमएल, डाटाबेसिंग और एमवीवीएम जैसी मुख्य अवधारणाओं का एक बहुत अच्छा समझ है (कम से कम)। हमने "हाथ से" सबकुछ किया - हमने एमवीवीएम फ्रेमवर्क या थर्ड-पार्टी टूल का उपयोग नहीं किया। सभी एक्सएएमएल हाथ से भी लिखा गया था (कोई मिश्रण नहीं)।डब्ल्यूपीएफ से सिल्वरलाइट में स्थानांतरित करना: मुख्य अंतर क्या हैं?

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

तो जो मैं खोज रहा हूं, उस पर सलाह दी जाती है कि मुझे एक ट्रैवलम डब्ल्यूपीएफएर से एक ट्रैवलम सिल्वरलाइटर के रूप में जाने और समझने की आवश्यकता है। यह के रूप में हो सकते हैं:

  • जनरल सलाह
  • मुख्य अंतर
  • अंगूठे का नियम
  • संसाधन/लिंक ("एक WPFer के सिल्वरलाइट को गाइड" अधिक उचित होगा :)

किसी भी अंतर्दृष्टि के लिए अग्रिम धन्यवाद के लिए प्रमुख समस्याएं/चीजें देखने के लिए।

उत्तर

9

रोब ईसेनबर्ग (Caliburn और Caliburn Micro के निर्माता) में ब्लॉग पोस्ट की एक श्रृंखला है जो सिल्वरलाइट को एक WPF एप्लिकेशन पोर्ट करने के बारे में बात करती है। इससे आपको कुछ ढांचे के अंतर में कुछ अंतर्दृष्टि मिल सकती है।

दिवस 1 http://devlicio.us/blogs/rob_eisenberg/archive/2010/03/25/porting-nhprof-from-wpf-to-silverlight-day-1.aspx

दिवस 2 http://devlicio.us/blogs/rob_eisenberg/archive/2010/03/29/porting-nhprof-from-wpf-to-silverlight-day-2.aspx

दिवस 3 http://devlicio.us/blogs/rob_eisenberg/archive/2010/03/31/porting-nhprof-from-wpf-to-silverlight-day-3.aspx

दिवस 4 http://devlicio.us/blogs/rob_eisenberg/archive/2010/04/01/porting-nhprof-from-wpf-to-silverlight-day-4.aspx

दिवस 5 http://devlicio.us/blogs/rob_eisenberg/archive/2010/04/02/porting-nhprof-from-wpf-to-silverlight-day-5.aspx

दिन 6 http://devlicio.us/blogs/rob_eisenberg/archive/2010/04/02/porting-nhprof-from-wpf-to-silverlight-day-6.aspx

दिन 7 http://devlicio.us/blogs/rob_eisenberg/archive/2010/04/02/porting-nhprof-from-wpf-to-silverlight-day-7.aspx

दिवस 8 http://devlicio.us/blogs/rob_eisenberg/archive/2010/04/02/porting-nhprof-from-wpf-to-silverlight-day-8.aspx

मेरे सिर के ऊपर से कुछ अन्य विचार:

    को
  • बाध्यकारी चूक वन-वे
  • नहीं DynamicResource
  • TabControl है काफी अलग
  • निहित डेटा टेम्पलेट को परिभाषित करने की कोई क्षमता नहीं प्रकार
  • निर्भरता गुण में कोई CoerceValue
  • घटना मार्ग के लिए बहुत बुनियादी
  • कोई अंतर्निहित कमान संरचना है। आपके पास आईसीओएमएंड इंटरफ़ेस है, और बटनबेस नियंत्रण में कमांड प्रॉपर्टी है, हालांकि आईसीएमएंड इंटरफ़ेस लागू करने वाली कोई कक्षा नहीं है।
  • गुम x: स्टेटिक, एक्स: टाइप
  • सभी सेवा कॉल UI थ्रेड की तुलना में एक अलग थ्रेड पर होने की आवश्यकता है। यह अनिवार्य रूप से आपको एसिंक प्रोग्रामिंग रणनीतियों को सीखने/लागू करने की आवश्यकता है। here और here देखें।
  • जैसा कि बताया गया था, यह एक अलग ढांचा है इसलिए सभी पुस्तकालय आपके लिए उपलब्ध नहीं हैं। उदाहरण: कोई XmlDocument नहीं है - आपको XElement का उपयोग करना होगा (जो तर्कसंगत रूप से बेहतर है, हालांकि भी)
  • नेविगेशन ढांचा WPF से बिल्कुल अलग है। इससे दूर रहो। यह आपको केवल दर्द का कारण बन जाएगा। ;]
  • डब्ल्यूपीएफ में कोर फ्रेमवर्क में आपको मिले कई नियंत्रण आपको Silverlight Toolkit में मिलेगा। इसे डाउनलोड करें, आपको इसकी आवश्यकता होगी।
  • कोई अंतर्निर्मित ट्रिगर, हालांकि ब्लेंड एसडीके में प्रदान किए गए व्यवहार/क्रियाओं का उपयोग कर सकते हैं (जो अनिवार्य रूप से आपको एक ही चीज़ देता है)
  • यदि आपको किसी डेटाबेस से बातचीत करने की आवश्यकता है, तो उसे कहीं होस्ट की जाने वाली सेवाओं के माध्यम से होना होगा , या COM के माध्यम से (जिसका अर्थ है सिल्वरलाइट 4 ओओबी उन्नत अनुमतियों के साथ)।
  • मैं केविन से असहमत हूं कि परीक्षण वास्तव में काफी आसान है और सभी प्रमुख परीक्षण ढांचे और मॉकिंग फ्रेमवर्क सिल्वरलाइट का समर्थन करते हैं। जहां आप मुद्दों में भाग लेते हैं वह कोड कवरेज है। माइक्रोसॉफ्ट टेस्टिंग फ्रेमवर्क कोड कवरेज (प्रीमियम & ऊपर) का समर्थन करता है या अन्यथा आप dotCover का उपयोग कर सकते हैं। मेरा मानना ​​है कि एनकॉवर के नए संस्करण सिल्वरलाइट का समर्थन करते हैं हालांकि मैं 100% निश्चित नहीं हूं। कमांड लाइन से अपने सिल्वरलाइट परीक्षण (परीक्षण ढांचे के बावजूद) चलाने के लिए StatLight का उपयोग करें।
  • यदि आप पहले से ही एक आईओसी कंटेनर का उपयोग नहीं कर रहे हैं तो एक उठाएं। ऑटोफैक, निनजेक्ट, स्ट्रक्चर मैप, यूनिटी, एमईएफ।(मेरा एक और पूर्वाग्रह;])

मैं अत्यधिक उपलब्ध एमवीवीएम ढांचे को देखने का सुझाव दूंगा। इसने फ्रेमवर्क कोड का एक महत्वपूर्ण हिस्सा घटा दिया है जिसे मुझे आम तौर पर लिखना है। फ्रेमवर्क शायद आपको केवल 80% की आवश्यकता होगी, हालांकि 80% आपको खुद को लिखना नहीं था। मैं वर्तमान में कैलिबर्न माइक्रो के आंशिक हूं, हालांकि अधिकांश लोकप्रिय लोग आपको जो चाहिए उसे देंगे।

यदि मैं और अधिक सोचता हूं तो मैं और अधिक जोड़ दूंगा। आपकी यात्रा में शुभकामनाएँ!

+0

मैं उलझन में हूं "• सभी सेवा कॉल यूआई थ्रेड की तुलना में एक अलग थ्रेड पर होने की आवश्यकता है।" - मेरी समझ यह है कि सभी कॉल async होना चाहिए क्योंकि वे * यूआई थ्रेड पर हो सकते हैं। – Gabe

+0

अरे गेबे, यहां सिल्वरलाइट डब्ल्यूसीएफ टीम (अब ऊपर दिए गए जवाब में लिंक) पर एक देव टोमाज़ जांज़ुक से उद्धरण है। "सिल्वरलाइट अनुप्रयोगों में WCF प्रॉक्सी। धागा जहाँ से वेब सेवा कॉल async ईवेंट हैंडलर के आह्वान के शेड्यूल करने के लिए जब प्रतिक्रिया मिली है शुरू किया जाता है जब वेब सेवा कॉल एक सिल्वरलाइट के यूआई धागे से शुरू किया जाता है की SynchronizationContext का उपयोग एप्लिकेशन, एसिंक इवेंट हैंडलर कोड यूआई थ्रेड पर भी निष्पादित करेगा। " तो डब्ल्यूसीएफ आपके लिए यूआई थ्रेड पर वापस कॉल मार्शल करेगा। हालांकि आपको अवरुद्ध सेवा सेशन की अनुमति नहीं है। –

2

मैंने वास्तव में केवल असली ऐप के लिए सिल्वरलाइट किया है ... लेकिन मेरे सहकर्मियों में से एक बड़ा डब्ल्यूपीएफ लड़का था, और इसलिए मैंने उसकी कुछ पकड़ें सुनीं।

  • आप करने जा रहे हैं शायद, आपकी सेवा/व्यापार परत
  • आप नेट ढांचे के एक सबसेट का उपयोग कर रहे करने के लिए एक WCF सेवा, आदि, अतुल्यकालिक प्रश्नों के लिए उपयोग करने की आवश्यकता है ताकि आप शामिल नहीं कर सकते संदर्भ के रूप में आपकी कक्षा पुस्तकालयों में से कोई भी, केवल सिल्वरलाइट कक्षा पुस्तकालयों को शामिल किया जा सकता है। हालांकि, आप रजत रोशनी लाइब्रेरी में 'मौजूदा फ़ाइल से लिंक' जैसी चीजें कर सकते हैं जो कि अन्य पुस्तकालयों में फ़ाइल से लिंक होता है ... जब तक कि कोड अभी भी कम सेट के साथ संकलित हो। यह एक रखरखाव दुःस्वप्न का एक सा है, लेकिन यदि आप एक ही कोड के साथ WPF & सिल्वरलाइट कर रहे हैं, तो यह शायद आपको बहुत प्रतिकृति से बचाएगा। इसे फ़ाइल के लिए एक लिंक बनाना सुनिश्चित करें, न कि फ़ाइल की एक प्रति, या एक में परिवर्तन दूसरे को नहीं बदलेगा।
  • यूनिट आपके व्यू मॉडल्स का परीक्षण करना उतना आसान नहीं होगा। अपनी सेवा Moq की आवश्यकता है और एक सिल्वरलाइट इकाई परीक्षण परियोजना का उपयोग करें।
  • कुछ कम कार्यक्षमता WPF दिग्गजों के लिए परेशान है।
  • मुझे लगता है कि हमारे डब्ल्यूपीएफ लड़के ने अपने आदेशों पर आसानी से कैनएक्सक्यूट विधि जैसी चीजों को बांधने में सक्षम नहीं होने के बारे में शिकायत की है क्योंकि वह डब्ल्यूपीएफ में करने में सक्षम था। उसे सीधे आदेश या कुछ से विधि को कॉल करना पड़ा। (मैं केवल अब तक MVVM एक छोटे को देखने के लिए के रूप में मैं एक अलग परियोजना :(पर अब तो काफी है कि एक पर यकीन नहीं है, एक मौका मिल गया है)।

आशा है कि एक छोटे से मदद करता है।

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