Windows GUI: WPF या WinRT (2015+)


94

मैं विंडोज वर्ल्ड में GUI के निर्माण के समय विभिन्न तकनीकों का अवलोकन प्राप्त करने की कोशिश कर रहा हूं।

संदर्भ के लिए, मैं थोड़ा 2d प्लेटफ़ॉर्म मल्टीप्लेयर गेम बना रहा हूं। (सिर्फ सीखने के उद्देश्य के लिए ..)

मेरे शिक्षक का कहना है कि उन्हें लगता है कि WPF जाने का सही तरीका है, लेकिन ऐसा लगता है कि वह इसकी तुलना केवल विंडोज फॉर्म से करते हैं।

मेरी समझ में यह है, कि यहां 2015 में, विंडोज फॉर्म पूरी तरह से मर चुके हैं?

इस अन्य स्टैकओवर प्रश्नों में, वे कहते हैं कि WinRT + XAML मेट्रो जीयूआई बिल्डिंग (विंडो 8 टाइल्स) के लिए है, और ऐसा लगता है कि WPF केवल विंडो 7/8 में डेस्कटॉप के लिए उपयोग किया जाता है और सिल्वरलाइट से संबंधित हैं।

विंडोज 8 रनटाइम (WinRT / विंडोज स्टोर ऐप्स / विंडोज 10 यूनिवर्सल ऐप) की तुलना सिल्वरलाइट और WPF से कैसे की जाती है?

  • डेस्कटॉप वह जगह है जहां पुराने ऐप्स रहते हैं (लाल। WFP)।
  • नई श्रेणी के एप्लिकेशन, मेट्रो एप्लिकेशन, VB.NET, C # या C ++ सहित कई तरीकों से बनाए जा सकते हैं। ये तीन भाषा विकल्प UI के निर्माण के लिए XAML का उपयोग कर सकते हैं। विकल्प यूआई और एप्लिकेशन कोड दोनों के विकास के लिए जावास्क्रिप्ट / एचटीएमएल 5 / सीएसएस का उपयोग करना है।

मेरा असली सवाल है: क्या विंडो वर्ल्ड में GUI का निर्माण करने का एक अच्छा तरीका नहीं है?

और यदि नहीं, तो कौन सी प्रौद्योगिकियों को विंडो 7, विंडो 8 (डेस्कटॉप और मेट्रो), विंडो फोन, (और विंडोज 10!) और यहां तक ​​कि एक्स-बॉक्स पर भी उपयोग करना चाहिए।

क्या इसकी तुलना इस तरह की जाने वाली विभिन्न तकनीकों से की जा सकती है?

आपको क्या लगता है कि इसमें निवेश करने के लिए सही चीज़ क्या है?


5
"WPF या WinRT?" दोनों जानें, डेस्कटॉप के लिए WPF, मोबाइल उपकरणों के लिए Windows रनटाइम। इन तकनीकों में कई चीजें समान हैं, जैसे XAML और एक बहुत ही समान रूपरेखा। आप ऐसे कोड भी लिख सकते हैं जो दोनों प्लेटफॉर्म को पोर्टेबल क्लास लाइब्रेरी के रूप में सपोर्ट करता है।
क्लेमेंस

2
@Clemens अंतिम बिट थोड़ा भ्रामक है। मानक .NET पुस्तकालयों को WinRT ऐप्स के साथ काम करने के लिए फिर से बनाया / लक्षित किया जाना है, जिसमें कुछ वर्गों के लिए कोड परिवर्तन की आवश्यकता हो सकती है।
ब्राडलीडॉटनेट

3
Windows प्रपत्र पूरी तरह से मृत नहीं है, लेकिन आप शायद इसका उपयोग नहीं करना चाहते हैं जब तक कि आप पहले से परिचित नहीं हैं।
केसी

2
"Windows GUI में वर्तमान रहना" का आपका उद्देश्य मेरे विचार में हानिकारक है। लंबी अवधि में औसत डेवलपर के लिए इसमें थोड़ा भविष्य है। MS ने GUI के लिए कई बार अपने टूल्स बदले हैं जबकि JavaScript और HTML5 ग्राउंडिंग में बने रहे। यदि आप जीवित रहने के लिए विकास कर रहे हैं तो बाकी सब भूल जाइए। इसके कुछ अपवाद, यदि आप MS, या GUI 3rd पार्टी विक्रेता के लिए काम कर रहे हैं या पुराने कोड को बनाए रखने के लिए तैयार हैं।
NoChance

