2008-09-11 8 views
47

अधिकांश प्रोग्रामर के लिए विंडोज़ फॉर्म के साथ अधिकांश प्रतिबंध और चाल आम हैं। लेकिन चूंकि .NET 3.0 में भी WPF उपलब्ध है, विंडोज प्रेजेंटेशन फाउंडेशन। ऐसा कहा जाता है कि आप "सेक्सी एप्लिकेशन" को और अधिक आसान बना सकते हैं और .NET 3.5 SP1 के साथ इसे निष्पादन पर एक अच्छा गति बढ़ावा मिला है।एक नया जीयूआई बनाते समय, क्या डब्ल्यूपीएफ विंडोज फॉर्म पर पसंदीदा विकल्प है?

लेकिन दूसरी तरफ WPF के साथ बहुत सी चीजें अलग-अलग काम कर रही हैं। मैं नहीं कहूंगा कि यह अधिक कठिन है लेकिन आपको स्क्रैच से "सबकुछ" सीखना है।

मेरा प्रश्न: क्या आपको यह अतिरिक्त समय बिताना उचित है जब आपको एक नया जीयूआई बनाना है और परियोजना के लिए कोई समय दबाव नहीं है?

+0

क्या WPF और Winforms के बीच कोई प्रदर्शन अंतर है? – Marklar

+4

हां समय है, Winforms लगभग किसी भी चीज़ के लिए तेज़ तरीका है। –

+0

@ कैमिलो: मुझे लगता है कि आपकी टिप्पणी भ्रामक है। अधिकांश चीजों के लिए Winforms लगभग 1.2x जितना तेज़ WPF है। कुछ चीजों के लिए यह तेजी से 2x है। दूसरी तरफ, कई चीजों के लिए डब्ल्यूपीएफ वास्तव में विनफॉर्म की तुलना में तेज़ है, कभी-कभी नाटकीय रूप से ऐसा होता है (उदाहरण के लिए एनिमेशन आसानी से WPF में 10x जितना तेज़ हो सकता है)। लेकिन मुझे * कुछ भी नहीं पता है जिसके लिए विनफॉर्म डब्ल्यूपीएफ की तुलना में "तेज़ तरीका" है। –

उत्तर

72

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

क्या आपके डेवलपर्स डब्लूपीएफ का प्रभावी ढंग से उपयोग करने के लिए सीखने में समय बिताने के लिए तैयार हैं (अधिमानतः, ईएजीईआर)? मैंने कभी भी एमएफसी, या विंडोज फॉर्म, या यहां तक ​​कि अप्रबंधित डायरेक्टएक्स के बारे में यह नहीं सोचा होगा, लेकिन शायद आप एक टीम को सामान्य देव के दौरान डब्ल्यूपीएफ को "लेने" की कोशिश नहीं करना चाहते हैं। एक शिपिंग उत्पाद के लिए चक्र!

क्या कम से कम एक या दो डेवलपर्स के पास कुछ डिज़ाइन संवेदनशीलताएं हैं, और अंतिम डिजाइन प्राधिकरण वाले व्यक्तियों को विकास के मुद्दों की अच्छी समझ है, इसलिए आप वास्तव में बेहतर चीज़ बनाने के लिए WPF क्षमताओं का लाभ उठा सकते हैं, बस अधिक "रंगीन", gratuitous एनीमेशन विशेषता?

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

क्या परियोजना में कम से कम प्रस्तुति परत के लिए ग्राउंड-अप विकास शामिल है, असंगत विरासत मचान में हुक करने की कोशिश करने की अतिरिक्त जटिलता से बचने के लिए (विन फॉर्म के साथ इंटरऑप निर्बाध नहीं है)?

क्या आपका प्रबंधक चार से छह महीने के लिए डेवलपर उत्पादकता में एक महत्वपूर्ण डीआरओपी स्वीकार कर सकता है (या ध्यान से विचलित हो सकता है)?

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

आप अपने ब्लॉग पर एक प्रविष्टि में WPF से संबंधित जानकारी में गहराई से अधिक जानकारी प्राप्त कर सकते हैं:

http://missedmemo.com/blog/2008/09/13/WPFTheFizzBinAPI.aspx

+0

मुझे इस तथ्य से प्यार है कि आपने एकीकृत ग्राफिक्स चिप्स पर मुद्दों को इंगित किया है। इसने हमें एक से अधिक बार काट दिया है। दर्द, ओह, दर्द। – cplotts

+2

मुझे यह भी पसंद है कि आपने यह बताया कि आप डब्ल्यूपीएफ की "फिजबिन" प्रकृति को क्या कहते हैं। वास्तव में उन चीजों को करने के कई तरीके हैं जिन्हें जानना मुश्किल है (विशेष रूप से जब आप अभी शुरू कर रहे हैं) सबसे अच्छा तरीका क्या है। अगर मैं आपको दो अंगूठे दे सकता हूं, तो मैं चाहता हूं। अच्छा उत्तर। – cplotts

3

यदि आप केवल विंडोज का समर्थन करने की परवाह करते हैं और इसे सीखने में लगने वाले समय को ध्यान में रखते हैं, तो WPF के साथ जाएं। यह तेज़, लचीला, आसान है, और इसके साथ काम करने के लिए बहुत अच्छे उपकरण हैं।

14

मुझे लगता है कि यह डब्ल्यूपीएफ सीखने लायक है। एक बार जब आप तेजी से बढ़ जाएंगे, तो आपके फॉर्म पर डिज़ाइन का काम आईएमएचओ बहुत आसान है। मैं 'सेक्सी' सामान के बारे में ज्यादा चिंता नहीं करता। इनमें से अधिकांश सिर्फ एक फड है। आप WPF में 'सामान्य' Winforms-style अनुप्रयोगों को बहुत तेज़ी से और आसान बना सकते हैं।

पूरी अवधारणा खुद को आसान डिजाइन आईएमओ के लिए उधार देती है।

+2

मैं रिच से सहमत हूं। डब्ल्यूपीएफ की कामुकता पर जोर दिया गया है। मुझे लगता है कि यह एक महान तकनीक है जो इसे उपयोग करने के लिए कुछ बहुत ही आकर्षक तर्क प्रदान करती है ... मानक, रन-ऑफ-द-मिल व्यापार अनुप्रयोगों के लिए। – cplotts

18

WPF करने के लिए एक बहुत ही खड़ी सीखने की अवस्था है, और मैं तुम्हें स्पष्ट किताबें पहले (Adam Nathan, Sells/Griffiths, और Chris Anderson) और ब्लॉग (Josh Smith, आदि) प्राप्त सलाह देते हैं। बस इसके लिए तैयार रहें, और सुनिश्चित करें कि आपकी परियोजना आपको डब्ल्यूपीएफ सीखने का समय देती है।

प्रौद्योगिकी सीखने के अलावा, WPF अनुप्रयोगों के निर्माण के लिए उपयोग किए जाने वाले पैटर्न सीखने में कुछ समय व्यतीत करें। Model View ViewModel (एमवीवीएम) ऐसा लगता है जिसने स्वीकृति का एक बड़ा सौदा किया है।

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

4

यदि आपके पास एमएसडीएन लाइसेंस है, तो Expression tools देखें। यह स्पष्ट रूप से डब्ल्यूपीएफ के लिए डिज़ाइन किया गया है, सीधे विजुअल स्टूडियो को निर्यात करता है और यह आपके संक्रमण को कम करने में मदद कर सकता है।

11

हम वर्तमान में विंडोज़ फॉर्म से डब्ल्यूपीएफ में हमारे आवेदन को फिर से लिख रहे हैं। हां, एक सीधी सीखने की वक्र है और आपको कुछ चीजों को फिर से सीखना है, लेकिन यह इतना लायक है। और डब्ल्यूसीएफ के साथ संयुक्त, हम पाते हैं कि हम पहले से कहीं कम कोड, तेज, और अधिक मजबूत लिख रहे हैं।

