2009-08-26 13 views
24

मैं सरल विंडोज ऐप्स प्रोग्रामिंग कर रहा हूं। मुझे डीबी समर्थन की आवश्यकता नहीं है। WinForms के बजाय मैं WPF का उपयोग क्यों करूं?डब्ल्यूपीएफ और विनफॉर्म के बीच क्या अंतर है?

+2

शायद आपको अच्छी सलाह पाने के लिए और जानकारी प्रदान करनी चाहिए। आपका ऐप क्या करता है? –

उत्तर

10
  • सीखने के लिए।
  • अधिक से अधिक (यानी कोई हो) अपने कार्यक्रम की उपस्थिति पर नियंत्रण है करने के लिए
  • बाध्यकारी आसान डेटा का लाभ उठाने के चलाता है, शैली

(मैं नहीं दिख रहा डीबी समर्थन के साथ क्या करना मिला है क्या यह)

49

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

विकास परिप्रेक्ष्य से यह व्यावसायिक तर्क (वीबीएनईटी या सी # में) से उपयोगकर्ता इंटरफेस (एक्सएएमएल में) को अलग करने के लिए एक लंबा रास्ता तय करता है जो हमेशा एक अच्छी बात है।

"WPF बनाम WinForms" के लिए Google खोज इस समस्या पर चर्चा करने वाले बहुत से पृष्ठ लाती है। मैं उनके सभी निष्कर्षों यहाँ दोहराया जाएगा नहीं है, लेकिन this page कुछ दिलचस्प अंक उठाती है:

WPF में
  1. Databinding क्या विंडोज फॉर्म्स प्रस्तावों से बेहतर है।
  2. यूआई और सी # व्यापार तर्क सफाई से WPF में अलग किया जा सकता
  3. स्टोरीबोर्ड
  4. डेटा/नियंत्रण टेम्पलेट्स - कुछ भी की तुलना में काफी क्लीनर रास्ता विंडोज फार्म की पेशकश कर सकते हैं।
  5. शैलियां - ठंडा और सरल। एक ही दिखने और महसूस करने के लिए एप्लिकेशन में अपने सभी बटनों को स्टाइल करना इतना आसान है।
  6. भले ही वीएस डिजाइनर टूट जाए, एक्सएएमएल कोड करना आसान है।
  7. यूआई वर्चुअलाइजेशन - मुझे 100K पंक्तियों के साथ ग्रिड मिल गया है, बाजार चल रहा है। प्रदर्शन भयानक होगा यदि यह UI विज़ुअलाइज़ेशन के लिए नहीं था जो निःशुल्क आते हैं।
  8. 3 डी समर्थन।
  9. कुछ भी नहीं है वैज्ञानिक लेकिन, यूआई विकास तेज WPF में महसूस करता है - शायद इसकी सिर्फ इसलिए कि एक WPF आवेदन के अंत एक यात्रा पर कूलर, या लग रहा है शायद इसकी वजह विकास वास्तव में तेज है।
  10. मैं अपने टीम के लिए एक उपयोगकर्ता अनुभव इंजीनियर जोड़ सकते हैं, और कोई सी # ज्ञान के साथ वह अभिव्यक्ति मिश्रण में जादू काम करते हैं और सामने कार्यालय व्यापार आवेदन एक बदलाव है कि व्यापार से अधिक उपयोगकर्ताओं को जीतने के लिए गारंटी है दे सकते हैं ।
+0

आपका उदाहरण "3 डी" इस तथ्य से अमान्य है कि WInforms को OpenTK/GLControl मिलता है। कृपया इसे अपने बेतुका एक तरफा और पक्षपातपूर्ण सूची से हटा दें। – Krythic

+0

@ क्रिस्टिक मैं सिर्फ उस सूची के साथ किसी और को उद्धृत कर रहा हूं, इसलिए यह "मेरी" सूची नहीं है। और जब मैंने यह जवाब पोस्ट किया था तब से चीजें बढ़ी हैं, इसलिए कुछ पहलुओं में बदलाव हो सकता है। – ChrisF

14

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

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

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

1

यदि आप अपने previous question में पोस्ट की गई छवि जैसे समृद्ध उपयोगकर्ता इंटरफ़ेस रखना चाहते हैं, तो मैं WPF के साथ जाने की अनुशंसा करता हूं। एक अच्छा दिखने वाला एप्लिकेशन बनाने में आसान बनाने के अलावा, यह भी भविष्य में माइक्रोसॉफ्ट की तकनीक को धक्का देगी। Winforms के लिए लगभग कोई नया विकास नहीं है।

2

WPF अनुप्रयोगों की बेहतर परीक्षण क्षमताओं के बारे में कोई भी उल्लेख नहीं किया गया है (यदि वे सही तरीके से लिखे गए हैं, उदाहरण के लिए एमवीवीएम पैटर्न के आधार पर)।

4

डब्ल्यूपीएफ कुछ हद तक हार्डवेयर त्वरण का उपयोग कर सकता है, लेकिन समय के साथ सुधार होने की उम्मीद है।

इसके अलावा, एक्सएएमएल की वजह से, आपके पास "सामान करने", घोषणात्मक बनाम प्रोग्रामेटिक या दोनों के मिश्रण के लिए अधिक विकल्प हैं।

माइक्रोसॉफ्ट अब Winforms पर सक्रिय विकास नहीं करता है, वे दृढ़ता से WPF को दबा रहे हैं, और अच्छे कारण के लिए।

WPF बहुत आसान "रिज़ॉल्यूशन अज्ञेयवादी" डिज़ाइनिंग की अनुमति देता है। Winforms में यह प्राप्त करने के लिए, यह बहुत अधिक काम है।

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

3

वह WinForms और WPF के बीच सबसे महत्वपूर्ण अंतर यह तथ्य है कि WinForms मानक विंडोज नियंत्रण (जैसे टेक्स्टबॉक्स) के शीर्ष पर एक परत है, डब्ल्यूपीएफ स्क्रैच से बनाया गया है और मानक विंडोज नियंत्रण पर भरोसा नहीं करता है लगभग सभी स्थितियों में। यह एक सूक्ष्म अंतर की तरह प्रतीत हो सकता है, लेकिन यह वास्तव में नहीं है, जिसे आप निश्चित रूप से नोटिस करेंगे कि आपने कभी फ्रेमवर्क के साथ काम किया है जो Win32/WinAPI पर निर्भर करता है।

इस का एक महान उदाहरण एक छवि है और उस पर पाठ के साथ एक बटन है। यह एक मानक विंडोज नियंत्रण नहीं है, इसलिए WinForms आपको इस संभावना को बॉक्स से बाहर नहीं पेश करता है। इसके बजाय आपको छवि को स्वयं आकर्षित करना होगा, अपने स्वयं के बटन को लागू करना होगा जो छवियों का समर्थन करता है या किसी तृतीय पक्ष नियंत्रण का उपयोग करता है। WPF के साथ, एक बटन कुछ भी शामिल कर सकते हैं यह अनिवार्य रूप से सामग्री और विभिन्न राज्यों के साथ एक सीमा है, क्योंकि (जैसे अछूता, hovered, दबाया)। WPF बटन है "देखो-कम", के रूप में सबसे अन्य WPF नियंत्रण कर रहे हैं, जिसका अर्थ है कि यह इसके अंदर अन्य नियंत्रण की एक श्रृंखला शामिल कर सकते हैं। आप एक छवि और कुछ पाठ के साथ एक बटन चाहते हैं? बटन के अंदर बस एक छवि और टेक्स्टब्लॉक नियंत्रण डालें और आप कर चुके हैं! आप बस लचीलापन इस तरह का मानक से बाहर नहीं मिलता है नियंत्रण WinForms, जिसके कारण वहाँ छवियों और इतने पर के साथ बटन की तरह नियंत्रण के बजाय सरल कार्यान्वयन के लिए एक बड़ा बाजार है।

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

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

+5

कम से कम उस आलेख को लिंक करने का सौदा है जिसे आपने शब्द-शब्द-शब्द चुरा लिया है ... http://www.wpf-tutorial.com/about-wpf/wpf-vs-winforms/ – obe

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