3
यहां तक ​​कि MFC पूरी तरह से मृत नहीं है, और Win32 भी नहीं है। लेकिन एक खेल के लिए MFC क्या एक madmen चुनेंगे है
लोथर

जवाबों:


132

यहाँ बहुत कुछ है, लेकिन यहाँ जाता है:

  • क्या विंडोज फॉर्म (Winforms) मृत है ? नहीं, यह अभी भी सक्रिय रूप से समर्थित है। इसने कहा, इसकी एक भयानक तकनीक काम करने के लिए है (कम से कम एक बार जब आप WPF का जादू जानते हैं)
  • यदि आप एक अच्छे दिखने वाले, अच्छी तरह से डिज़ाइन किए गए डेस्कटॉप (क्लासिक, मेट्रो नहीं) ऐप का निर्माण करना चाहते हैं , तो WPF शुद्ध .NET शब्दों में जवाब है। आप कर सकते हैं (जैसे कि उनके सॉकेट वर्ग के रूप में) WinRT API का उपयोग लेकिन आप उन्हें OS के पर नहीं चल सकता से पहले Windows 8 यूआई अभी भी WPF है।
  • WinRT एप्स विंडोज 8 स्टोर के लिए हैं (वे विंडोज 10 स्टोर में भी उपलब्ध हैं)। आप यहां डेस्कटॉप पर WPF, या WinRT का उपयोग नहीं कर सकते हैं, इसलिए जहां आप तैनात करते हैं वह निर्धारित करता है कि आप क्या उपयोग करते हैं। आप उपलब्ध भाषाओं / तकनीकों की अपनी समझ में सही हैं।
  • विंडोज फोन 8 (अब पदावनत) WinRT के एक संशोधित रनटाइम का उपयोग करता है (यह विंडोज 10 में बदल गया है)। Win8 / WP8 के लिए, आप एक मानक WinRT ऐप और एक विंडोज़ फोन ऐप के बीच अधिकांश कोड साझा करने के लिए "यूनिवर्सल" ऐप्स का उपयोग कर सकते हैं ।
  • विंडोज 10 यूनिवर्सल विंडोज प्लेटफॉर्म (यूडब्ल्यूपी) का उपयोग करता है जो .NET कोर पर आधारित है। विंडोज 10 के लिए विकसित कोड का उपयोग Xbox One, Windows Phone 10 और HoloLens पर भी किया जा सकता है। WPF अभी भी "मानक" डेस्कटॉप ऐप्स के लिए है।
  • XBox मुश्किल है। XNA चला गया है, और Microsoft प्लेटफ़ॉर्म के लिए समुदाय द्वारा बनाई गई सामग्री से दूर जा रहा है। उस ने कहा, यूनिटी 3 डी एक्सबॉक्स को तैनात कर सकता है, और मेरा मानना ​​है कि इसके लिए मानक डायरेक्टएक्स (सी ++) विकास कार्य करता है। यूनिवर्सल विंडोज प्लेटफॉर्म ऐप को एक्सबॉक्स वन पर भी तैनात किया जा सकता है, और यह माइक्रोसॉफ्ट की रणनीति को आगे बढ़ाता है।

जहाँ तक समय व्यतीत करने का है, जो इस बात पर निर्भर करता है कि आप क्या लक्ष्य बना रहे हैं :)। WPF / UWP + XAML सीखने से आपको बहुत सारे लाभ मिलेंगे यदि आप .NET GUI डेवलपमेंट में "करंट" बने रहना चाहते हैं, तो मैं इसके लिए तैयार हो जाऊंगा। डब्ल्यूपीएफ में सबसे अधिक विशेषताएं हैं, इसलिए वहां शुरू करने से आपको यूडब्ल्यूपी (या किसी अन्य एक्सएएमएल आधारित तकनीक) में जो कुछ भी याद नहीं है, उसके लिए आपको केवल कार्यपत्रक ढूंढना होगा।