थोड़ी देर के लिए इसके साथ चिपकाएं, Adam Nathan's book पढ़ें, और Telerik और ComponentOne से तीसरे पक्ष के नियंत्रण की बढ़ती लाइब्रेरी देखें। एक नकारात्मक, मेरे विचार में, यह है कि डिजाइन उपकरण, Expression Blend, उपयोग करने के लिए बहुत अजीब है। नवीनतम संस्करण अभी भी बीटा में है, लेकिन यह उन लोगों के लिए सही नहीं है जिन्होंने वर्षों के लिए विजुअल स्टूडियो का उपयोग किया है। हां, यह मुख्य रूप से डिजाइनरों के लिए है, लेकिन कुछ चीजें जो आप विजुअल स्टूडियो में नहीं कर सकते हैं।

+0

हां, "कम कोड लिखना, तेज़, और पहले से कहीं अधिक मजबूत" डब्ल्यूपीएफ अनुभव का वर्णन करने का एक शानदार तरीका है। यह वास्तव में आंख कैंडी के बारे में नहीं है। वैसे, चूंकि यह लिखा गया था अभिव्यक्ति मिश्रण जारी किया गया है, पहले से ही संस्करण 3 के लिए है, और यह उपयोग करने के लिए बहुत चालाक है - कभी भी बनाए गए किसी भी वीएस.NET डिजाइनर से बेहतर। –

+1

इस पुस्तक का एक नया संस्करण http://www.amazon.com/WPF-4-Unleashed-Adam-Nathan/dp/0672331195/ – bobobobo

3

एक साइड बोनस के रूप में, सिल्वरलाइट WPF पर आधारित है और इसके साथ शुरू करने से आप यह जान सकते हैं कि दूसरे के साथ काम करने के लिए कैसे। यदि चीजें वेब पर चलती रहती हैं, तो ब्राउजर (या विंडोज लाइव मेष) में आसानी से स्थानांतरित करने के लिए पूर्व ज्ञान (और मौजूदा कोड की लाइब्रेरी) रखने से आपके सॉफ़्टवेयर को जीवन का एक अतिरिक्त पट्टा देने में मदद मिल सकती है।

3

आप WPF साथ जाने के लिए, पक्ष-विपक्ष पहले से ही ऊपर जवाब में बताया गया है पर विचार का निर्णय लेते हैं, मैं अत्यधिक इस dnrTV episode with Billy Hollis

+0

मुझे विशेष रूप से पहले 25 मिनट या इस वीडियो का आनंद लिया गया जहां बिली होलिस दिखाता है WPF और WinForms के बीच कुछ क्षमता अंतर को बंद करें। –

2

Scott is complaining about Expression Blend और कैसे यह एक डेवलपर के रूप में उसे कोई मतलब नहीं है। अभिव्यक्ति मिश्रण के लिए मेरी पहली प्रतिक्रिया उस तरह थी। हालांकि, अब मैं इसे एक अमूल्य उपकरण के रूप में देखता हूं, लेकिन यह वास्तव में इस बात पर निर्भर करता है कि आप किस प्रकार के डेवलपर हैं।

मैं उपयोगकर्ता इंटरफ़ेस डेवलपर हूं जिसे Integrator भूमिका निभानी पड़ी है, और अंततः मुझे अभिव्यक्ति मिश्रण शैलियों को बनाने के लिए अमूल्य है, और WYSIWYG तरीके से टेम्पलेट को नियंत्रित करता है। मैं लगभग हमेशा एक ही प्रोजेक्ट पर चलने वाले अभिव्यक्ति मिश्रण और विजुअल स्टूडियो को एक ही समय में चलाता हूं।

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

अभिव्यक्ति मिश्रण उपयोगी है। बस इसे आज़माएं, खासकर यदि आप एप्लिकेशन के दृश्यों पर काम कर रहे हैं।

6

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

+0

नवंबर 200 9 में सभी कंप्यूटरों के 20-50% के बीच पहले से ही नेट फ्रेमवर्क 3.0 या ऊपर स्थापित है ताकि वे पहले से ही WPF चला सकें। जो लोग नहीं करते हैं, उनके लिए आप इसे अपनी सीडी पर शामिल कर सकते हैं या आपके एप्लिकेशन को स्थापित होने पर नेट फ्रेमवर्क क्लाइंट प्रोफाइल डाउनलोड कर सकते हैं। क्लाइंट प्रोफाइल को 256 के डीएसएल लाइन पर डाउनलोड करने में 2 मिनट लगते हैं, और आप बैंडविड्थ को माइक्रोसॉफ्ट की वेबसाइट से डाउनलोड करने के लिए सेट करके सहेज सकते हैं। –

1

एक्सएएमएल के माध्यम से घोषणात्मक यूआई के लिए डब्ल्यूपीएफ का समर्थन, समृद्ध नियंत्रण टेम्पलेटिंग और स्टाइलिंग और Expression Blend जैसे टूल, डिजाइनरों के लिए उसी परियोजना पर डेवलपर्स के साथ काम करने के लिए बहुत बेहतर बनाता है। इसके अलावा, यह डेवलपर्स को संलग्न निर्भरता गुणों और अत्यंत शक्तिशाली डाटाबेसिंग की लचीलापन देता है। इसके अलावा सिल्वरलाइट एक्सएएमएल के एक सबसेट और डब्ल्यूपीएफ के समान नियंत्रण कक्षाओं का समर्थन करता है, इसलिए आपके आवेदन को कम से कम प्रयासों के साथ RIA के रूप में पोर्ट किया जा सकता है।

मैं किसी भी दिन विंडोज फॉर्म पर WPF का चयन करूंगा। भले ही लक्ष्य मशीनों में केवल .NET 2.0 है, यदि उपयोगकर्ता अतिरिक्त प्रोग्राम इंस्टॉल कर सकता है, तो नया .NET Framework क्लाइंट प्रोफ़ाइल WPF अनुप्रयोगों को तैनात करना काफी आसान बनाता है।

विंडोज फॉर्म के साथ चिपकने का एकमात्र कारण यह है कि यदि उत्पाद लॉक हो गए हैं और केवल .NET 2.0 या .NET 1.1 है, तो उत्पाद को तैनात किया जाएगा।

5

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

मुख्य विचार यह है कि यदि आप अपने ग्राहकों को .NET 3.0 या इससे भी बेहतर .NET 3.5 SP1 स्थापित करना चाहते हैं। आपको कुछ नकारात्मक प्रतिक्रिया मिलेगी

+0

आप अपनी सीडी पर नेट फ्रेमवर्क शामिल कर सकते हैं, या आप इसे माइक्रोसॉफ्ट की वेबसाइट से 2 मिनट डाउनलोड करने के लिए सेट कर सकते हैं (256 के डीएसएल लाइन मानते हैं)। किसी भी मामले में, इसे आपके एप्लिकेशन की स्थापना के हिस्से के रूप में स्थापित किया जा सकता है। यह ClickOnce के साथ भी काम करता है। –

+1

मेरे पास 2 एम डीएसएल है और पूरे सेटअप में आम तौर पर आधे घंटे लगते हैं जब यह मेरी (आमतौर पर क्लीन इंस्टॉल) XP मशीनों पर क्रैश नहीं होता है। –

+0

मेरा अनुभव यह रहा है कि XP ​​पर क्लाइंट प्रोफाइल (3.5 SP1) स्थापित करने से डाउनलोड सहित 5 मिनट लगते हैं। अभी तक यह हमेशा कोई समस्या के साथ स्थापित किया गया है। आपको कुछ धीमा करने के बारे में कुछ विचार: 1. आप क्लाइंट प्रोफाइल के बजाय पूर्ण रूपरेखा स्थापित कर रहे हैं, 2. आपके आईएसपी में माइक्रोसॉफ्ट सर्वर और कैशिंग के लिए खराब बैंडविड्थ है, 3. आपकी स्थानीय मशीन विंडोज अपडेट या अन्य सॉफ़्टवेयर करने में व्यस्त है अपडेट, 4. आपकी स्थानीय बैंडविड्थ संतृप्त है (जैसे ऑडियो/वीडियो स्ट्रीमिंग)। –

7

