2009-02-07 3 views
16

ठीक है, यह मेरा क्षेत्र है, लेकिन यह समझने की कोशिश कर रहा है कि क्यों कोई अन्य टूलकिट पर क्रॉस-प्लेटफ़ॉर्म विकास के लिए .NET (या समकक्ष मोनो) चुनता है, दोनों में अनुभव के बिना मुश्किल है।.NET या मोनो बनाम क्यूटी, जो क्रॉस-प्लेटफ़ॉर्म विकास के लिए है?

प्रोग्रामर के लिए जो दोनों का उपयोग किया हो सकता है, कौन सी विशेषताओं को याद किया जाएगा या वांछित किया जाएगा? इसके विपरीत, प्रतिमान या किसी अन्य पहलू के मामले में किसी के उपयोगकर्ता को दूसरे से क्या याद आती है? टूलकिट के बारे में बहुत कुछ कहना है, लेकिन किसी ऐसे व्यक्ति की टिप्पणियां जिन्होंने दोनों का उपयोग किया है वह मूल्यवान होगा।

यहाँ विषय पर कुछ संबंधित प्रश्न हैं:

संपादित करें: मोनो का उपयोग कर चाहेंगे केवल एक व्यवहार्य ओ हो अगर विंडोज लक्ष्यित प्लेटफार्मों में से एक था तो पशन?

+0

अपने आखिरी सवाल का सवाल है, हाँ, तो आप बस मोनो लक्ष्य बना सकते हैं यदि आप उस मार्ग जाने का निर्णय है, हालांकि यह जबकि .नेट फ्रेमवर्क Windows के नए संस्करणों पर स्थापित आता है, मोनो स्थापित करने के लिए अपने उपयोगकर्ताओं की आवश्यकता होगी। –

उत्तर

7

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

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

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

दोनों क्यूटी और WxWidgets में पाइथन बाइंडिंग (यानी पीईक्यूटी और डब्ल्यूएक्सपीथन) है ताकि आप इन पुस्तकालयों का उपयोग करके क्रॉस प्लेटफार्म जीयूआई कोड लिख सकें। मोनो के लिए यह अधिक मुश्किल है लेकिन जीटीके # और क्योटो है। मैंने इनमें से किसी एक की कोशिश नहीं की है लेकिन वे एक ऐसे बिंदु पर पहुंच रहे हैं जहां वे उपयोग करने के लिए पर्याप्त परिपक्व हैं (उदाहरण के लिए मोनो डेवेल देखें)।

+1

क्यूटी अधिक भाषाओं में बाइंडिंग है, लेकिन इस सवाल का जवाब सबसे जानकारीपूर्ण हो रहा है। – jrharshath

+0

की गणना करने में थोड़ा समय हो गया है परवाह – casualcoder

+0

क्या मैं वाणिज्यिक उद्देश्य के लिए व्यावसायिक (स्वामित्व) अनुप्रयोग बनाने के लिए क्यूटी समुदाय संस्करण का उपयोग कर सकता हूं? –

0

क्या आपने wxwidgets पर विचार किया है। इसका क्रॉस प्लेटफ़ॉर्म, क्यूटी जैसे सी ++ और क्यूटी के विपरीत देशी नियंत्रण का उपयोग करता है, और .NET की तरह चलाने के लिए किसी भी ढांचे की आवश्यकता नहीं होती है।

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

यदि प्रदर्शन अनुप्रयोग का महत्वपूर्ण पहलू है तो लोग क्यूटी, wxwidgets जैसे सी ++ पुस्तकालयों का उपयोग करते हैं।

+0

इस जवाब आप के लिए कुछ भी करता है: http://stackoverflow.com/questions/464463/qt-being-now-released-under-lgpl-would-you-recommend-it-over-wxwidgets/464689#464689 – casualcoder

+0

कैसे क्या मैं अपने वाणिज्यिक आवेदन में एलजीपीएल क्यूटी का उपयोग कर सकता हूं ??? मैं केवल wxwidgets के साथ जाता हूं जिसे मैंने लंबे शोध के बाद चुना था। इसका तेज़, मूल नियंत्रण, सी ++, बहु मंच। http://stackoverflow.com/questions/464463/qt-being-now-released-under-lgpl-would-you-recommend-it-over-wxwidgets/465803#465803 –

+0

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

-2

.NET क्रॉस प्लेटफ़ॉर्म के लिए नहीं है। यह कोड के लिए बहुत दर्दनाक है और इसे मोनो और .NET के लिए प्रभावी ढंग से काम करता है। व्यक्तियों के साथ टीसीएल/टीसी या क्यूटी या जावा स्विंग से अधिक .NET के साथ जाने का कारण रैपिड एप्लिकेशन डेवलपमेंट की वजह से है।

आरएडी मौजूद अन्य किसी भी ढांचे के साथ लगभग असंभव है। साधारण मामलों पर आरएडी संभव है, लेकिन आखिरी बार जब आपने एक व्यापार आधारित आवेदन लिखा था जिसमें साधारण उपयोग के मामले थे।

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

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

+0

कृपया "दर्दनाक" पर विस्तृत जानकारी दे सकते हैं? – EricSchaefer

+0

@EricSchaefer: मुझे संदेह है कि .NET और Mono के बीच अंतर ऐसा करते हैं। – casualcoder

+1

मुझे पता नहीं, यह बहस योग्य है। क्यूटी बहुत खराब आरएडी है। – mxcl

5

क्रॉस-प्लेटफार्म (और अद्वितीय मंच) के लिए मैं क्यूटी पर जाऊंगा क्योंकि यह मोनो और विंडोज से अधिक साफ है।फॉर्म और एमवीसी पैटर्न के साथ सभी एप्लिकेशन

+5

क्यूटी "अधिक साफ" कैसे है? – EricSchaefer

+0

सेकेंडेड! मतभेदों पर कोई विवरण या विस्तार स्वागत है। – casualcoder

+3

++ अधिक साफ। – jrharshath

1

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

+3

शामिल हैं, यहां तक ​​कि "त्वचा" को एप्लिकेशन के साथ भी लिखा जा सकता है। ढांचा यह सुनिश्चित करता है कि "त्वचा" में मूल रूप और अनुभव हो। की तुलना में मैं – jrharshath

4

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

wxwidgets परिनियोजन के साथ मेरे अनुभव परिनियोजन से कठिन है (मेरे मामले में यह जीटीके पर निर्भरता के कारण विशेष रूप से लिनक्स था, मैक के बारे में कोई जानकारी नहीं थी)।

1

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

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

बेशक एक और विकल्प जावा होगा। मैंने वहां बहुत कुछ नहीं किया है, लेकिन यह निश्चित रूप से सर्वव्यापी है, और अच्छी तरह से काम करता है, फिर मैं उम्मीद करता हूं कि जावा कोड संकलित-केवल कोड, जैसे सी/सी ++/पास्कल से धीमा होगा।

एक अन्य विकल्प मन में जो तीन मुख्य प्लेटफार्मों के लिए compilers है आता है कि Eiffel है। मैं इन दिनों इसके साथ बहुत कुछ नहीं कर रहा हूं, लेकिन जब मैंने इसके साथ खेल लिया तो मुझे यह पसंद आया। YMMV

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