यदि आप ऐसा करते हैं, तो MVVM (मॉडल-व्यू-व्यू मॉडल) पैटर्न सीखना सुनिश्चित करें। यह XAML आधारित प्रौद्योगिकियों के साथ वास्तव में अच्छी तरह से काम करता है , और आपको अपने WPF और UWP अनुप्रयोगों के बीच बहुत सारे तर्क साझा करने की अनुमति देता है। यदि आप अंततः iOS / Android, आदि के लिए Xamarin अनुप्रयोगों को विकसित करते हैं तो उसी तर्क का भी उपयोग किया जा सकता है।

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


जवाब के लिए धन्यवाद, मेरे पास मेरे मिनी गेम की शुरुआत XNA से हुई है, इसलिए मुझे यह सुनकर खेद है कि वे इसे हटा देंगे। लेकिन मैं आगे देख रहा हूं कि विंडोज 10 हमें क्या लाएगा।
अल्फ नीलसन

@AlfNielsen मुझे यकीन नहीं है कि समर्थन का अंत कब है, लेकिन यह निश्चित रूप से लगता है कि वे इसे जल्द ही अपडेट करने वाले नहीं हैं।
ब्रैडलीडॉटनेट

2
लगता है कि वीएस एकता के पूर्ण समर्थन के लिए जा रहा है, इसलिए उस भविष्यवाणी करने पर कुदोस! :)
बीके

2
WPF रेंडरिंग स्पीड जैसे कि WPF क्लासेस विजुअल जैसे गेम या किसी भी रियलटाइम के लिए भयानक है।
विंगर सेंडोन

2
@WingerSendon को देखें RenderTransform, Viewport3Dऔर पसंद करें। वे हार्डवेयर त्वरित हैं।
ब्रैडलीडॉटनेट

26

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

सबसे पहले, किसी को अब विंडोज फॉर्म के साथ शुरू नहीं करना चाहिए। यह अब के लिए सबसे परिपक्व तकनीक है, लेकिन विंडोज फॉर्म का कोई और विकास नहीं होगा, यह अब केवल रखरखाव चरण में है। WPF सक्रिय रूप से विकसित होता है (अंतिम बार मैंने पढ़ा)। लेकिन अब, विंडोज यूनिवर्सल ऐप्स (WinRT एक) को अब पूर्ण स्क्रीन में उपयोग करने की आवश्यकता नहीं है, और इसे अन्य डेस्कटॉप एप्लिकेशन (WPF और WinForms) की तरह विंडो मोड में उपयोग किया जा सकता है। यह गैर-टैबलेट कंप्यूटरों पर उनकी उपयोगिता को बहुत अधिक बढ़ाता है। मेरा मानना ​​है कि यह डेस्कटॉप ऐप्स के लिए भी भविष्य होगा। हालांकि, WPF सॉफ्टवेयर्स पारंपरिक डेस्कटॉप एप्स हैं (बिना परमिशन वाली चीज, केवल UAC)। किसी भी तरह से, कोई फर्क नहीं पड़ता कि आप WPF या WinRT (.Net) के विकास को सीखते हैं, आप दोनों को सीखना समाप्त करेंगे। वे दोनों XAML + C # (या कुछ अन्य .Net भाषा) हैं। मैं सिर्फ WPF सीख रहा था जब WinRT विंडोज 8 के साथ बाहर आया था। मैंने घर पर ही सही महसूस किया, केवल कुछ छोटे-मोटे बदलाव जो आपको बहुत जल्द करने की आदत है। हालांकि WinRT में MVVM परिदृश्य (डेटा-बाइंडिंग) के बारे में निश्चित नहीं है। मैं अभी भी खुद WPF के उस पहलू को सीख रहा हूं।

विंडो 10 अभी लॉन्च हुई है। विंडोज Windows / 7..१ को विंडोज see के रूप में उतनी सफलता नहीं मिली। इसलिए यदि आप एक ऐसा ऐप बनाना चाहते हैं जिसमें व्यापक दर्शक हों, तो आपको अभी के लिए डब्ल्यूपीएफ के साथ जाना चाहिए। लेकिन निकट भविष्य में, WinRT जाने का रास्ता होगा।