कई अंतर हैं। हम डब्ल्यूपीएफ के लिए प्यार करते थे:

  1. प्रोग्रामिंग की घोषणात्मक शैली।
  2. एनिमेशन और राज्य संक्रमण
  3. अभिव्यक्ति मिश्रण के लिए एक महान उपकरण
  4. अच्छा शैली समर्थन है।

हालांकि, हम विंडोज फार्म के साथ फंस क्योंकि:

  1. अतिरिक्त समय यह एक डेवलपर के लिए ले जाता है WPF जानने के लिए जब वे पहले से ही Windows Forms पता ।
  2. डब्ल्यूपीएफ विंडोज 2000 या पर नहीं चलेंगे।
+6

क्या विंडोज 2000 इतना महत्वपूर्ण है ?? मेरा मतलब है, उस पुरातात्विक ओएस में कितने लोग फंस गए हैं? –

+0

ऐसा इसलिए है क्योंकि माइक्रोसॉफ्ट पुराने नोटबुक और पीसी के लिए कुछ विशेष स्कूल संस्करण (विंडोज 2 के) को प्रायोजित कर रहा है - मुझे लगता है कि प्रोजेक्ट का नाम ताजा स्टार्ट है ... –

+0

हाँ, कम से कम WinXP ... Win2000 ?! चलो! –

51

जैसा कि अन्य ने कहा है, वैसे भी फायदे और नुकसान हैं जो आप यहां जाते हैं। WPF के फायदे, के रूप में अन्य लोगों ने कहा, शामिल हैं:

  • क्षमता UI के अपेक्षाकृत आसानी से बहुत अमीर बनाने के लिए।
  • आसान एनीमेशन और विशेष प्रभाव
  • निहित क्षमता (एक WPF आवेदन पर Windows Vista   ताल उपकरण का उपयोग, और एक विंडोज पर आवेदन फॉर्म्स: ध्यान दें कि WPF आवेदन में, सभी वेक्टर आर्ट तराजू खूबसूरती से)
  • (राय चेतावनी) मुझे लगता है कि यह "आसान"

हालांकि, वहाँ WPF, जहां Windows Forms शीर्ष पर बाहर आता है करने के लिए कमियां हैं WPF में दस्तावेज़-ओरिएंटेड प्रणाली करना है:

  • डब्ल्यूपीएफ का इन-बॉक्स कंट्रोल सूट विंडोज फॉर्म की तुलना में कहीं अधिक सीमित है।
  • विंडोज फॉर्म के लिए तीसरे पक्ष के नियंत्रण स्थान में अधिक समर्थन है। (यह निश्चित रूप से बदल रहा है, लेकिन इसके बारे में सोचें: विंडोज फॉर्म 2001 से आसपास रहे हैं; डब्ल्यूपीएफ कुछ ही साल। समय के लाभ के साथ, विंडोज फॉर्म के समुदाय में अधिक समर्थन है।)
  • अधिकांश डेवलपर्स पहले ही विंडोज फॉर्म जानते हैं ; WPF एक नया सीखने की अवस्था प्रदान करता है

अंत में, मन में भालू है कि आप भी टूल, महान आकर्षक और आकर्षक UI के बना सकते हैं, अगर आप काम करने के बाद (या तीसरे पक्ष के उपकरणों का उपयोग करें)। दिन के अंत में, सभी परिस्थितियों में न तो बेहतर है। प्रोजेक्ट के लिए सही महसूस करें का प्रयोग करें।

+10

आपका बयान है कि "डब्ल्यूपीएफ का इन-बॉक्स कंट्रोल सूट WinForms से कहीं अधिक सीमित है" गलत समझा जा सकता है। डब्ल्यूपीएफ का इन-बॉक्स कंट्रोल सूट WinForms से * दूर * अधिक कर सकता है क्योंकि हर नियंत्रण को टेम्पलेट किया जा सकता है और यह मल्टी-उद्देश्य है। WinForms में लगभग हर चीज सीधे सरल WPF के लिए मानचित्र। मूल WPF रिलीज (नेट फ्रेमवर्क 3.0) में फिर भी तीन कार्यों को याद किया गया था कि WinForms ने बनाया था: डेटटाइम पिकर, न्यूमेरिक अपडाउन, डेटाग्रिड। सभी तीन आसान डाउनलोड हैं, साथ ही नवीनतम WPF (3.5 SP1) ने पैकेज में डेटाग्रिड जोड़ा है। –

+1

इसके अतिरिक्त व्यक्तिगत WinForms नियंत्रण की कुछ विशेषताएं मौजूद नहीं हैं, जैसे टेक्स्टबॉक्स के लिए ऑटोकंपलेट। इस समय तक (नवंबर 200 9), इन सभी के लिए ब्लॉग पर आसान समाधान पोस्ट किए गए हैं। तो WinForms का चयन करने का कोई कारण नहीं है क्योंकि डब्ल्यूपीएफ में कोई नियंत्रण गुम है। और यदि डब्ल्यूपीएफ में एक विक्रेता द्वारा आपूर्ति किए गए नियंत्रण को याद किया गया है, तो आप अभी भी उस नियंत्रण के लिए WinForms एकीकरण का उपयोग कर सकते हैं। –

+3

मेरे लिए, डब्ल्यूपीएफ का सबसे बड़ा लाभ इसके डेटा बाध्यकारी, टेम्पलेटिंग और लेआउट हैं। –

62

डब्ल्यूपीएफ या तो विंडोज   Vista या Windows XP SP2 की आवश्यकता है, जो एक कठिन आवश्यकता नहीं है, लेकिन यह एक प्रासंगिक है। यदि आप विंडोज 2000 (जो कुछ लोग अभी भी करते हैं) पर चलाना चाहते हैं, तो WPF आपके लिए काम नहीं करेगा।

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

कहा जा रहा है, हाँ WPF भविष्य है। विजुअल स्टूडियो 2010 को डब्ल्यूपीएफ में फिर से लिखा जा रहा है, जो शायद आज तक का सबसे बड़ा डब्ल्यूपीएफ एप्लीकेशन होगा और यह प्रौद्योगिकी के लिए एक वास्तविक परीक्षण भी होगा।

जाहिर है, विरासत विंडोज फॉर्म एप्लिकेशन एक और स्थिति होगी जहां यह सही विकल्प है।

+0

क्या आपके पास उस वीएस -2010 जानकारी के लिए एक लिंक है? – karlipoppins

+1

बस दृश्य स्टूडियो के लिए Google 2010 WPF कुछ उदाहरण: http://demiliani.com/blog/archive/2008/10/28/6520.aspx http://ayende.com/Blog/archive/ 2008/10/27/विजुअल-स्टूडियो -2010.aspx –

+0

तब मुझे लगता है कि एमएस ने ऐसा करने तक इंतजार करना सबसे अच्छा है, सबक सीखा है, सभी निगल्स को ठीक किया है और उन सभी एक्सटेंशन को जोड़ा है जिन्हें उन्हें अच्छी तरह से काम करने के लिए आवश्यक है। – gbjbaanb

18

दोनों प्रौद्योगिकियों के पास उनके पेशेवर और विपक्ष हैं। एक "क्लासिक" यूआई के साथ एक बड़े आवेदन में मैं विंडोज फॉर्म का उपयोग करता हूं। एक ऐसे एप्लिकेशन में जिसमें एक समृद्ध उपयोगकर्ता इंटरफ़ेस (स्किनिंग, एनिमेशन, उपयोगकर्ता इंटरफ़ेस बदलना) की आवश्यकता होती है, मैं WPF चुनूंगा। कृपया WP12 और Windows प्रपत्रों की तुलना में आलेख WPF vs. Windows Forms देखें।

+0

लिंक के लिए +1। जोश के पास NY टाइम्स रीडर समेत सफलतापूर्वक विकसित WPF परियोजनाओं के साथ बहुत वास्तविक जीवन अनुभव है। –

9

