2010-08-15 14 views
8

मुझे पता है कि बातचीत सच नहीं है, लेकिन यदि मेरा एप्लिकेशन मोनो का उपयोग करके काम करता है तो क्या यह वास्तविक सौदे पर स्विच करने पर काम करने की गारंटी है? यदि नहीं, तो मुझे चेतावनी की सूची कहां मिल सकती है?क्या मोनो .NET का सबसेट है?

उत्तर

18

में लापता कार्यक्षमता को बेनकाब मोनो और .NET दोनों विनिर्देशों के ईसीएमए/आईएसओ सीएलआई परिवार के सुपरसेट हैं। हालांकि, न तो .NET और न ही दूसरे के सबसेट हैं। मोनो और .NET दोनों ईसीएमए/आईएसओ सीएलआई के शीर्ष पर विशेषताएं जोड़ते हैं, लेकिन मोनो .NET के कई जोड़ों को लागू करता है, जबकि .NET किसी भी मोनो के परिवर्धन को लागू नहीं करता है।

यहाँ कुछ उदाहरण है:

  • मोनो बड़े विन्यास है। यह वास्तव में ईसीएमए/आईएसओ सीएलआई विनिर्देश के लिए एक अतिरिक्त सुविधा नहीं है लेकिन एक वैकल्पिक एक है: विनिर्देश कहता है कि सरणी सूचकांक या तो 32 बिट या 64 बिट होना चाहिए। .NET ने 32 बिट चुना लेकिन मोनो ने 64 का चयन किया, क्योंकि 10 बिलियन प्रविष्टियों वाले एरे और सुपरकंप्यूटिंग अनुप्रयोगों में अधिक आम हैं, जहां मोनो के पास काफी मजबूत बाजार हिस्सेदारी है। इसलिए, यदि आपके ऐप में कई अरब प्रविष्टियों के साथ एक सरणी है, तो यह मोनो पर ठीक होगा लेकिन .NET पर काम नहीं करेगा।
  • मोनो ने वीएम में निरंतरता जारी रखी है। गेम प्रोग्रामिंग के लिए ये महत्वपूर्ण हैं।
  • मोनो में सरणी पर समांतर संचालन के लिए मूल सिमड समर्थन है, जो देशी सीपीयू सिमड निर्देशों (एमएमएक्स, एसएसई, वीएमएक्स) में मैप किए गए हैं।
  • मोनो में कंपाइलर-ए-ए-सर्विस है, जो माइक्रोसॉफ्ट केवल .NET के कुछ अनिर्दिष्ट भविष्य संस्करण के बारे में बात कर रहा है।
  • मोनो अतिरिक्त लाइब्रेरी, विशेष रूप से ग्राफिक्स विण्डोज़ फॉर्म्स के अलावा अन्य पुस्तकालयों के लिए बाइंडिंग का एक बहुत (wx.NET, GTK #, कोको #, ...) नोट तथापि कि (है

,, के अलावा सरणी), ये सभी उनके नामस्थानों द्वारा स्पष्ट रूप से भिन्न हैं, क्योंकि उनमें से कोई भी System या Microsoft नामस्थान में रहता है।


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

केवल Mono.Tasklet पुस्तकालय .NET पर लागू नहीं किया जा सकता है, क्योंकि इसे निरंतरता के लिए वीएम-स्तरीय समर्थन की आवश्यकता है।

+0

मोनो। एसआईएमडी .NET रनटाइम पर काम करता है, क्योंकि यह सॉफ्टवेयर पर वापस आता है। –

+0

@ मैट ओलेनिक: धन्यवाद। जाहिर है, मैंने सिम और निरंतरता को भ्रमित कर दिया। सिम काम करता है, लेकिन धीमा है, 'मोनो। टास्कलेट' नहीं है। –

3

नहीं। मोनो में कई वैकल्पिक UI ढांचे (जीटीके #, .NET, आदि के लिए WXWindows) शामिल हैं।

यदि आप केवल माइक्रोसॉफ्ट परिभाषित कक्षाओं का उपयोग करते हैं, तो आपको ठीक होना चाहिए।

2

मोनो CLI मानक का कार्यान्वयन है, जैसा कि CLR है।

इसमें .NET BCL में पाए जाने वाले कई पुस्तकालय शामिल हैं, लेकिन विंडोज़ विशिष्ट नहीं हैं (डब्लूएमआई एक संपूर्ण डोमेन है जो दिमाग में आता है)।

जब तक आप उन सुविधाओं को बनाए रखते हैं जो विंडोज़ विशिष्ट नहीं हैं, तो आपको ठीक होना चाहिए।

मोनो टीम ने यह जांचने के लिए एक टूल बनाया है कि आपका कोड मोनो - MoMA, मोनो माइग्रेशन विश्लेषक पर काम करना चाहिए या नहीं।

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

+0

मैं दूसरी तरफ बात कर रहा हूं। – Aillyn

2

मोनो बीसीएल एपीआई का विस्तार नहीं करता है, कम से कम System नामस्थान में नहीं। इसलिए, आप निश्चित रूप से निश्चित हो सकते हैं कि System नामस्थान से केवल प्रकार का उपयोग करने वाला एप्लिकेशन मोनो से .NET तक पुन: संकलन के बिना पोर्टेबल होगा। बेशक, आपको .NET दुनिया में आने के बाद Mono नेमस्पेस में कुछ भी नहीं मिलेगा।

Mono FAQ से:

आप गले और नेट का विस्तार करने की योजना है?

अच्छी तकनीक को गले लगाने अच्छा है। असंगत उपयोगकर्ताओं के लिए तरीकों का विस्तार करना उपयोगकर्ताओं के लिए खराब है, इसलिए हम तकनीकों में असंगत परिवर्तन करने की योजना नहीं बनाते हैं।

आप नवीन विचारों है, और नई कक्षाएं बनाने के लिए चाहते हैं, तो हम आपको उन कक्षाएं दोनों मोनो और .NET में सही ढंग से अच्छी तरह से काम करते हैं बनाने के लिए प्रोत्साहित करते हैं। आज मोनो अतिरिक्त पुस्तकालयों के साथ मोनो जहाजों को विकसित किया गया था या तो मोनो समुदाय, या अन्य समूहों के सदस्यों द्वारा विकसित किया गया था। कुछ मामलों में, हम अधूरा Microsoft से बिट्स पाया है, लेकिन हम एपीआई भंग होने से बचाने , बजाय हम नई विधानसभाओं (देखें Mono.Security)

+0

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

+0

मैंने सिम और निरंतरता को भ्रमित कर दिया। दरअसल, यह दूसरी तरफ है: सी # में सीपीयू-स्तरीय सिम निर्देशों को अनुकरण करके सिमड .NET पर काम करता है। निरंतरता नहीं है, क्योंकि उन्हें वीएम-स्तरीय निरंतरता समर्थन की आवश्यकता होती है। –

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