आपके प्रश्न के लिए, " विंडो 7 , विंडो 8 (डेस्कटॉप और मेट्रो), विंडो फोन, (और विंडोज 10!), और यहां तक ​​कि एक्स-बॉक्स पर कौन सी प्रौद्योगिकियों का उपयोग करना चाहिए ।" यह सटीक कारण है कि यह ढांचा विकसित किया गया था। सभी उपकरणों के लिए एप्लिकेशन विकसित करने के लिए एक तकनीक का उपयोग किया जाना है। डेस्कटॉप, टैबलेट, फ़ोन (एंड्रॉइड का उपयोग करके ज़मरीन का उपयोग विजुअल स्टूडियो 2015 के साथ बंडल किया गया), Xbox, और IoT (इंटरनेट ऑफ़ थिंग्स)।


19
यूनिवर्सल एप्स विंडोज 7 या विंडोज 8 पर काम नहीं करते हैं। Win10 उपकरणों के लिए "यूनिवर्सल ऐप्स" केवल "यूनिवर्सल" हैं।
ड्रैगोंटामेर 5788

Xamarin अभी भी अपनी खुद की चीज है (कोई यूनिवर्सल ऐप्स नहीं) और मुझे यकीन नहीं है कि वे Xbox के लिए भी तैनात कर सकते हैं।
ब्रैडलीटनेट

2
@PrateekJain: विंडोज 8 पर UWP ऐप चलाने पर NO: stackoverflow.com/a/30317960/199364
टूलमेकर

6
WinForms अभी भी त्वरित और गंदे GUIs के लिए बहुत अच्छा है - WPF अच्छा है, लेकिन MVVM के बिना भी "सही ढंग से" का उपयोग करने के लिए बॉयलरप्लेट कोड (और एक सीखने की अवस्था) की बहुत आवश्यकता है। यह बेकार है कि WPF में सही RAD क्षमताएँ नहीं हैं - और XAML सिर्फ इतनी खतरनाक क्रिया है
दाई

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

23

मैं आपके केवल एक प्रश्न का उत्तर देने की कोशिश करूंगा:

क्या विंडोज फॉर्म पूरी तरह से मृत है?

नहीं, विंडोज फॉर्म तकनीक मृत नहीं है। मेरे द्वारा आपको बताया जाएगा की क्यों। WPF और XAML बहुत व्यापक और जटिल तकनीक है और आप बहुत अच्छा UI बना सकते हैं। परंतु! इस तकनीक के लिए गहन ज्ञान की आवश्यकता है। बुनियादी लेआउट के लिए, आपको इतने ज्ञान की आवश्यकता नहीं है, लेकिन कुछ उन्नत लेआउट के लिए आपको गहन ज्ञान होना चाहिए और जब मैंने इस तकनीक से शुरुआत की और Google पर कुछ युक्तियों को खोजने में बहुत समय बिताया। इसलिए जब मुझे उपयोगकर्ता इनपुट के लिए कुछ सरल रूपों की आवश्यकता होती है तो मैं हमेशा विंडोज फॉर्म तकनीक का चयन करता हूं जो बहुत सरल और सीधा है। यह भी कारण है कि दुनिया में आने पर यह तकनीक बहुत सफल रही। जब आप WPF से शुरू करते हैं तो आपको यह भी जानना होगा कि MVVM डिज़ाइन पैटर्न क्या है और कुछ अनुभवी प्रोग्रामर इससे भ्रमित नहीं होते हैं।


3
यह मेरा पसंदीदा उत्तर है। छोटे ऐप के लिए मैं विंडोज फॉर्म का उपयोग करता हूं क्योंकि यह बहुत जल्दी और आसानी से चल रहा है। जटिल उत्पादन कोड के लिए मैं पूरी तरह से C ++ (WTL के साथ) और साइड-स्टेप .NET का उपयोग करता हूं।
रॉबिन्सन

8
डब्ल्यूपीएफ से परिचित नहीं पाठकों के लिए कुछ स्पष्टीकरण - बुनियादी अनुप्रयोग लेआउट के लिए WPF को कम या ज्यादा समान प्रयास करने की आवश्यकता होती है। डिफ़ॉल्ट VS WPF एप्लिकेशन टेम्प्लेट WinForms के समान प्रारंभिक बिंदु प्रदान करता है। MVVM WPF के साथ काम करना अनिवार्य नहीं है, लेकिन वास्तव में बिना किसी MVVM फ्रेमवर्क के बाइंडिंग का उपयोग करना सरल ऐप के लिए भी आसान है। WPF तकनीकी रूप से WinRT और UWP के करीब है, इसलिए कृपया अपने स्वयं के लिए मान लें कि Windows फ़ॉर्म लीगेसी एप्लिकेशन को बनाए रखने के अलावा किसी अन्य चीज़ के लिए मृत है।
भी

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