यदि इंटरफ़ेस डिज़ाइन आपके लिए महत्वपूर्ण है, तो WPF पर विचार करें, क्योंकि डब्ल्यूपीएफ बेहतर यूआई अनुभव प्रदान कर सकता है। लेकिन विंडोज़ फॉर्म के विकास के वर्षों में इसके पक्ष में है, इसलिए यह काम करने के लिए साबित हुआ है और आप उस मंच के लिए कई छंद प्रोग्रामर पा सकते हैं।

पोर्टेबिलिटी भी एक मुद्दा हो सकता है, डब्ल्यूपीएफ केवल विंडोज   XP SP2 और ऊपर के साथ काम करता है।

इसके अलावा, डब्ल्यूपीएफ के पास एक सीधी सीखने की वक्र है, जिसका अर्थ है कि विशिष्ट WPF अनुभव के बिना गुणवत्ता वाले उत्पाद को वितरित करना आसान नहीं है।

8

ठीक है, एक जवाब है "जब आपको 1.1 या 2.0 का समर्थन करना होगा", क्योंकि WPF .NET 3.0 का हिस्सा है। WPF के लिए ज्ञात ओएस सीमाएं हैं, और एक स्पष्ट कौशल समस्या है: यदि आपके पास डेवलपर्स की एक टीम है जो Winforms को जानती है, तो Winforms के साथ मजबूत कोड को चालू करना आसान हो सकता है। हालांकि, अगर आप बहुत सारे यूआई कोड लिख रहे हैं तो शायद कुछ बिंदु पर डब्ल्यूपीएफ लेने की शुरुआत करना उचित है।

डब्ल्यूपीएफ सिल्वरलाइट के साथ बहुत आम साझा करता है, इसलिए इसमें स्थानांतरण योग्य लाभ हैं।

5

डब्ल्यूपीएफ डिज़ाइनर के कपड़ों में डेवलपर नहीं, वास्तविक डिजाइनर के रूप में फॉर्म डिज़ाइन कार्य को बंद करना अधिक आसान बनाता है। अगर ऐसा कुछ है जो आप करना चाहते हैं, तो डब्ल्यूपीएफ आपका जवाब है। यदि क्लासिक विंडोज स्टाइल बटन ठीक हैं, तो विंडोज फॉर्म शायद जाने का तरीका है।

(एकाधिक उत्तर का दावा है कि आप WPF का उपयोग करना चाहिए अगर इंटरफेस डिजाइन "आप के लिए महत्वपूर्ण" है, लेकिन यह बहुत अस्पष्ट है बनाते हैं। इंटरफेस डिजाइन हमेशा होता है "महत्वपूर्ण"।)

+1

यदि क्लासिक विंडोज स्टाइल बटन ठीक हैं, *** और आप प्लंबिंग *** लिखने और डिबगिंग करने में बहुत अधिक समय बिताना चाहते हैं, तो WinForms शायद जाने का तरीका है। एक बार महारत हासिल करने के बाद, डब्ल्यूपीएफ WinForms की तुलना में विकास के लिए और भी अधिक कुशल है क्योंकि इसकी समृद्ध डेटा बाध्यकारी और डेटा टेम्पलेट्स, कमांड आर्किटेक्चर, संलग्न गुण इत्यादि हैं। यह सच है भले ही आपको दृश्य स्टाइल की परवाह न हो। –

+1

"डिजाइनर के कपड़ों में एक डेवलपर" - जेब रक्षक और एक कछुए? –

8

WPF ऐसी शानदार के रूप में कई फायदे के साथ आता है डेटा सुविधाओं, चिंताओं के जुदाई, डिजाइन और तर्क आदि के अलग होने के लिए बाध्य ...

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

