क्या WinForms मर गए या मर रहे हैं?
नहीं। यह काफी आगे विकसित की है नहीं (जैसे कोई नया प्रमुख अतिरिक्त), लेकिन यह पूरी तरह से नेट 4 में समर्थित है, उदाहरण के लिए।
क्या WPF सीखने के लिए एक अच्छी तकनीक है?
हां।
क्या यह भविष्य है, सिर्फ एक चरण है, या एक तकनीक है जो WinForms के साथ हाथ में चल सकती है?
यह करना है कि आप अंत में WPF करने के लिए पर ले जाने, लेकिन यह भी समझा जाता है बड़े मौजूदा WinForms में लिखा codebases देखते हैं, और वहाँ उन्हें WPF में फिर से लिखने के लिए कोई काम नहीं है मामला है कि। इसलिए WinForms समर्थित है।
इसके अलावा, किसी भी अनुभव को सुनने के लिए अच्छा होगा, खासकर उन लोगों से जो बड़े पैमाने पर दोनों का उपयोग करते हैं। आप दोनों ढांचे में एक समान सुविधा को लागू करने के लिए कैसे मिला?
व्यापक रूप से बोलते हुए, डब्ल्यूपीएफ अधिक अभिव्यक्तिपूर्ण है। यदि आप लेगो ईंटों के सेट के रूप में ढांचे को देखते हैं जिन्हें विभिन्न तरीकों से एक साथ रखा जा सकता है, तो WinForms ईंटें बहुत बड़ी हैं - प्रत्येक व्यक्ति बहुत कुछ करता है - और इसलिए उन्हें सभी को एक साथ रखने के कम तरीके हैं। अक्सर, जब आपको किसी मौजूदा ईंट की तरह कुछ-लेकिन-बिल्कुल नहीं चाहिए, तो आपको अपना खुद का खरोंच से लिखना होगा। डब्ल्यूपीएफ में, ईंटें काफी छोटी हैं, और कई रोचक और आश्चर्यजनक तरीकों से भी जोड़ा जा सकता है।
एक ठोस उदाहरण के लिए, इस बात पर विचार करें कि WPF Button
एक कंटेनर है जो मनमाने ढंग से सामग्री होस्ट कर सकता है - न केवल छवि + टेक्स्ट WinForms में, बल्कि बिल्कुल किसी भी अन्य WPF नियंत्रण या नियंत्रण के सेट।
डब्ल्यूएनएफ WinForms की तुलना में गतिशील लेआउट लिखना भी बहुत आसान है। उत्तरार्द्ध में भी लेआउट हैं, लेकिन समस्या यह है कि वे दृश्य डिजाइनर के साथ काम करने के लिए शाही पिटा हैं, और कोड द्वारा WinForms घटक प्रारंभिक लेखन बहुत कठिन है। डब्ल्यूपीएफ के साथ, आप हाथ से एक्सएएमएल मार्कअप लिखते हैं, और लेआउट (और सामान्य रूप से पेड़ों को नियंत्रित करते हैं) एक्सएमएल में बहुत स्वाभाविक रूप से दर्शाए जाते हैं।
आंशिक रूप से ऊपर से निकलते हुए, मुझे लगता है कि WPF को स्थानीयकरण करना आसान है। एक बात के लिए, ऐसा इसलिए है क्योंकि आपको वास्तव में स्थानीयकरण के लिए गतिशील लेआउट की आवश्यकता होती है (क्योंकि आप अग्रिम में सभी लोकेशंस में तारों की लंबाई नहीं जानते हैं)। WinForms समाधान न केवल टेक्स्ट लेबल्स पर विचार करना है, बल्कि "स्थानीयकरण योग्य संपत्ति" के रूप में स्थिति और आकार को भी नियंत्रित करना है - इसलिए अनुवादक को स्वयं फॉर्म पर नियंत्रण पुनर्व्यवस्थित करना होता है यदि उसे पता चलता है कि स्ट्रिंग फिट नहीं है। डब्ल्यूपीएफ में, गतिशील लेआउट डिफ़ॉल्ट दृष्टिकोण होते हैं, इसलिए स्थानीयकरण केवल तारों से संबंधित है।
डब्ल्यूपीएफ बाध्यकारी ढांचा बल्कि शक्तिशाली है (भले ही वर्बोज़, इनलाइन कन्वर्टर्स की कमी के कारण धन्यवाद), और सामान्य रूप से एमवीपी को बढ़ावा देता है, और सामान्य रूप से, मॉडल/अलगाव को अलग करता है। 2.0+ में WinForms के साथ हासिल करना संभव है, और मैं वहां भी ऐसा करने की कोशिश करता हूं, लेकिन यह अधिक कठिन है, खासकर शून्य प्रबंधन के संबंध में, और कभी-कभी rather buggy हो सकता है।
WinForms डिजाइनर स्रोत नियंत्रण के साथ एक विशेष दर्द बिंदु है। यहां दो समान समस्याएं हैं। सबसे पहले, डिजाइनर संपादित कोड को कोड के रूप में क्रमबद्ध करता है, और कभी-कभी लेआउट में बहुत मामूली परिवर्तन डिज़ाइनर को पूरी तरह से अलग कोड उत्पन्न कर सकता है (यदि आप टूलबार संपादित करते हैं तो यह विशेष रूप से ध्यान देने योग्य है) क्योंकि यह कोड लाइनों को चारों ओर घुमाता है - यानी वास्तविकता में यह बदल गया एक पंक्ति पर एकल संपत्ति मूल्य, लेकिन यह सब कुछ भी reordered। इससे इतिहास में बहुत अधिक शोर होता है (यह कहना असंभव है कि अंतर को देखते समय वास्तव में क्या बदला गया था), लेकिन अधिक महत्वपूर्ण बात यह है कि ऐसी फाइलें विलय करना एक प्रमुख सिरदर्द है। यह आम तौर पर तब होता है जब दो लोग एक ही समय में एक ही फॉर्म के साथ काम करते हैं, और फिर कोई भी अपने परिवर्तन करता है, और दूसरा एक प्रतिबद्ध करने की कोशिश करता है, यह पता लगाता है कि उस समय फ़ाइल बदल दी गई थी, विलय करने की कोशिश करता है, diffs को देखता है, और निकटतम खिड़की से बाहर कूदता है।
जब आप WinForms स्थानीयकरण योग्य रूपों का उपयोग करते हैं, तो एक बहुत ही समान समस्या होती है, जो किसी संसाधन फ़ाइल में कुछ गुणों को धक्का देती है। दोबारा, डिजाइनर को किसी भी छोटे बदलाव के लिए संसाधन फ़ाइल में संपत्ति मूल्यों को फिर से व्यवस्थित करना पसंद है, जैसा कि पहले वर्णित सभी समस्याओं के साथ है।
अब WPF में कमियों के रूप में। एक प्रमुख यह है कि यह काफी जटिल है, और केवल WinForms, VCL, VB, या अन्य समान "पारंपरिक" ढांचे के साथ अनुभव वाले किसी व्यक्ति से अपरिचित महसूस कर सकता है। एक और समस्या यह है कि दस्तावेज, मेरी राय में, सही नहीं है - यह आमतौर पर एक सभ्य अवलोकन देता है, लेकिन शायद ही कभी कोने के मामलों को कवर करता है, जिनमें से कुछ बहुत महत्वपूर्ण हो सकते हैं। यह WinForms के लिए भी मामला है, लेकिन वहां कम संभव संयोजन हैं, इसलिए कम कोने के मामले भी हैं।
तीसरे पक्ष के घटकों का मुद्दा भी है। WinForms अब काफी समय से आसपास रहे थे, और इसके लिए बहुत सारे उपलब्ध हैं, और उनमें से बहुत सारे परिपक्व हैं। डब्ल्यूपीएफ अपेक्षाकृत युवा है और अभी भी विकास के दर्द से गुजर रहा है, और इसके लिए अधिकांश तीसरे पक्ष के समाधान भी करते हैं।
डब्ल्यूपीएफ में मेरा एक विशेष पालतू शिखर जिस तरह से एंटीअलाइसेस टेक्स्ट है - जिसे ज्यादातर लोगों द्वारा विशेष रूप से छोटे फ़ॉन्ट आकारों पर सादे विंडोज क्लियरटाइप की तुलना में बहुत खराब गुणवत्ता के रूप में माना जाता है; अधिक जानकारी के लिए this bug report देखें। यह WPF 4 में तय किया गया है, लेकिन यह अभी तक जारी नहीं हुआ है, और यहां तक कि जब भी होगा, संभावना है कि आप कुछ समय के लिए कोशिश की और सही 3.5 एसपी 1 के साथ रहना चाहेंगे; और फिक्स बैकपोर्ट नहीं किया गया है।
धन्यवाद! यह एक सही जवाब है, वास्तव में जिस तरह की जानकारी मैं ढूंढ रहा था। मैंने आपके लेगो-ईंट समानता की तरह किया था। मैं डब्ल्यूपीएफ को अनदेखा करने की कोशिश कर रहा था, लेकिन यहां टिप्पणियों ने मुझे विश्वास दिलाया है कि यह सीखना शुरू करने का समय है। – DanDan
एक साइड नोट के रूप में, किसी दिए गए एमएस तकनीक की परिपक्वता का एक अच्छा संकेत यह है कि क्या एमएस स्वयं उस तकनीक का उपयोग करता है। इस लेखन के अनुसार, एक प्रमुख एमएस उत्पाद है जो विशेष रूप से डब्ल्यूपीएफ का उपयोग करता है - अभिव्यक्ति मिश्रण, और एक आगामी प्रमुख उत्पाद जो बहुत सारे WPF का उपयोग करता है, और केवल किसी भी नए यूआई के लिए इसका उपयोग करता है, कुछ विरासत बिट्स के लिए WinForms और देशी Win32 को छोड़कर - वीएस -2010। अन्य चीजों के अलावा, इसका मतलब है कि किसी भी WPF की कमी जो उन उत्पादों को नकारात्मक रूप से प्रभावित करती है, उन्हें बहुत ध्यान मिलेगा। मुझे पता है कि वीएस -2010 के उपयोग के कारण .NET 4 के लिए कुछ डब्ल्यूपीएफ फिक्स थे :) –
वीएस -2010 को डब्ल्यूपीएफ में कोड किया गया था, और यह 2008 की तुलना में दिखता है, लेकिन आखिरी बार मैंने इसका परीक्षण किया था, यह बहुत खराब था और बदसूरत रंग थे :) –