16

यह अब अप्रैल 2016 है और अभी भी इसका कोई स्पष्ट जवाब नहीं है। हम एक बहुत ही आधुनिक रीयल-टाइम परफॉर्मेंस मॉनिटरिंग डेस्कटॉप एप्लीकेशन विकसित कर रहे हैं, जिसमें कई चार्ट और डिस्प्ले, टेक्स्ट और विभिन्न अन्य ग्राफिक्स के साथ इंटरमिक्स किया गया है। हमारा अनुप्रयोग .NET फ्रेमवर्क 4.5.2 के साथ C #, WPF है, लेकिन हम अभी भी प्रदर्शन को प्राप्त करने के लिए WinForms और GDI + का उपयोग करते हुए कुछ घटक लिख रहे हैं जो स्वीकार्य है। हमने अभी इसे WPF के साथ हासिल नहीं किया है। हमने DirectX के साथ एप्लिकेशन में कुछ डिस्प्ले भी विकसित किए हैं, लेकिन इसमें बहुत जटिलता है जो केवल कुछ ही टीम का समर्थन कर सकती है। WPF के भीतर एक WinForms प्रदर्शन की मेजबानी और GDI + की गति की मेजबानी से हम जो सरलता और शुद्ध गति प्राप्त कर सकते हैं, वह हमें विभिन्न एयरस्पेस मुद्दों से निपटने के लिए शुद्ध दृश्य / ViewModel संरचना के महंगे होने की आवश्यकता है। हमारे आवेदन बहुत विशेषज्ञ है और मैं पूरी तरह से WinForms से छुटकारा पाने के लिए प्यार करता हूँ, लेकिन दुर्भाग्य से यह अभी तक हमारे मामले में संभव नहीं है। शुद्ध प्रदर्शन के लिए आपको DirectX या WinForms पर जाना होगा।


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

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

6

मेरे दो सेंट ... यदि आप सच्चे सार्वभौमिक ऐप चाहते हैं, तो अर्थ प्रोग्राम जो कि विंडोज, विनफॉर्म सहित किसी भी डेस्कटॉप ऑपरेटिंग सिस्टम पर चल सकते हैं, अभी भी जाने का रास्ता है। बस सुनिश्चित करें कि आप सीएलआर कॉम्पिटिबल रहें, और आप मोनो के माध्यम से मैक और लिनक्स पर तैनात कर सकते हैं। बहुत बड़ा लाभ। XAML शांत हो सकता है, लेकिन यह अन्य ऑपरेटिंग सिस्टम पर पोर्ट नहीं होने वाला है।

मैं व्यक्तिगत रूप से सैंडबॉक्स (त्वरित) यूडब्ल्यूपी व्यापार मॉडल को भयानक लगता हूं; यह उस खुलेपन की गणना करता है जो विंडोज शुरू से ही खड़ा है।


4

मैं 10 वर्षों से Microsoft तकनीकों के साथ काम कर रहा हूं। सबसे महत्वपूर्ण बात जो मैंने सीखी थी वह सिर्फ यह नहीं सुनना है कि Microsoft आपको क्या पेशकश कर रहा है। जब Microsoft कह रहा है कि यह भविष्य है, तो इसके 50% गलत होने की संभावना है। Microsoft यकीन है कि वे उन उत्पादों को बढ़ावा देने के लिए सबसे अच्छा करेंगे जो उन्होंने निवेश किया था, लेकिन इसका मतलब यह नहीं है कि आपको पालन करना चाहिए। देखें कि WCF और सिल्वरलाइट का क्या होता है।

यद्यपि WPF सीखने के लिए एक बहुत अच्छा मंच है, लेकिन इसमें सीखने का एक बहुत बड़ा हिस्सा है। मुझे नहीं लगता कि कोई भी डेवलपर कम 5 साल की प्रोग्रामिंग एक्सपीरिएंस सही से WPF कर सकता है।

MVVM पैटर्न का अनुसरण करके, आप पाएंगे कि WinForm में अपेक्षाकृत आसान कुछ करना WPF में बहुत चुनौतीपूर्ण हो सकता है। किसी अपडेट के बाद किसी स्थिति के आधार पर सेल को रंग दें, या दृश्य में एक पंक्ति स्क्रॉल करें और इसे हाइलाइट करें।