Windows के निजी तौर पर मुझे परवाह नहीं है पुराने संस्करणों समर्थित नहीं हैं, लेकिन WPF के साथ बड़ी समस्याओं में से एक है कि नहीं है (वर्तमान में/कभी) मोनो (http://www.mono-project.com) तो WPF क्षुधा नहीं चलेंगे द्वारा समर्थित है है मैक ओएस या लिनक्स पर। (अल्टो सिल्वरलाइट अनुप्रयोग)।

यदि आपके पास WPF सीखने में निवेश करने के लिए समय और संसाधन हैं, तो इसे करें! भले ही आप कई ओएस का समर्थन करने के लिए सिल्वरलाइट अनुप्रयोग लिखने जा रहे हैं।

यदि आपको एसडब्ल्यूएफ के साथ कई ओएस स्टिक पर चलाने के लिए डेस्कटॉप एप्लिकेशन की आवश्यकता है।

+1

"डब्ल्यूपीएफ कई फायदों के साथ आता है जैसे कि शानदार डेटा बाइंडिंग फीचर्स, चिंताओं को अलग करना, डिज़ाइन और तर्क आदि को अलग करना ..." सहमत हुए। डब्ल्यूपीएफ फैंसी दिखने से कहीं ज्यादा प्रदान करता है। यह बेहतर वास्तुकला विकल्प प्रदान करता है। –

+0

यह मेरे लिए बड़ा विभाजन है। मैं अपने अनुप्रयोगों में से एक के "2.0" में अपग्रेड कर रहा हूं और जबकि WPF के साथ मेरा प्रारंभिक प्रयोग अद्भुत रहा है, मैं चाहता हूं कि ऐप क्रॉस प्लेटफॉर्म हो, इसलिए मैं मोनो का लाभ उठाने के लिए विनफॉर्म का उपयोग करके 2.0 करने जा रहा हूं। इससे मुझे डब्ल्यूपीएफ –

13

मैं यहां कुछ जवाबों से सहमत नहीं हूं। डब्ल्यूपीएफ वास्तव में line of business (LOB) अनुप्रयोगों के लिए उपयुक्त है। (मेंढक डिजाइन LOB क्लाइंट सबसे अच्छा उदाहरण है)। और आपकी यूआई को आंख कैंडी होने की सभी संभावनाओं के अलावा (जो व्यावसायिक अनुप्रयोगों में आवश्यक नहीं है), डब्ल्यूपीएफ आपके लिए बहुत कुछ प्रदान करता है।

डेटा बाइंडिंग और टेम्पलेटिंग सुविधाएं विंडोज फॉर्म से बेहतर हैं। यह कोड और प्रस्तुति को अलग करने के लिए एक बेहतर तरीका भी प्रदान करता है। हमने 2-3 से अधिक डेवलपर्स वाले टीमों में 2 LOB अनुप्रयोगों के लिए सफलतापूर्वक WPF का उपयोग किया है।

सबसे बड़ी समस्या जिसका आप सामना करेंगे, शायद डब्ल्यूपीएफ (विंडोज़ फॉर्म की तुलना में) की सीधी सीखने की वक्र है जो विकासशील गति को कम करेगा जो डेवलपर्स के साथ डब्ल्यूपीएफ नहीं है।

+1

में अपने अन्य ऐप्स को फिर से लिखने से नहीं रोका जाएगा, मुझे सहमत होना होगा ... सीखने की अवस्था खड़ी है, लेकिन यह निश्चित रूप से लंबे समय तक भुगतान करती है। मैंने डब्ल्यूपीएफ के साथ शुरुआत की और कभी पीछे नहीं देखा। – TimothyP

0

रूपांतरण परियोजनाओं के लिए (Visual Basic 6.0 से), डब्ल्यूपीएफ पर स्विच करने के लिए टीम को प्राप्त करना मुश्किल है। सीखने की अवस्था के अलावा, लोगों को पहले से ही पुराने इंटरफ़ेस में उपयोग किया जाता है। विंडोज फॉर्म, हालांकि चरणबद्ध हो रहा है, अभी भी लंबे समय तक होगा।

+0

उन टीमों को डब्ल्यूपीएफ को अस्वीकार करने का अधिकार है। एक वीबी 6-> डब्ल्यूपीएफ "रूपांतरण" वास्तव में एक पुनर्लेखन होगा, और माइक्रोसॉफ्ट के अनुसार स्वचालित रूपांतरण से "कहीं अधिक महंगा और कठिन" होगा। यहां संदर्भ http://stackoverflow.com/questions/395/how-to-switch-a-large-app-from-vb6-to-vb-net/82200#82200 – MarkJ

148

WPF पर line-of-business (LOB) एप्लिकेशन को हथियाने की कोशिश करने के तीन महीने बाद, मैं अपने प्रोजेक्ट के लिए विंडोज फॉर्म पर वापस जाने पर विचार करने के मुद्दे पर पहुंच गया, और अन्य लोगों की राय पर शोध करने के लिए, इस धागे में आया ...

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

व्यापारिक तर्क से जीयूआई को अलग करने के मामले में डब्ल्यूपीएफ हल करने वाली "समस्याएं" ऐसी समस्याएं नहीं हैं जिन्हें विंडोज़ फॉर्म में आसानी से सही वास्तुकला और दिमागी सेट से शुरू नहीं किया जा सकता है। यहां तक ​​कि WPF की ऑब्जेक्ट-पथ बाध्यकारी क्षमताओं को विंडोज़ फॉर्म में कुछ बहुत ही सरल सहायक कक्षाओं के साथ पुन: उत्पन्न किया जा सकता है। डब्ल्यूपीएफ की डेटा टेम्पलेट क्षमताओं बहुत अच्छी हैं, लेकिन फिर वे कुछ भी नहीं हैं जिन्हें आप उन दुर्लभ अवसरों पर विंडोज फॉर्म में अनुकरण नहीं कर सकते हैं जब आप पूरी तरह से नहीं जानते कि आप किस वस्तु का प्रतिनिधित्व किसी भी भाग पर प्रस्तुत करने जा रहे हैं स्क्रीन।

जहां विंडोज़ फॉर्म रेस आगे परिपक्वता के मामले में है। आप कुछ ब्लॉग को मारने के बिना Google पर एक मृत बिल्ली को स्विंग नहीं कर सकते हैं, जहां किसी ने आपके लिए विंडोज़ फॉर्म समस्या हल की है। दूसरी ओर, डब्ल्यूपीएफ, तुलनात्मक रूप से कम सीखने के संसाधन उपलब्ध हैं, कम कस्टम नियंत्रण उपलब्ध हैं, और इसकी कई समस्याएं हल नहीं हुई हैं।

विंडोज़ फॉर्म बनाम डब्ल्यूपीएफ बनाने की चोटी पर विकास पर्यावरण की परिपक्वता होनी चाहिए। विंडोज फॉर्म संपादक धीमे, उत्तरदायी और सहज हैं। त्रुटियों के बारे में प्रतिक्रिया तुरंत आपको मिलती है, समाधान आमतौर पर स्पष्ट होते हैं, और संकलन-> डीबग-> विंडोज़ फॉर्म में संपादित चक्र बहुत तेज़ है।

दूसरी तरफ, डब्ल्यूपीएफ अनुप्रयोगों की तुलनात्मक रूप से दयनीय डिजाइन समय समर्थन है, डिजाइन के दृश्य के साथ सभी को एक त्रुटि के पहले मुठभेड़ में चिकन के लिए तैयार है, अक्सर डिजाइनर के ठीक पहले एक परियोजना निर्माण की आवश्यकता होती है फिर से लात मारने के लिए तैयार हैं। टूलबॉक्स से घटकों के ड्रैगड्रॉप को भी समर्थित नहीं किया जा सकता है, जिसमें परिस्थितियों की विस्तृत श्रृंखला दी गई है, जिसके अंतर्गत यह बिल्कुल काम नहीं करता है, या पूरी तरह से अनजान परिणाम उत्पन्न करता है। WpfToolkit के वादे के बावजूद, अभी भी WPF के लिए उपयोग करने योग्य डेटाग्रिड नहीं है जो कि किसी भी तरह के resonable प्रदर्शन या डिजाइन समय मित्रता पैदा करता है।

डिबगिंग WPF अनुप्रयोगों वर्ष ASP.NET डीबगिंग प्रतिमान की तरह एक सा ... हिट F5 है -> इंतजार -> लांच -> त्रुटि -> बंद -> ठीक -> मारा F5 -> प्रतीक्षा करें -> लॉन्च -> त्रुटि -> ग्रोन -> स्टॉप -> फिक्स -> हिट एफ 5 .... आपके प्रोग्राम चल रहे सभी एक्सएएमएल लॉक हैं, और एक्सएएमएल विशिष्ट समस्याओं को ट्रैक करना अक्सर कठिन होता है।

लब्बोलुआब यह है, बस रखा, जो Windows प्रपत्र के लिए विकास उपकरण आप एक WPF आवेदन के समय के एक अंश में बाहर सामने समाप्त होता है की पिटाई की है ... विशेष रूप से आप बना रहे हैं तो जा रहे हैं मास्टर-विस्तार ग्रिड या इंटरफेस की तरह स्प्रेडशीट, जो अधिकांश LOB है। विंडोज फॉर्म के साथ, आप पहले से ही किए गए 90% काम से शुरू करते हैं।

मैं WPF आर्किटेक्चर का एक बड़ा प्रशंसक हूं। मैं बस डिज़ाइन-टाइम टूल-सेट की इच्छा पूर्व-अल्फा डीबग-बिल्ड की तरह महसूस नहीं करता था।


संपादित करें: इस उत्तर के बारे में .NET 3.5 + दृश्य   स्टूडियो   2008, लेकिन एक WPF डेटा ग्रिड के साथ दृश्य स्टूडियो 2010 जहाजों के साथ .NET 4.0 तैनात थे। जबकि नए डब्ल्यूपीएफ विकास अनुभव में कई सुधार किए गए हैं, मेरा जवाब यहां अपरिवर्तित बनी हुई है, और मैं निम्नलिखित सुझाव जोड़ना चाहता हूं:

यदि आप RAD विकास करने के लिए दौड़ में हैं, तो विंडोज फॉर्म के साथ जाएं । यदि आप एक अच्छी तरह से आर्किटेक्टेड, रखरखाव योग्य, स्केलेबल, संसाधन अग्निशामक, बहु-उपयोगकर्ता लाइन-ऑफ-बिजनेस एप्लिकेशन का उत्पादन करना चाहते हैं, तो एएसपी.नेट एमवीसी + एचटीएमएल 5 + jQuery पर विचार करें ... इन तकनीकों के साथ मेरी परियोजनाओं के परिणामस्वरूप बेहतर हो गया है परिणाम, जल्द ही, मेरे ग्राहकों के लिए। एमवीसी सभी समान टेम्पलेटिंग प्रदान करता है जो डब्ल्यूपीएफ करता है, और jQuery एनिमेशन और जटिल इंटरैक्शन को सक्षम बनाता है। सबसे महत्वपूर्ण बात यह है कि, एएसपी.नेट एमवीसी + jQuery समाधान के लिए आपके अंतिम उपयोगकर्ताओं को सभ्य ग्राफिक्स हार्डवेयर के साथ आधुनिक डेस्कटॉप की आवश्यकता नहीं होती है।

+33

+1 अधिक सहमत नहीं हो सका, यह हमेशा होता है किसी ऐसे व्यक्ति से सुनना अच्छा है जिसने वास्तव में असली दुनिया में और असली दुनिया के दबाव के साथ तकनीक की कोशिश की है। डब्ल्यूपीएफ शायद 5 साल में उत्कृष्ट होगा जब उपकरण और डेवलपर्स अंत में पकड़े गए हैं। और WinForms अभी भी तब भी आसपास होगा। – Ash

+2

डेटाग्रिड नियंत्रण WPF 3.5 SP1 में कॉलम वर्चुअलाइजेशन का समर्थन करता है। इससे प्रदर्शन समस्याओं को हल करना चाहिए। –

+0

अतीत में बहुत से एएसपी 3 और एएसपी.नेट किए जाने के बाद, मैं एक्सआईएमएल के साथ अपने यूआई को डिजाइन करने की क्षमता का स्वागत करता हूं। मैं UI को देखता हूं क्योंकि मैं xaml टाइप करता हूं (मेरे सिर में) और मेरे लिए यह यूआई डिज़ाइनरों की तुलना में बहुत तेज़ है ... हालांकि मैं एक डेवलपर हूं जो डिज़ाइनर नहीं है ताकि यह थोड़ा सा समझा सके – TimothyP

24

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

डब्ल्यूपीएफ के साथ मेरा पहला LOB एप्लिकेशन एक पूर्ण विफलता के रूप में समाप्त हुआ, क्योंकि यह एक संसाधन हॉग था जो मेरे अंत उपयोगकर्ता के बहुत कम अंत लैपटॉप को रोक दिया गया था ... और अंत में क्योंकि मैं बस lept WPF + LINQ to SQL के साथ और एक अच्छा परिणाम अपेक्षित ... और यह वह जगह है जहां डब्ल्यूपीएफ विंडोज फॉर्म से इतनी दृढ़ता से अलग हो जाता है ... विंडोज़ फॉर्म में, आप उस तरह की चीज से दूर हो सकते हैं। विंडोज़ फॉर्म की तुलना में डब्ल्यूपीएफ संसाधनों पर बहुत अधिक भारी है, और यदि आप अपने आवेदन को दुबला होने के लिए आर्किटेक्ट नहीं करते हैं, तो आप 800 पाउंड गोरिल्ला के साथ समाप्त होते हैं।

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

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

+2

वापस आने, इसे फिर से देखने और अपने अनुभव को साझा करने के लिए धन्यवाद। मैं इसकी सराहना करता हूं। –

+0

मैंने सटीक अनुभव किया है। दुर्भाग्य से मुझे अभी तक WPF के साथ ऐसे LOB ऐप को वास्तव में कार्यान्वित करने के बारे में पर्याप्त सटीक जानकारी नहीं मिली है। डिजाइनरों के पूरक के लिए तकनीकी परिप्रेक्ष्य रखने के लिए – Marc

15

एक तरफ यूआई डिजाइन में लचीलापन से, कुछ तकनीकी फायदे WPF करने के लिए कर रहे हैं:

1.) WPF GDI वस्तुओं पर निर्भर नहीं करता। खैर, मुझे लगता है कि यह विंडो के उदाहरण के लिए 2 जीडीआई ऑब्जेक्ट्स का उपयोग करता है, लेकिन यह व्यावहारिक रूप से कुछ भी नहीं है। मैं एक बहुत बड़े आंतरिक विंडोज फॉर्म एप्लिकेशन में कुछ हद तक शामिल रहा हूं। हमारे कार्यालय में लोग कभी-कभी इसके 3 या 4 उदाहरण चलाते हैं। समस्या यह है कि वे अक्सर विंडोज 2000, एक्सपी और विस्टा के निहित 10,000 जीडीआई ऑब्जेक्ट सीमा में भाग लेते हैं। जब ऐसा होता है तो पूरा ओएस उत्तरदायी नहीं होता है और आप दृश्य कलाकृतियों को देखना शुरू कर देंगे। इसे साफ़ करने का एकमात्र तरीका एप्लिकेशन को बंद करना है।

