2009-03-12 18 views
20

एक ब्रांड नए एप्लिकेशन के लिए, क्या विंडोज़ फॉर्म पर डब्ल्यूपीएफ का उपयोग करना बेहतर है? मैंने पहले विंडोज फॉर्म का इस्तेमाल किया लेकिन ज्यादा WPF नहीं था। जहां तक ​​मुझे पता है, डब्ल्यूपीएफ विंडोज फॉर्म के उत्तराधिकारी है, है ना?क्या विंडोज़ फॉर्म पर डब्ल्यूपीएफ का उपयोग करना बेहतर है?

एप्लिकेशन कस्टम नियंत्रण के साथ डायरेक्टएक्स विंडोज (WPF 3 डी नहीं, लेकिन Managed DirectX और SlimDX) होस्ट करने जा रहा है।

संपादित करें: आवेदन एक 3 डी संबंधित है आवेदन, संपादक, जैसे modo:

Image created using the 3D painting program modo.

+0

यह वास्तव में निर्भर करता है .... क्या आप हमें अपने आवेदन के बारे में अधिक पृष्ठभूमि दे सकते हैं? – Brann

+0

डुप? http://stackoverflow.com/questions/388711/when-is-winforms-the-correct-choice-vs-wpf –

+6

डुप्लिकेट नहीं - इसमें 3 डी/डायरेक्टएक्स है। –

उत्तर

11

---- संपादित 2 -----

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

----- मूल ---------

यदि आप डीएक्स की मेजबानी करने जा रहे हैं, तो आप इसे विचार करना चाहेंगे - खासकर जब से यह आपको अपने यूआई के साथ दृश्य संरचना करने की क्षमता देता है और यदि आप कोई एयरस्पेस समस्या नहीं करते हैं D3DImage का उपयोग करें।

यह स्लिम डीएक्स और डब्ल्यूपीएफ के साथ काम करता है।

---- संपादित करें -----

Winforms साथ Direct3D का उपयोग करने का नुकसान, और WPF/DX एकीकरण के फायदे के बारे में अधिक जानकारी के लिए देखें:

MSDN Article on Airspace

Codeproject arcticle on intro to D3DImage

+2

धन्यवाद। एयरस्पेस क्या है? –

4

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

मैंने WinForms में कुछ कस्टम नियंत्रण लेखन किया है और यह समय पर बहुत चुनौतीपूर्ण हो सकता है। लेआउट वास्तव में आपसे कुछ समय दूर ले जाएगा। WinForm नियंत्रण लेआउट में मेरे जीवन के कई सप्ताहांत का भुगतान किया गया था। डब्ल्यूपीएफ में समकक्ष नियंत्रण लिखना एक सिंच था।

1

AFAIK WPF WinForms का उत्तराधिकारी है, है ना?

मुझे विश्वास नहीं है कि एमएस इसे जितना संभव हो उतना सच है। Winforms पर लिखा गया बहुत ही विरासत कोड है जिसके लिए निकट या यहां तक ​​कि कुछ दूर भविष्य में यथार्थवादी चीज बनना है।

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

+0

वैसे, Vista XP के उत्तराधिकारी थे, लेकिन यह सभी Vista प्लेटफॉर्म को निष्क्रिय करने के लिए नहीं था। डब्ल्यूपीएफ का उद्देश्य एमएस द्वारा उसी जगह को पूरा करते हुए WinForms के मूलभूत सिद्धांतों को संशोधित करने के लिए किया गया था। – DevinB

+0

आपको आश्चर्य होगा, मुझे लगता है! –

17

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

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

ओह हाँ, और कुछ लापता नियंत्रणों के लिए कुछ डॉलर खोलने के लिए तैयार रहें। डेट पिकर की तरह कुछ चीजें गायब हैं और पेड़ नियंत्रण पर चेकबॉक्स हैं (आप वास्तव में इसे टेम्पलेट कर सकते हैं, लेकिन यह उस संबंध में Winforms जितना आसान नहीं है)। 3.5 एसपी 1 में अब ग्रिड नियंत्रण शामिल है, शुक्र है।

मुझे यकीन है कि मुझे एक गुच्छा अधिक याद आ रही है, लेकिन यही वह है जो मैं अपने सिर के ऊपर से आ सकता हूं।

शुभकामनाएं!

+0

डेटपिकर और डेटाग्रिड दोनों WPF टूलकिट का हिस्सा हैं, जिसके लिए .NET 3 की आवश्यकता है।5SP1। http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22567 – Andy

+0

अपडेट: डब्ल्यूपीएफ में अब बहुत सारे नए नियंत्रण हैं http://weblogs.asp.net/scottgu/archive/2009/10/26/ wpf-4-vs-2010-and-net-4-0-series.aspx – gideon

3

हम अभी भी इसके माध्यम से गए ... हमने WinForms पर WPF पर एक कदम शुरू किया। मुझे लगता है कि इन दिनों WinForms आपके पीछे रखना एक बहुत ही आसान निर्णय है। टूलींग बेहतर और बेहतर हो रही है और यदि आप अपनी टीम पर एक सच्चे डिजाइनर प्राप्त कर सकते हैं तो बहुत कम चीजें हैं जिन्हें आप एक साथ नहीं रख सकते हैं।

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