बेशक आप कह सकते हैं कि आपको MVVM नहीं करना है। बस अपने कोड को कोड में पीछे रखें और इसे काम करें। हाँ, यह काम करेगा, लेकिन WPF का उपयोग करने का क्या मतलब है? सिर्फ जीत फॉर्म का इस्तेमाल क्यों नहीं?


1
मैं इस बात से सहमत हूं कि WPF में एक गहन सीखने की अवस्था है, लेकिन एक बार जब आप अतीत में आ जाते हैं, तो बस WinForms पर वापस नहीं जाना है ... कभी भी।
Krythic

4

यह एक पुराना धागा है, लेकिन .NET फ्रेमवर्क, c # फीचर्स की वर्तमान प्रगति के साथ एक महत्वपूर्ण है, और गेम डेवलपमेंट विकल्प के रूप में c # पर फोकस बढ़ा है।

WPF को लगभग पूरी ईमानदारी से एसी # गेम प्लेटफॉर्म के रूप में नहीं चुना गया है। WPF हवाई क्षेत्र के मुद्दों ने लोगों को काफी तेजी से डरा दिया। मुझे नहीं लगता कि कई (यदि कोई हो) प्रमुख शीर्षक या मुख्य धारा खेल इंजन WPF को एक लक्ष्य मंच के रूप में या तो इस कारण से समर्थन करते हैं। WPF गेम लॉन्चर के लिए एक बेहतरीन प्लेटफॉर्म बनाता है, हालाँकि!

WinForms, जबकि अब रखरखाव-मोड के तहत, अभी भी आने वाले वर्षों के लिए एक वैध विकल्प होगा। यह समय-परीक्षण और स्थिर है। जो मैंने देखा है, 2017 में भी, WinForms अभी भी सी # आधारित गेम विकास के लिए चुना गया सबसे आम प्लेटफॉर्म है।

को देखते हुए स्टीम हार्डवेयर सर्वेक्षण डेटा आपको यह उत्तर (जुलाई 2017) लिखने के समय देख सकते हैं कि, विंडोज 10 64-बिट अब 32% पर 64-बिट 50% शेयर बाजार पर हावी पीसी गेमिंग मंच, विंडोज 7 के बाद है और विंडोज 8.1 64-बिट लगभग 7% पर। अन्य सभी ओएस प्लेटफॉर्म का बाजार हिस्सा इतना छोटा है कि यह इन तीनों के अलावा किसी अन्य चीज पर विचार करने लायक नहीं है।

पीसी गेमिंग की वर्तमान स्थिति होने के साथ, WinForms सभी 3 शीर्ष पीसी प्लेटफार्मों को लक्षित करने के लिए सबसे आम भाजक है। भविष्य को देखते हुए, UWP c # गेम डेवलपमेंट के लिए सबसे अच्छा टारगेट प्लेटफॉर्म होगा क्योंकि विंडोज 7 और 8 विंडोज 10 के लिए महत्वपूर्ण मार्केट शेयर खो देते हैं, जब तक कि एक नया प्लेटफॉर्म इसके साथ नहीं आता। तो बस संख्या के हिसाब से।

यदि अधिकतम मार्केट शेयर का समर्थन करने के बजाय प्रति ओएस प्लेटफ़ॉर्म के अनुकूलता के सर्वोत्तम स्तर के आधार पर चयन किया जाता है, तो विकल्प अधिक पसंद किए जाएंगे:

  • विंडोज 10: यूडब्ल्यूपी
  • विंडोज 8.1: WinRT या विंडोज स्टोर
  • विंडोज 7: WinForms

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


Gamedev पर देखने का एक बिंदु इंटरस्टिंग है, मुझे समझ में नहीं आता है कि आप gamedev के लिए GUI फ्रेमवर्क क्यों चुनेंगे जहाँ आपके पास C # एकता के लिए पूर्ण फ़ीचर्ड गेम इंजन है। क्लासिक जीयूआई के साथ मैंने जो कुछ गेम देखा उसमें गेम डेटा संस्करण (जैसे नक्शा / संपत्ति संपादित) के लिए थे
Uwy

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

3