2.) डब्ल्यूपीएफ जीपीयू का उपयोग करता है। जीपीयू को यूआई प्रोसेसिंग को बंद करने के लिए डब्ल्यूपीएफ की क्षमता शानदार है। मैं केवल समय के साथ बेहतर होने के लिए इस पहलू की उम्मीद करता हूं। एक ओपनजीएल प्रोग्रामिंग शौकिया के रूप में मैं जीपीयू से आने वाली शक्ति की सराहना कर सकता हूं। मेरा मतलब है, मेरे $ 100 वीडियो कार्ड में 112 कोर प्रत्येक 1.5 गीगाहर्ट्ज पर चल रहे हैं (और यह किसी भी माध्यम से लाइन के शीर्ष पर नहीं है)। उस तरह की समांतर प्रसंस्करण शक्ति किसी भी क्वाड-कोर सीपीयू को शर्मिंदा कर सकती है।

हालांकि, डब्ल्यूपीएफ अभी भी काफी नया है। यह विंडोज 2000 पर नहीं चलेगा। और वास्तव में, एक ताजा रीबूट के बाद शुरू करने के लिए एक WPF एप्लिकेशन धीमा हो सकता है।मैं इस बारे में अपने ब्लॉग पर इस बारे में बात करता हूं: http://blog.bucketsoft.com/2009/05/wpf-is-like-fat-super-hero.html

+0

+1। –

+0

ब्याज से, क्या जीडीआई + इन बिंदुओं पर कोई असर पड़ता है? – JBRWilkinson

+0

हाय स्टीव। ग्रेट प्वाइंट्स, हालांकि मैंने अपने ऐप के कई उपयोगकर्ताओं को उन इंटेल "नकली" जीपीयू चिप्स के साथ लैपटॉप चला रहे थे, जो कि WPF छिद्रण को समाप्त नहीं करते थे, जीपीयू चीज पर मेरे सिर पर टक्कर लगी। – Mark

84

मैं अपने ग्राहक के लिए अब एक कोर सिस्टम बनने के लिए WPF का उपयोग करने में सात महीने का हूं, और मैं आपके बारे में कुछ और विचार साझा करना चाहता हूं व्यवसाय प्रस्तुति मंच की एक पंक्ति के रूप में सीखने और WPF का उपयोग करने का अनुभव।

आम तौर पर, ऊपर दी गई टिप्पणियां अभी भी पकड़ती हैं ... WPF के लिए डिज़ाइन टाइम समर्थन अभी तक नहीं है। यदि आप दरवाजे से समृद्ध-क्लाइंट एप्लिकेशन प्राप्त करने के लिए बड़ी भीड़ में हैं, तो विंडोज फॉर्म के साथ जाएं। अवधि। माइक्रोसॉफ्ट जीडीआई/विंडोज फॉर्म प्लेटफॉर्म को बंद करने के लिए जल्दबाजी में नहीं है, इसलिए आप भविष्य में उचित समय के लिए अच्छे समर्थन पर भरोसा कर सकते हैं।

WPF मास्टर करना आसान नहीं है, लेकिन यह नहीं होना चाहिए कि आप अपना समय और ऊर्जा सीखने के लिए डब्ल्यूपीएफ सीखने के बारे में नहीं कहें। परिपक्वता की वर्तमान कमी के बावजूद, डब्ल्यूपीएफ कुछ उपयोगी, आधुनिक अवधारणाओं के आसपास बनाया गया है।

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

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

ये सब "फैंसी कुछ भी नहीं" व्यावसायिक अनुप्रयोगों के लिए करने के लिए अविश्वसनीय रूप से मूल्यवान सुविधाओं को जोड़ने के राज्य , बस क्योंकि वे अंतर्निहित डेटा के साथ इंटरफेस को संगत रखना आसान बनाते हैं।

संक्षेप में:

  • Windows में फॉर्म्स आप अपने यूजर इंटरफेस डिजाइन, तो लिखने कोड ड्राइव करने के लिए है कि यूजर इंटरफेस है, जो आम तौर पर भी अपने डेटा वस्तुओं ड्राइव करने के लिए कोड भी शामिल है।
  • डब्ल्यूपीएफ में आप उस व्यापार परत में निवेश करते हैं जो आपके डेटा ऑब्जेक्ट्स को चलाता है, फिर को आपकी डेटा ऑब्जेक्ट्स में सूचीबद्ध करता है।

यह एक सूक्ष्म अंतर है, लेकिन यह कोड का पुन: उपयोग करने की आपकी क्षमता में एक बड़ा अंतर बनाता है ... जो सवाल पूछता है: "क्या विंडोज फॉर्म बनाम WPF वास्तव में एक निवेश निर्णय है?"

(यह मेरी पसंदीदा धागा बन गए हैं लगता है।)

+1

यह वास्तव में एक निवेश है, जब आप अपना पहला WPF-application करते हैं। मुझे लगता है कि पहले डब्ल्यूपीएफ-प्रोजेक्ट्स में से अधिकांश, पूर्व WinForms प्रोग्रामर द्वारा किए गए और अनुमानित देर हो जाएंगे। मेरी राय में डब्ल्यूपीएफ सीखना अच्छा है, लेकिन सवाल यह है कि यदि आपका नियोक्ता वैसे ही सोचता है .. – SwissCoder

