स्पार्की का जवाब मिला, मुझे थोड़ा पूरक करना चाहिए।
".NET क्रॉस प्लेटफॉर्म है" बहुत अधिक अस्पष्ट कथन के रूप में है, क्योंकि यह मूल रूप से निर्मित और विकसित दोनों दुनिया के लिए बदल गया है और विकसित हुआ है।
संक्षिप्त उत्तर है:
अंतर्निहित इंजन जो .NET और उसके डेरिवेटिव, कॉमन लैंग्वेज इन्फ्रास्ट्रक्चर स्टैंडर्ड को पावर करता है, क्रॉस-प्लेटफॉर्म है और जैसे कि आप अपने कोड को कई प्लेटफ़ॉर्म पर जाना चाहते हैं, आपको डिलीवरी करने के लिए सही प्लेटफ़ॉर्म पर सही एपीआई का उपयोग करने की योजना बनाने की आवश्यकता है प्रत्येक मंच पर सबसे अच्छा अनुभव।
सीएलआई परिवार ने "राइट वन्स, रन एनीव्हेयर" दृष्टिकोण की कोशिश नहीं की है, क्योंकि फोन से मेनफ्रेम तक के अंतर बहुत बड़े हैं। एपीआई और रनटाइम सुविधाओं के एक ब्रह्मांड के बजाय जो प्लेटफ़ॉर्म-विशिष्ट हैं, डेवलपर्स को प्रत्येक प्लेटफ़ॉर्म में महान अनुभव बनाने के लिए सही उपकरण देने के लिए उभरा है ।
इसके बारे में सोचो: प्रोग्रामर अब विंडोज पीसी या यूनिक्स सर्वर को निशाना नहीं बनाते हैं। दुनिया, अब पहले से कहीं अधिक पीसी से आकर्षक प्लेटफार्मों, गेमिंग कंसोल, शक्तिशाली फोन तक, सेट-टॉप बॉक्स, बड़े सर्वरों और मशीनों के क्लस्टर वितरित करने के लिए घिरा हुआ है। सभी प्लेटफ़ॉर्म पर एक-एक आकार केवल छोटे उपकरणों पर फूला हुआ महसूस होता है, और बड़े सिस्टम पर कम महसूस होता है ।
Microsoft का .NET फ्रेमवर्क उत्पाद क्रॉस प्लेटफॉर्म नहीं है, यह केवल विंडोज पर चलता है। Microsoft से .NET फ्रेमवर्क की विविधताएँ हैं जो अन्य प्रणालियों जैसे विंडोज फोन 7, एक्सबॉक्स 360 और सिल्वरलाइट के माध्यम से ब्राउज़रों पर चलती हैं, लेकिन वे सभी थोड़े अलग प्रोफाइल हैं।
आज आप प्रत्येक प्रमुख मुख्यधारा के ओएस, फोन, मोबाइल डिवाइस, एम्बेडेड सिस्टम और सर्वर को .NET-आधारित तकनीकों के साथ लक्षित कर सकते हैं। यहां एक सूची दी गई है जो दिखाती है कि आप प्रत्येक मामले में किस CLI कार्यान्वयन का उपयोग करेंगे (यह सूची व्यापक नहीं है, लेकिन 99% मामलों को कवर करना चाहिए:
- x86 और x86-64 आधारित पीसी कंप्यूटर:
- रनिंग विंडोज -> आमतौर पर आप .NET या सिल्वरलाइट चलाते हैं लेकिन आप यहां पूर्ण मोनो का भी उपयोग कर सकते हैं।
- लिनक्स, बीएसडी या सोलारिस -> आप पूर्ण मोनो या सिल्वरलाइट चलाते हैं
- MacOS X चलाना -> आप पूर्ण मोनो या सिल्वरलाइट चलाते हैं
- Android चलाना -> आप मोनो / Android सबसेट चलाते हैं
- एआरएम कंप्यूटर:
- विंडोज फोन 7 चलाना: आप कॉम्पैक्ट फ्रेमवर्क 2010 चलाते हैं
- विंडोज 6.5 और पुराने को चलाना: आप पुराने कॉम्पैक्ट फ्रेमवर्क को चलाते हैं
- Android डिवाइस: आप मोनो / Android चलाते हैं
- PowerPC कंप्यूटर:
- आप पूर्ण लिनक्स, बीएसडी या यूनिक्स ऑपरेटिंग सिस्टम के लिए पूर्ण मोनो चलाते हैं
- आप PS3, Wii या अन्य एम्बेडेड सिस्टम के लिए एम्बेडेड मोनो चलाते हैं।
- XBox360 पर, आप CompactFramework चलाते हैं
- S390, S390x, Itanium, SPARC कंप्यूटर:
- अन्य एम्बेडेड ऑपरेटिंग सिस्टम:
- आप मोबाइल प्रोफ़ाइल के साथ .NET MicroFramework या मोनो चलाते हैं।
आपकी आवश्यकताओं के आधार पर उपरोक्त पर्याप्त हो सकता है या नहीं। आपको हर जगह चलाने के लिए समान स्रोत कोड शायद ही मिलेगा। उदाहरण के लिए, XNA कोड हर डेस्कटॉप पर नहीं चलता है, जबकि .NET डेस्कटॉप सॉफ्टवेयर XNA या फोन पर नहीं चलता। आपको .NET फ्रेमवर्क के अन्य प्रोफाइल में चलने के लिए आमतौर पर अपने कोड में परिवर्तन करने की आवश्यकता होती है। यहाँ कुछ ऐसे प्रोफाइल हैं जिनसे मैं अवगत हूँ:
- .NET 4.0 प्रोफ़ाइल
- सिल्वरलाइट प्रोफाइल
- विंडोज फोन 7 प्रोफाइल
- XBox360 प्रोफ़ाइल
- मोनो कोर प्रोफाइल - .NET प्रोफाइल का अनुसरण करता है और लिनक्स, मैकओएस एक्स, सोलारिस, विंडोज और बीएसडी पर उपलब्ध है।
- .NET माइक्रो फ्रेमवर्क
- IPhone प्रोफाइल पर मोनो
- Android प्रोफ़ाइल पर मोनो
- PS3 प्रोफ़ाइल पर मोनो
- Wii प्रोफ़ाइल पर मोनो
- चांदनी प्रोफ़ाइल (सिल्वरलाइट के साथ संगत)
- चांदनी विस्तारित प्रोफ़ाइल (सिल्वरलाइट + पूर्ण .NET 4 एपीआई एक्सेस)
इसलिए उन प्रोफाइलों में से प्रत्येक वास्तव में थोड़ा अलग है, और यह कोई बुरी बात नहीं है। प्रत्येक प्रोफ़ाइल को इसके होस्ट प्लेटफ़ॉर्म पर फिट करने के लिए डिज़ाइन किया गया है और समझ में आने वाले एपीआई को उजागर करता है, और उन लोगों को हटा देता है जो समझ में नहीं आते हैं।
उदाहरण के लिए, होस्ट ब्राउज़र को नियंत्रित करने के लिए सिल्वरलाइट का एपीआई फोन पर कोई मतलब नहीं रखता है। और XNA में शेड्स पीसी हार्डवेयर पर कोई मतलब नहीं रखते हैं जो इसके लिए समतुल्य समर्थन का अभाव है।
जितनी जल्दी आपको पता चलता है कि .NET हार्डवेयर और देशी प्लेटफॉर्म की अंतर्निहित क्षमताओं से डेवलपर को अलग करने का एक समाधान नहीं है, तो आप बेहतर होंगे।
कहा कि शुरू, कुछ एपीआई और ढेर कई प्लेटफार्मों में उपलब्ध हैं, उदाहरण के लिए ASP.NET का उपयोग विंडोज पर, लिनक्स पर, सोलारिस पर, MacOS X पर किया जा सकता है क्योंकि उन एपीआई में .NET और मोनो दोनों मौजूद हैं। ASP.NET Microsoft के कुछ समर्थित प्लेटफ़ॉर्म जैसे XBox या Windows Phone 7 पर उपलब्ध नहीं है और अन्य प्लेटफार्मों पर भी समर्थित नहीं है जो मोनो Wii या iPhone की तरह समर्थन करता है।
निम्नलिखित जानकारी केवल 21 नवंबर तक सही है, और मोनो दुनिया में कई चीजों की संभावना बदल जाएगी।
समान सिद्धांतों को अन्य स्टैक पर लागू किया जा सकता है, पूरी सूची के लिए एक उचित तालिका की आवश्यकता होगी, जिसके बारे में मुझे पता नहीं है कि यहां कैसे प्रस्तुत किया जाए, लेकिन यहां उन तकनीकों की एक सूची है जो किसी विशेष प्लेटफॉर्म पर मौजूद नहीं हो सकती हैं। आप यह मान सकते हैं कि यहाँ सूचीबद्ध कोई भी चीज़ उपलब्ध नहीं है (बेझिझक मुझे उन चीजों के लिए संपादन भेजने के लिए स्वतंत्र महसूस करें):
कोर रनटाइम इंजन [हर जगह]
- Reflection.Emit समर्थन [हर जगह, WP7, CF, Xbox, MonoTouch, PS3 को छोड़कर]
- सीपीयू SIMD समर्थन [लिनक्स, बीएसडी, सोलारिस, मैकओएस एक्स; जल्द ही PS3, MonoTouch और MonoDroid]
- निरंतरता - मोनो टैस्कलेट्स [लिनक्स, बीएसडी, सोलारिस, मैकओएस, PS3, Wii]
- असेंबली अनलोडिंग [केवल Windows]
- वीएम इंजेक्शन [लिनक्स, बीएसडी, मैकओएस एक्स, सोलारिस]
- DLR [Windows, Linux, MacOS X, Solaris, MonoDroid]
- जेनरिक [PS3 और iPhone पर कुछ सीमाएँ]।
बोली
- C # 4 [हर जगह]
- सी # कंपाइलर एक सेवा के रूप में (लिनक्स, मैकओएस, सोलारिस, बीएसडी, एंड्रॉइड)
- IronRuby [हर जगह, WP7 निष्पादित करें, CF, Xbox, मोनोआच, PS3]
- IronPython [हर जगह, WP7 को निष्पादित करें, CF, Xbox, MonoTouch, PS3]
- F # [हर जगह, WP7 निष्पादित करें, CF, Xbox, MonoTouch, PS3]
सर्वर स्टाॅक
- ASP.NET [Windows, Linux, MacOS, BSD, Solaris]
- ADO.NET [हर जगह]
- LINQ to SQL [सर्वत्र]
- इकाई फ्रेमवर्क [हर जगह]
- कोर XML स्टैक [हर जगह]
- XML क्रमांकन [हर जगह, WP7, CF, Xbox को छोड़कर)
- LINQ to XML (हर जगह)
- System.Json [Silverlight, Linux, MacOS, MonoTouch, MonoDroid]
- System.Messaging [विंडोज; Linux, MacOS और Solaris को RabbitMQ की आवश्यकता है]
- .NET 1 एंटरप्राइज़ सेवाएँ [केवल Windows]
- WCF [विंडोज पर पूरा; सिल्वरलाइट, सोलारिस, मैकओएस, लिनक्स, मोनो टच, मोनोक्रॉइड पर छोटे उपसमुच्चय]
- विंडोज वर्कफ़्लो [विंडोज़ केवल]
- कार्डस्पेस पहचान [विंडोज केवल]
जीयूआई का ढेर
- सिल्वरलाइट (विंडोज, मैक, लिनक्स - मूनलाइट के साथ)
- WPF (केवल Windows)
- Gtk # (विंडोज, मैक, लिनक्स, बीएसडी)
- Windows.orm (विंडोज, मैक, लिनक्स, बीएसडी)
- मोनोमैक - नेटिव मैक इंटीग्रेशन (केवल मैक)
- मोनो टच - नेटिव आईफोन इंटीग्रेशन (केवल आईफोन / आईपैड)
- MonoDroid - देशी Android एकीकरण (केवल Android)
- मीडिया सेंटर एपीआई - केवल विंडोज
- अव्यवस्था (विंडोज और लिनक्स)
ग्राफिक लाइब्रेरी
- GDI + (Windows, Linux, BSD, MacOS)
- क्वार्ट्ज (MacOS X, iPhone, iPad)
- काहिरा (Windows, Linux, BSD, MacOS, iPhone, iPad, MacOS X, PS3, Wii)
मोनो लाइब्रेरीज़ - क्रॉस प्लेटफ़ॉर्म, .NET में उपयोग किया जा सकता है, लेकिन मैन्युअल रूप से निर्माण की आवश्यकता होती है
- सी # 4 एक सेवा के रूप में संकलक
- सेसिल - CIL मैनीपुलेशन, वर्कफ़्लो, CIL का इंस्ट्रूमेंटेशन, लिंकर्स
- रिलैक्सएनजी लाइब्रेरीज़
- Mono.Data। * डेटाबेस प्रदाता
- पूर्ण System.Xaml (सेटअप में उपयोग के लिए जहां .NET स्टैक की पेशकश नहीं करता है)
MonoTouch का मतलब है iPhone पर चलने वाला मोनो; मोनोऑइड का मतलब है मोनो एंड्रॉइड पर चल रहा है; PS3 और Wii बंदरगाहों केवल सोनी और निनटेंडो योग्य डेवलपर्स के लिए उपलब्ध है।
मैं औपचारिकता की कमी के लिए माफी मांगता हूं।