WinRT लंबे समय से डेस्कटॉप पर है, मैं WinRT लिख रहा हूं, जो मेरे डेस्कटॉप पर चलता है। और विंडोज 10 के तहत, वे एप्लिकेशन गैर-डॉक किए गए स्थानों का समर्थन करेंगे (जैसा कि आप पारंपरिक रूप से उन्हें जानते हैं) विंडो किया जाएगा।

मैं आज किसी को भी शुरू करने के लिए WinForms या WPF की सिफारिश नहीं करूंगा। उन्हें मुख्य रूप से WinRT / XAML सीखना चाहिए। और उनकी पसंद की भाषा के आधार पर, कुछ Win32 / .net सीखें क्योंकि उन्हें इसकी आवश्यकता है।

"वे कहते हैं कि WinRT + XAML मेट्रो GUI बिल्डिंग (विंडो 8 टाइल्स की बात!) के लिए है।" - यह इस तरह का ओवर-एब्स्ट्रैक्शन है, कि यह बेकार है। WinRT एक रनटाइम है, Win32 की तरह, यह सिर्फ GUI के लिए नहीं है, इसलिए "वे जो कहते हैं" पूरा बीएस है। XAML एक UI लेयर है (WPF में XAML की तरह) लेकिन यह कहना कि यह मेट्रो GUI भी गलत है, अब Metro GUI जैसी कोई चीज नहीं है। XAML विंडोज यूआई लेयर है। और "विंडोज 8 टाइल्स की बात!" कुछ लोगों की सुरंग की दृष्टि से अभिव्यक्त होता है। यह मेरे जैसा होगा कह Win32 एक शुरुआत मेनू बात है। आप देख सकते हैं कि वह बयान कितना हास्यास्पद है।


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

7
अगर WinRT पूर्ण स्क्रीन ऐप्स के निर्माण के लिए बाध्य नहीं है, तो क्या आप मुझे बता सकते हैं कि आप इसका उपयोग कैसे कर सकते हैं जो कि किसी विंडो के किसी भी संस्करण को वास्तव में जारी किए गए संस्करण पर चलता है? या 10% से अधिक विंडोज कंप्यूटर (यानी विंडोज 7 और एक्सपी) पर चलने वाले ऐप को लिखने के लिए इसका उपयोग कैसे करें? मैं अनुमान लगा रहा हूं कि अधिकांश डेवलपर्स 10% से अधिक विंडोज उपयोगकर्ताओं को लक्षित करने में सक्षम होना चाहते हैं। जब तक विंडोज 8 या 10 को बाजार में हिस्सेदारी का गंभीर हिस्सा नहीं मिल जाता, तब तक WPF कई अनुप्रयोगों के लिए आवश्यक है। WinRT एक रनटाइम लेयर हो सकती है, लेकिन यह इस तथ्य को नहीं बदलता है कि यह बहुत सी चीजों (पूर्ण) Win32 को एक्सेस नहीं कर सकता है।
जॉन कोलंडोनी 19

1
@JohnColanduoni ने कहा, आज (Mar14) WinRT से शुरू होने वाले किसी के लिए, Win10 कुछ महीनों के लिए अपडेट के रूप में था और अब कुछ महीनों के लिए स्वतंत्र है, और हां, win10 पकड़ रहे हैं विशाल बाजार हिस्सेदारी। हाँ, हर कोई win10 में नहीं गया, लेकिन कुछ दिनों पहले हमें पता चला कि फ्रांस में एक हवाई अड्डा अभी भी win3.1 का उपयोग करता है
जॉन डेमेट्रियौ

3
@GavinWilliams ठीक है, आपके आंकड़े कहाँ हैं जो किसी भी बाजार क्षेत्र में एक प्रशंसनीय बाजार हिस्सेदारी पर विंडोज 10 डालते हैं? क्या आप कह रहे हैं कि मॉड्स ने आपके स्रोत के लिंक के साथ आपकी टिप्पणी को हटा दिया है, लेकिन उन्होंने आपको यह एक करने दिया? मैं वह नहीं खरीद रहा हूँ। मैं मानता हूं कि XP ​​समर्थन करने लायक नहीं है, लेकिन विंडोज 10 यूनिवर्सल एप्स भी विंडोज 8.1 का समर्थन नहीं करते हैं, आइए विंडोज 7 को अपनाएं। एडॉप्शन कहीं नहीं है जहां इसे विंडोज यूनिवर्सल को सही ठहराने की जरूरत है, और यह धीमा है
जॉन कोलेंडोनी 10