74

कोई बाध्यकारी कारण WPF

बिल्कुल उपयोग करने के लिए कर रहे हैं! डब्ल्यूपीएफ बिल्कुल अविश्वसनीय है! व्यावहारिक रूप से किसी भी प्रोजेक्ट के लिए यह एक बड़ा लाभ होगा क्योंकि इसमें विंडोज़ फॉर्म की इतनी सारी सुविधाएं और क्षमताएं हैं।

व्यावसायिक अनुप्रयोगों के लिए सबसे बड़ी जीत होगी:

  • शानदार डेटा बाइंडिंग और templating सबसे बड़ा अंतर कर सकते हैं। एक बार एक सभ्य डेटा मॉडल होने के बाद, डेटा टेम्पलेट बनाने के लिए केवल कुछ क्लिक लगते हैं और Expression Blend का उपयोग करके यह सुनिश्चित करने के लिए कि आपकी ऑब्जेक्ट ड्रैग-एंड-ड्रॉप का उपयोग कैसे करेगी। और रंग या आकार जैसी चीज़ों के लिए बाध्यकारी मामूली है।
  • स्क्रीन लेआउट अविश्वसनीय रूप से लचीला है। न केवल डब्ल्यूपीएफ में सब कुछ कंटेनर आकार और आकार में परिवर्तनों को आसानी से समायोजित कर सकता है, लेकिन वस्तुओं को छोटा रूप से बढ़ाया जा सकता है और घुमाया जा सकता है, और यहां तक ​​कि उनके युक्त फ्रेम के बाहर भी विस्तार किया जा सकता है।
  • सामान्य वस्तुओं को किसी भी तरह से प्रस्तुत किया जा सकता है, अलग-अलग स्क्रीनों में आसानी से अलग प्रस्तुतियां हो सकती हैं, प्रेजेंटेशन साझा कर सकती हैं, और डेटा प्रस्तुतियों में बदलाव के लिए अपनी प्रस्तुति को अनुकूलित कर सकती हैं।
  • यदि आपको प्रिंट करने की आवश्यकता है, प्रिंटर को प्रतिपादन छोटा है। उचित रूप से कॉन्फ़िगर किया गया, डब्ल्यूपीएफ Crystal Reports या SQL Server Reporting Services (एसएसआरएस) एक बच्चे के खिलौने की तरह दिखता है।
  • आपका यूजर इंटरफेस अधिक गतिशील दिखता है और महसूस करता है, जिसमें अच्छी विशेषताएं शामिल हैं जैसे कि जब आप माउस को पार करते हैं तो एनिमेट करते हैं।

उपयोगिताओं और खेल के लिए, अन्य लाभ सबसे आगे आते हैं:

  • आप आसानी से एक बाहरी संपादक का उपयोग कर के बिना अपने आवेदन करने के लिए आकार, लाइनों, और मनमाने ढंग से चित्र जोड़ सकते हैं। इनमें से प्रत्येक घटक डेटा-बाध्य और एनिमेटेड हो सकता है, या कोड द्वारा नियंत्रित किया जा सकता है। विंडोज़ फॉर्म में आपको औपचारिक रूप से बस एक बिटमैप आयात करना होता है और इसका उपयोग तब तक करना होता है जब तक कि आप बहुत सारे काम पर नहीं जाना चाहते हैं।
  • एनिमेशन शांत हैं! जब तक आप इसे अधिक नहीं करते हैं, तब तक उपयोगकर्ता वास्तव में प्रभावित होंगे। वे लोगों को यह देखने में भी मदद कर सकते हैं कि क्या हो रहा है और हाइलाइटिंग की आवश्यकता को कम करता है। उदाहरण के लिए, किसी ऑब्जेक्ट को खींचते समय आप यह दिखाने के लिए लक्ष्य को एनिमेट कर सकते हैं कि क्या होगा यदि आप इसे छोड़ दें।
  • रंग, ढाल भरने, ब्रश, फैंसी फोंट, किसी भी वस्तु का घूर्णन, टाइल ब्रश इत्यादि। जो भी आप ग्राफिकल रूप से चाहते हैं वह पूछने के लिए आपका है।
  • अविश्वसनीय रूप से अनुकूलन योग्य। मुझे एक आवेदन के लिए रेलरोड ट्रैक खींचने की जरूरत थी, इसलिए मैं उन पर एक ट्रेन छोड़ सकता था। कुछ घंटों बाद मेरे पास रेलरोड ट्रैक थे, मैं Bézier curves का उपयोग कर स्क्रीन पर कहीं भी आकर्षित कर सकता था, और वे स्वचालित रूप से शामिल हो जाएंगे और स्विच करेंगे।

नीचे की रेखा यह है कि आप किसी भी महत्वपूर्ण आकार के जीयूआई को विंडोज फॉर्म में बना सकते हैं, जिसे प्रयास के तीसरे (या कम) में WPF में बनाया जा सकता है और रास्ता बेहतर तरीके से दिख सकता है।

WPF अधिक संसाधनों की आवश्यकता (विशेष रूप से रैम)

आप एक मूल्य विंडोज रूपों की तुलना में भुगतान करते हैं, लेकिन यह एक छोटे से एक है।

  • रैम आपके कार्यान्वयन के आधार पर ऊपर या नीचे जा सकता है। डब्ल्यूपीएफ अपने डेटा को अधिक कुशलता से स्टोर करता है इसलिए अलग-अलग ऑब्जेक्ट छोटे होते हैं, लेकिन विंडोज़ फॉर्म की तुलना में डब्ल्यूपीएफ में अधिक ऑब्जेक्ट होते हैं, इसलिए यह शेष होता है, और कोई भी आगे आ सकता है।
  • सीपीयू विंडोज फॉर्म की तुलना में बढ़ेगा। मेरे अनुभव में, ऑन-स्क्रीन पर डब्ल्यूपीएफ ऑब्जेक्ट्स का वास्तविक अपडेट सामान्य विंडोज फॉर्म प्रतिपादन के रूप में लगभग दोगुनी सीपीयू लेता है। यदि आपका एप्लिकेशन स्क्रीन को अपडेट करने में अपना अधिकांश समय बिताता है, तो WPF आपके लिए नहीं हो सकता है।लेकिन उस स्थिति में आप शायद विंडोज फॉर्म का उपयोग नहीं कर रहे हैं: सबसे गंभीर गेम सीधे DirectX पर लिखे गए हैं।
  • डब्ल्यूपीएफ के लिए डिस्क उपयोग थोड़ा कम होगा क्योंकि यह विंडोज फॉर्म की तुलना में बहुत कम कोड लेता है। डेटा निश्चित रूप से एक ही आकार होगा। CPU उपयोग के बारे में

एक और ध्यान दें: एनिमेशन और रूपांतरण (गति, अनुवाद, आदि) वास्तव में अपने को बनाए रखा मोड भंडारण की वजह से विण्डोज़ फॉर्म्स की तुलना में WPF पर और अधिक कुशल है। यह उन वस्तुओं की प्रारंभिक हो रही है जो धीमे हैं।

रखरखाव उपरि

WPF एक विशाल विण्डोज़ फॉर्म्स से हराया जब यह रखरखाव के लिए आता है। चूंकि सबकुछ 1/5 जितना पहले कोड में किया जाता है, वहां बनाए रखने के लिए 1/5 जितना अधिक होता है। इसके अलावा सभी बॉयलरप्लेट सामान चले गए हैं ताकि आप उस कोड पर ध्यान केंद्रित कर सकें जो वास्तव में काम करता है।

XAML

XAML के लाभ WPF की मूल है। हालांकि एक्सएएमएल के बिना डब्ल्यूपीएफ का इस्तेमाल किया जा सकता है, एक्सएएमएल इसे उपयोग करने में अविश्वसनीय रूप से आसान बनाता है। एक्सएएमएल में एचटीएमएल की यूजर इंटरफेस को आसानी से निर्दिष्ट करने की क्षमता है, लेकिन इसके अंतर्निहित टैग अधिक शक्तिशाली हैं, और आप आसानी से अपना खुद का परिभाषित कर सकते हैं। (वास्तव में, ऐसा करना सामान्य है)।