2

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

आपने WinForms के लिए कोई विशेष संबंध नहीं छोड़ा है (मुझे लगता है कि परिचितता के आधार पर क्या है)। आपको अंततः स्विच करने की आवश्यकता होगी। प्रक्रिया शुरू करने के लिए एक नई परियोजना एक महान जगह होगी, बाकी सबकुछ बराबर होगा।

2

हाल ही में एक बहुत ही समान उत्पाद (WPF में खनन डेटा के लिए 3 डी दर्शक) करने के बाद मैं निश्चित रूप से WPF/SlimDX की अनुशंसा कर सकता हूं।

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

3.5SP1 से D3DImage का उपयोग करना एक नियंत्रण में स्लिम डीएक्स डिवाइस होस्ट करना बहुत आसान है।

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

6

मुझे पता चला कि एक बार जब मुझे अभिव्यक्ति मिश्रण और डब्ल्यूपीएफ पर एक संभाल मिला तो मैं विंडोज फॉर्म के मुकाबले यूआई बनाने में अधिक उत्पादक था। मेरे दिमाग में यह एक नई तकनीक/उपकरण के साथ सबसे बड़ा कारक नहीं है; यदि आप नए उपकरण के साथ पुराना उपकरण तेज़ परिणाम के समान परिणाम नहीं दे सकते हैं तो सभी घंटियाँ और सीटी, जो कि आप केवल 10% समय का उपयोग करते हैं, इसके लिए तैयार नहीं होंगे।

अलावा अन्य लाभ WPF फार्म खत्म हो गया है देखते हैं कि:

  • होने XAML में इंटरफ़ेस यह इतना ठीक धुन करने के लिए आसान उन सभी अस्पष्ट गुण या कट जाता है और एक की एक पूरी अनुभाग पेस्ट करना होगा बनाता है दूसरे में नियंत्रण,

  • डब्ल्यूपीएफ नियंत्रण द्वारा स्क्रीन नियंत्रण को तोड़ने, एक इंटरफ़ेस को मॉड्यूलर करने के लिए बहुत आसान बनाता है। फॉर्म एक हद तक ऐसा ही कर सकते हैं लेकिन मुझे हमेशा यह एक लड़ाई मिली,

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

1

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

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

16

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन मुझे लगता है कि यह अभी भी एक वैध सवाल है।

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

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

तो, क्या WinForms या WPF में अपना प्रोग्राम लिखना बेहतर है? इसका जवाब यह है: डब्ल्यूपीएफ। मैं इसे दो कारणों से कहता हूं। सबसे पहले, क्योंकि माइक्रोसॉफ्ट आंतरिक रूप से इसका समर्थन कर रहा है, हम मान सकते हैं कि यह बहुत ही आसपास होगा लंबे समय से। माइक्रोसॉफ्ट ने हमें दिखाया है कि यह पसंद का अगला टूल है जो मुझे मेरे अगले बिंदु पर ले जाता है: यह WinForms से बेहतर हो गया है (कुछ लोगों को मैंने असहमत होने के लिए कहा है, लेकिन फिर भी यह सच है, और यह और स्पष्ट हो रहा है हर दिन)। डब्ल्यूपीएफ में कई विशेषताएं हैं जो WinForms (शायद) कभी नहीं दी जाएंगी, जैसे कि एकीकृत समर्थन अद्भुत डेटा बाइंडिंग, और टाइमलाइन आधारित एनिमेशन जो इसे बनाता है अपने ऐप्स के लिए अद्भुत थीम बनाना आसान है, और डिज़ाइनर स्विच करने के लिए भीख मांगेंगे।किसी टिप्पणी में कभी भी वर्णित किए जाने के मुकाबले डब्ल्यूपीएफ के लिए बहुत कुछ है, लेकिन ये मेरे लिए दो बड़े हैं :)

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

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

जल्द या बाद में, मेरा मानना ​​है कि WinForms के लिए समर्थन और विकास बंद हो जाएगा, और जो लोग खुद को पीछे छोड़ देते हैं उन्हें बंदरगाह और जल्दी से मजबूर किया जाएगा। हालांकि, वहां बहुत सारे कार्यक्रम हैं जो माइक्रोसॉफ्ट के लिए WinForms पर भरोसा करते हैं ताकि वे निकट भविष्य में इसे छोड़ सकें। कौन जानता है कि क्या होगा। शायद WinForms माइक्रोसॉफ्ट के लिए होगा जो इटेनियम प्रोसेसर इंटेल के लिए हैं, उत्पाद जिसमें पर्याप्त उपयोगकर्ता हैं जो इसे जारी रखने के लिए हैं, भले ही बेहतर समाधान उपलब्ध हों। (http://arstechnica.com/business/news/2011/06/ask-ars-why-itaniumask-ars-with-xeons-improvement-why-bother-with-itanium.ars)

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

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

+0

+1 अच्छी पोस्ट ... – Trap

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