3
@GavinWilliams ठीक है, आइए नजरअंदाज करें कि 30% 97% से बहुत कम है (यदि आप WPF का उपयोग करते हैं तो आपको जो समर्थन मिलेगा), और यह कि यह डेटा केवल वीडियो गेम प्रोग्रामर के लिए उपयोगी है। वीडियो गेम के लिए दोनों को लक्षित करना काफी आसान है; जब तक आप वास्तव में तुच्छ कुछ नहीं कर रहे हैं, आप DirectX / OpenGL का उपयोग करना चाहते हैं, जिसका अर्थ है कि आपको इसे केवल विंडो / फ़ुलस्क्रीन में होस्ट करने की आवश्यकता है। यदि आप उन का उपयोग नहीं करना चाहते हैं, तो आप वास्तव में WPF चाहते हैं क्योंकि WinRT का UI होस्ट किए गए DirectX / OpenGL के बिना तत्काल-मोड ड्राइंग की अनुमति नहीं देता है (जैसा कि WPF करता है)। तो WinRT के बारे में क्या बाजार के आकार में 70% की कमी को सही ठहराता है?
जॉन कोलंडोनी

1

मैं एक साल पहले इस सवाल पर चलता हूं। मैं इस निष्कर्ष पर पहुंचा कि XAML, WPF और न ही WinRT के साथ शुरुआत करने के लिए सही विकासशील वातावरण हैं।

मैं आपके वेब प्रेजेंटेशन लेयर के लिए डेटा लेयर (वेब ​​सर्विसेज और रीस्टफुल लेयर (JSON) सहित) और शुद्ध HTML5 / CSS3 और जावास्क्रिप्ट के लिए .Net फ्रेमवर्क का उपयोग करके अत्यधिक पुनः प्राप्त करता हूं।

विंडोज 10 के भीतर आप किसी भी वेब एप्लिकेशन को मेट्रो एप्लिकेशन के रूप में बॉक्स से बाहर एकीकृत कर सकते हैं।

WinRT, XAML, WPF और इसी तरह का एमएस सामान केवल विंडोज़ पर चलता है और इसमें बहुत सी सीमाएँ हैं।

इसलिए एक साल के बाद भी मैं अपने नए प्रोजेक्ट के लिए WinRT या XAML का उपयोग न करने के अपने फैसले को लेकर बहुत खुश हूं।


3
तुम्हारी किस बारे में बोलने की इच्छा थी? हां, अगर आप वेब ऐप बनाना चाहते हैं तो यह एक बढ़िया विकल्प है। यदि आप एक डेस्कटॉप ऐप बनाना चाहते हैं, तो यह नहीं है। आप कटाना का उपयोग कर सकते हैं और स्थानीय रूप से होस्ट किए गए WebApi और एक डेस्कटॉप ऐप बना सकते हैं, जो मुझे लगता है कि इस उत्तर को और अधिक प्रासंगिक बना देगा।
केसी

1
OP ने Windows GUI और WPF या Winrt के बारे में पूछा - वेब ऐप्स नहीं।
एज़ेस्पी

6
इसके अलावा, मैं व्यक्तिगत रूप से उन तकनीकों को बहुत मुश्किल से काम करता
हूं

1
मैं मानता हूं, HTML सार्वभौमिक UI है और यह डेस्कटॉप के लिए भी होना चाहिए। मुझे लगता है कि हमें इन सभी अलग-अलग रूपरेखाओं को सरल बनाने की आवश्यकता है, और अधिक से अधिक और अधिक से अधिक परिचय देना बंद कर दें। इसकी ज्यादातर जरूरत नहीं है। बस HTML और ASP सीखें और फिर अपनी वेबसाइट को WinForm ऐप में होस्ट करें। WinForm ऐप में आपका वेब-सर्वर और वेब ब्राउज़र कंट्रोल होता है। नतीजा, आप समय की बचत करते हैं, आप एक भाषा और तकनीक में महारत हासिल करते हैं, आप तेजी से विकास करते हैं, आप अपने ग्राहकों के पैसे बचाते हैं, आपके ऐप्स भविष्य के प्रमाण हैं और कहीं अधिक पोर्टेबल हैं।
लेगेंडरीकॉपी कोडरोड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.