XAML के कुछ विशिष्ट फायदे:

  • आपके पूरे यूआई एक पाठ फ़ाइल पढ़ सकते हैं और हेरफेर करने के लिए, दोनों उपयोगकर्ताओं और उपकरण
  • MarkupExtensions बाइंडिंग एक स्पष्ट में निर्दिष्ट किया जा करने की अनुमति के लिए आसान है कि में परिभाषित किया गया है और सरल तरीका
  • प्रकार कनवर्टर्स जटिल प्रकारों वाले गुणों को आसानी से निर्दिष्ट करने की अनुमति देते हैं। उदाहरण के लिए, आप ब्रश = "ग्रीन" कह सकते हैं या आप तीन स्टॉप के साथ रेडियल ग्रेडिएंट ब्रश निर्दिष्ट कर सकते हैं।
  • आप अपनी खुद की तत्वों बना सकते हैं
  • आप आसानी से WPF के शक्तिशाली "संलग्न गुण"

अन्य अंतर्दृष्टि

मैं कई वर्षों के लिए WPF की तरह कुछ का सपना देखा लाभ उठा सकते हैं। कई लोगों ने इस कार्यक्षमता के हिस्सों को लागू किया है, लेकिन इसे एक ही स्थान पर प्राप्त करने के लिए और इस तरह की कीमत ($ 0) अद्भुत है।

डब्ल्यूपीएफ विंडोज फॉर्म से एक विशाल प्रतिमान बदलाव है और कुछ लोगों को इसका उपयोग करने में लगेगा, लेकिन सीखने में समय लगेगा कि यह खुद को कई गुना भुगतान करेगा।

डब्ल्यूपीएफ में अभी भी पांच साल बाद कुछ मौसा हैं, लेकिन इसका अनुभव होने के बाद इसकी शक्ति आपको पूरी तरह से उड़ा देगी। अगर कोई आपको विंडोज फॉर्म पर वापस खींचने का प्रयास करता है, तो आप केवल लात मारकर चिल्लाएंगे।

सुझाव: - हाथ से संपादित XAML क्या कभी कभी - - विकास के लिए अभिव्यक्ति मिश्रण की एक प्रति प्राप्त करते हैं हार नहीं माने जब वह पहली बार

+0

»जिसमें अच्छी विशेषताएं शामिल हैं जैसे कि जब आप माउस को पार करते हैं तो एनिमेट करते हैं« आप का मतलब है कि विंडोज किसी भी सामान्य बटन के लिए करता है पहले से भी? – Joey

+3

@ जोहान्स: नहीं, मैं नहीं करता हूं। सभी विंडोज़ बटन पर एक हाइलाइट डालते हैं (और यहां तक ​​कि यह केवल तभी काम करता है जब यह एक सादा-वेनिला बटन है)। डब्ल्यूपीएफ बहुत दूर कर सकता है। उदाहरण के लिए, एक बटन में एक दरवाजा आइकन हो सकता है जो आपके ऊपर होवर करते समय खुलता है, या यूआई में कहीं भी सम्मिलन सूचक दिखाई दे सकता है। यह अतिरिक्त समृद्धि व्यवसाय अनुप्रयोग में बहुत उपयोगी है क्योंकि यह उपयोगकर्ता उत्पादकता को बढ़ाती है। –

3

पिछले 3 1/2 साल के लिए पर अजीब लगती है मैं विंडोज फॉर्म डेवलपमेंट कर रहा हूं (दो कंपनियों में)। दोनों अनुप्रयोगों का व्यापक रूप से उपयोग किया जाता था और जीडीआई समस्याओं के साथ समाप्त हो गया था।बड़े विंडोज़ फॉर्म एप्लिकेशन अंततः जीडीआई संसाधनों से बाहर हो जाएंगे - जिससे अंतिम उपयोगकर्ता को रीबूट करना होगा।

2

एक उद्धरण an earlier post from Mark से:

  • विंडोज में आप अपने यूजर इंटरफेस डिजाइन फॉर्म्स, तो उस यूजर इंटरफेस है, जो आम तौर पर भी अपने डेटा वस्तुओं ड्राइव करने के लिए कोड भी शामिल है ड्राइव करने के लिए कोड लिखें।
  • डब्ल्यूपीएफ में आप उस व्यवसाय परत में निवेश करते हैं जो आपके डेटा ऑब्जेक्ट को चलाता है, फिर एक इंटरफ़ेस डिज़ाइन करता है जो आपकी डेटा ऑब्जेक्ट्स को सुनता है।

मैं का तर्क था कि यह एक डिजाइन पसंद का अधिक है, के बजाय या नहीं, आप Windows प्रपत्र या WPF का उपयोग कर रहे हैं। हालांकि, मैं इस बात की सराहना कर सकता हूं कि कुछ विशेष तकनीक किसी विशेष दृष्टिकोण के लिए बेहतर हो सकती हैं।

3

WPF में पाठ प्रतिपादन के साथ एक ज्ञात समस्या है। कई उपयोगकर्ता रिपोर्ट करते हैं कि एंटी-एलियासिंग और पिक्सेल-ब्लेंडिंग का भारी उपयोग धुंधला पाठ का कारण बनता है। यह कुछ परिस्थितियों में एक बड़ा सौदा ब्रेकर है और जहां तक ​​मुझे पता है, माइक्रोसॉफ्ट द्वारा कुछ स्तर पर स्वीकार किया गया है।

+9

यह .NET 4 में तय किया गया है - लोगों को प्रोत्साहित करने के लिए http://blogs.msdn.com/text/archive/2009/08/24/wpf-4-0-text-stack-improvements.aspx –

1

आप WPF विशेषज्ञता नहीं है सिर्फ अगर और आप निवेश करने के लिए नहीं करना चाहते हैं यह :) में

+2

-1 देखें ऐसा लगता है कि डब्ल्यूपीएफ में निवेश नहीं करना वास्तव में एक वैध विकल्प है। –

+2

मुझे लगता है कि हर कोई मेरा जवाब गलत व्याख्या कर रहा है, मैंने कहा "आप डब्ल्यूपीएफ में निवेश नहीं करना चाहते हैं" जिसका मतलब यह नहीं है कि "डब्ल्यूपीएफ में निवेश न करें। क्या वह? – akjoshi

+0

मैं इसे निर्णय लेने के लिए एसओ उपयोगकर्ताओं को छोड़ दूंगा। – akjoshi

0

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

तो, यहां एक उदाहरण:

मैं एक प्रक्रिया के अनेक चरणों और सब कुछ प्रतिलिपि प्रस्तुत करने योग्य बनाने (बुद्धिमान ouput बनाने, कुछ डाउनलोड करने की गणना/परिवर्तित करने, की तरह) के माध्यम से पता लगाने के लिए की जरूरत है, मैं आमतौर पर एक त्वरित फार्म बनाने के लिए, एक सूची बॉक्स और कुछ बटन के साथ, किया।

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

0

WPF का उपयोग करके आप अपने आवेदन को काफी हद तक अनुकूलित करने के साधन प्रदान करते हैं। आप बहुत तेज़ी से कोड कर सकते हैं, यानी, सेकेंड के भीतर टेक्स्टबॉक्स जैसे कस्टमाइज़ेशन कंट्रोल बनाएं और कंटेंट स्टाइल इत्यादि जैसे विभिन्न गुणों को कस्टमाइज़ करें, और सबसे अच्छा हिस्सा यूआई सौंदर्य, यानी एनिमेशन, ट्रिगर्स इत्यादि ग्राफिक्स है। लेकिन यह अच्छा हार्डवेयर विशिष्टताओं और कुछ विशेष केवल Windows   विस्टा और विंडोज   7.

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

विंडोज फॉर्म और डब्ल्यूपीएफ एक साथ विभिन्न प्रजातियां हैं, यह सब परियोजना आवश्यकताओं पर निर्भर करता है, यानी ग्राहक या उपयोगकर्ता क्या चाहता है।

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