क्या मोनो प्राइम टाइम के लिए तैयार है?


312

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

+16

Mindtouch.com एक बहुत मजबूत विकी मंच के लिए डेबियन पर मोनो पर सी # का उपयोग कर रहा है। उन्हें बाहर की जाँच करें। आप एक पूर्वसंरचित वीएम भी डाउनलोड कर सकते हैं जिसे आप आसानी से सेटअप और उपयोग कर सकते हैं। 17 nov. 082008-11-17 06:09:32

+6

मैं पाया है मोनो का सबसे अच्छा उपयोग कहने के लिए, 07 feb. 112011-02-07 17:25:46

+4

मैं इस सवाल को फिर से पूछा किया जाना चाहिए लगता है "माइक्रोसॉफ्ट XXX करता है, तो हम यूनिक्स पर मोनो ... के लिए कदम हो सकता है" सक्षम किया जा रहा है, सब कुछ के बाद से बदल गया है कि विचार यह वाला। 16 jun. 142014-06-16 23:28:22

400

विचार करने के लिए कुछ परिदृश्य हैं: (ए) यदि आप मौजूदा एप्लिकेशन को पोर्ट कर रहे हैं और सोच रहे हैं कि क्या मोनो इस कार्य के लिए पर्याप्त है; (बी) आप कुछ नया कोड लिखना शुरू कर रहे हैं, और आप जानना चाहते हैं कि मोनो पर्याप्त परिपक्व है या नहीं।

पहले मामले के लिए, आप Mono Migration Analyzer tool (मोमा) का उपयोग करके यह मूल्यांकन कर सकते हैं कि आपका एप्लिकेशन मोनो पर कितना दूर चल रहा है। यदि मूल्यांकन उड़ान रंगों के साथ वापस आता है, तो आपको अपने परीक्षण और क्यूए पर शुरू करना चाहिए और जहाज के लिए तैयार होना चाहिए।

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

उपयोगकर्ता सबमिशन (यह स्मृति से है) के आधार पर हमारे मोमा आंकड़ों के मुताबिक लगभग 50% अनुप्रयोग बॉक्स के बाहर काम करते हैं, लगभग 25% के लिए एक सप्ताह के लायक काम (रिफैक्टरिंग, अनुकूलन) की आवश्यकता होती है 15% आपके कोड के दोबारा हिस्सों को फिर से करने के लिए एक गंभीर प्रतिबद्धता, और शेष पोर्टिंग को परेशान करने के लायक नहीं हैं क्योंकि वे Win32 से बहुत अविश्वसनीय रूप से बंधे हैं। उस बिंदु पर, या तो आप शून्य से शुरू करते हैं, या एक व्यावसायिक निर्णय आपके कोड को पोर्टेबल बनाने के प्रयास को चलाएगा, लेकिन हम महीने के काम के बारे में बात कर रहे हैं (कम से कम हमारे पास रिपोर्ट से)।

यदि आप खरोंच से शुरू कर रहे हैं, तो स्थिति बहुत आसान है, क्योंकि आप केवल मोनो में मौजूद एपीआई का उपयोग करेंगे। जब तक आप समर्थित स्टैक के साथ रहें (जो कि बहुत अधिक .NET 2.0 है, साथ ही 3.5 में सभी मूल उन्नयन LINQ और System.Core, साथ ही मोनो क्रॉस-प्लेटफ़ॉर्म एपीआई सहित) आप ठीक होंगे।

हर बार एक बार आप मोनो या सीमाओं में बग में भाग सकते हैं, और आपको उनके आसपास काम करना पड़ सकता है, लेकिन यह किसी भी अन्य सिस्टम से अलग नहीं है।

पोर्टेबिलिटी के लिए: एएसपी.NET अनुप्रयोग पोर्ट के लिए आसान हैं, क्योंकि उनके पास Win32 पर कोई निर्भरता नहीं है और आप SQL सर्वर या अन्य लोकप्रिय डेटाबेस का भी उपयोग कर सकते हैं (मोनो के साथ बहुत सारे बंडल डेटाबेस प्रदाता हैं) ।

विंडोज़.फॉर्म पोर्टिंग कभी-कभी ट्रिकियर होती है क्योंकि डेवलपर्स .NET सैंडबॉक्स से बचने के लिए पसंद करते हैं और पी/बीसीडी फॉर्म में एन्कोड किए गए दो बेजियर पॉइंट्स के रूप में व्यक्त कर्सर ब्लिंकिंग दर को बदलने के रूप में चीजों को कॉन्फ़िगर करने के लिए अपने मस्तिष्क को आमंत्रित करते हैं। wParam। या उस तरह कुछ जंक।

  0

अविश्वसनीय उत्तर, धन्यवाद! 24 oct. 082008-10-24 12:05:57

+1

मिगुएल फिर से है;) महान काम! 26 oct. 082008-10-26 15:40:07

+270

इस लड़के को लगता है कि वह कौन है? मोनो के निर्माता ??? !! ... ओ प्रतीक्षा करें .. 26 dec. 082008-12-26 17:32:00

+2

क्या मोनो में LINQ के बराबर है? क्योंकि मैं एक .NET डेवलपर हूं और मूल रूप से इस समस्या के कारण लिनक्स का उपयोग नहीं कर रहा हूं (दूसरों के बीच) 20 jan. 092009-01-20 22:04:06

+14

@Drahcir: LINQ मोनो पर काम करता है। यह विंडोज विशिष्ट नहीं है। तो आगे बढ़ें और लिनक्स आज़माएं। 20 may. 092009-05-20 23:34:59

+30

"कर्सर ब्लिंकिंग दर को बदलने के रूप में उपयोगी चीजों को एक डब्ल्यूपीएआरएम में बीसीडी फॉर्म में एन्कोड किए गए दो बेजियर अंक के रूप में व्यक्त किया गया है" लॉल 25 oct. 092009-10-25 17:24:11

+10

मोनो के लिए बहुत बहुत धन्यवाद ... 24 jun. 102010-06-24 01:23:31

  0

@theman_on_vista: lol 25 jun. 102010-06-25 01:23:18

+4

काफी उचित और सच्चा जवाब मिगुएल मोनो का निर्माता है। लेकिन जब यह एएसपीनेट के लिए सटीक है, तो वह यह नहीं कह रहा है कि भले ही Winforms रनटाइम लागू हो और सही तरीके से काम करता है, अधिकतर समय यह आपके मोनो एप्लिकेशन को बेचने के लिए पर्याप्त रूप से पर्याप्त नहीं दिखता/प्रस्तुत करता है। इसके लिए आपको GTK # का उपयोग करने की आवश्यकता है। और मोनो रनटाइम से समर्थन सब कुछ नहीं है। अगर कुछ moron system.io.path.directoryseparatorchar के बजाय विंडोज पथ विभाजक का उपयोग करते हैं तो यह बॉक्स से बाहर काम नहीं करेगा, और यह फाइलनाम ऊपरी-निचले मामलों में भी अंतर के लिए जाता है। आखिरी बात यह है कि तीसरे पक्ष के औजारों के लिए विशेष रूप से सच है 08 aug. 102010-08-08 13:47:54

  0

निष्पक्ष होने के लिए, यह प्रश्न 08 में पोस्ट किया गया था। तब से, मेरा मानना ​​है कि बहुत परिपक्व हो गया है। एक्सएनए बंदरगाह और मोनोटच भी हैं जो आशाजनक प्रतीत होते हैं। 09 mar. 112011-03-09 19:32:53

  0

> Windows.Forms कार्यान्वयन अभी भी एक छोटी छोटी गाड़ी है क्या आप जानते हैं कि विंडोज़ फॉर्म 2.0 के लिए मोनो 2.0 पूर्वावलोकन का समर्थन कितना अच्छा है? 20 aug. 082008-08-20 18:19:47

+26

माइग्यूल, इस पोस्ट पर अपडेट प्राप्त करना अच्छा लगेगा ;-) 13 jan. 122012-01-13 08:33:46

  0

यह ध्यान में रखना महत्वपूर्ण है कि डेस्कटॉप एप्लिकेशन और सर्वर-साइड कोड के बीच मूल रूप से एक बड़ा अंतर है। यदि आपके पास एक आरईएसटी एपीआई है या कुछ पृष्ठभूमि वेब क्रॉलर या नंबर क्रंचर संभावना है तो आप इसे अभी एक उबंटू सर्वर पर एक्सकॉपी कर सकते हैं और इसे चला सकते हैं। 05 jan. 142014-01-05 16:16:17

  0

@ miguel.de.icaza [क्या अंततः .NET कोर भविष्य में मोनो को प्रतिस्थापित करेगा?] (Http://stackoverflow.com/questions/34638105/how-to-port-to-net-core#comment57028604_34638105) 20 jan. 162016-01-20 14:52:12

+1

क्या मोमा है -तारीख तक? 10 feb. 162016-02-10 20:07:29


4

कई मामलों में, आप मौजूदा कोड ले सकते हैं और इसे मोनो पर चला सकते हैं, खासकर यदि आप एएसपी.NET एप्लिकेशन पोर्ट कर रहे हैं।

कुछ मामलों में, आपको इसे काम करने के लिए कोड के पूरे नए अनुभागों की आवश्यकता हो सकती है। यदि आप System.Windows.Forms का उपयोग करते हैं, उदाहरण के लिए, एप्लिकेशन असम्बद्ध काम नहीं करेगा। इसी प्रकार यदि आप किसी भी विंडोज-विशिष्ट कोड (उदाहरण के लिए रजिस्ट्री एक्सेस कोड) का उपयोग करते हैं। लेकिन मुझे लगता है कि सबसे खराब अपराधी यूआई कोड है। यह मैकिंतोश सिस्टम पर विशेष रूप से खराब है।


38

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

वेब तरफ, मोनो ने अधिकांश साइटों को पूरी तरह चलाने के लिए पर्याप्त एएसपी.NET लागू किया है। यहां कठिनाई उस होस्ट को ढूंढ रही है जिसमें apache पर mod_mono इंस्टॉल है, या यदि आपके होस्ट में शैल पहुंच है तो इसे स्वयं कर लें।

किसी भी तरह से, मोनो महान और स्थिर है।

  • उपयोग जीटीके Windows.Forms के बजाय #
  • ठीक से बजाय "\" हार्डकोड की अपनी फ़ाइल नाम
  • उपयोग Path.Separator केस को सुनिश्चित करें, यह भी उपयोग करें:

    कुंजी बातें जब एक क्रॉस प्लेटफॉर्म कार्यक्रम बनाने याद करने के लिए के बजाय Environment.NewLine

  • Win32 API पर किसी भी पी/आमंत्रण कॉल का उपयोग न करें।
  • विंडोज रजिस्ट्री का उपयोग न करें।
  0

जीटीके # बेहतर क्यों है? 25 feb. 092009-02-25 16:54:32

+2

पथ। प्रेषक अच्छी सलाह है, ओएस एक्स पर मोनो को छोड़कर ':', 'नहीं' है! हा! यह पुराना मैक ओएस (<= 9.0) विभाजक है। Wha? यूनिक्स/सभी तरह से है। 05 jun. 102010-06-05 07:29:06

+3

मैं पर्यावरण से परेशान नहीं हूं। न्यूलाइन या पथ। सेपरेटर, बस/और \ n का उपयोग करें। वर्तमान में लोकप्रिय उपयोग में प्रत्येक डेस्कटॉप सिस्टम (जब तक कि मैं कुछ याद नहीं कर रहा हूं),/और \ n का उपयोग करता है। विंडोज \ और \ r \ n पसंद करते हैं, लेकिन खुशी से यूनिक्स का उपयोग करेंगे। 04 aug. 132013-08-04 13:29:22


65

यह .NET 4.0 करने के लिए बहुत व्यापक कवरेज ऊपर है और यहां तक ​​कि .NET 4.5 एपीआई से कुछ विशेषताओं में शामिल हैं, लेकिन वहाँ कुछ क्षेत्रों है कि हम एपीआई के कारण लागू करने के लिए नहीं चुना है बहिष्कृत किया जा रहा है, नए विकल्प की जा रही हैं बनाया या दायरा बहुत बड़ा है। निम्न API मोनो में उपलब्ध नहीं हैं:

  • विंडोज प्रस्तुति फाउंडेशन
  • विंडोज कार्यप्रवाह फाउंडेशन (दो संस्करणों में से कोई भी)
  • इकाई की रूपरेखा
  • WSE1/WSE2 "ऐड-ऑन" के लिए मानक वेब सेवा स्टैक

इसके अतिरिक्त, हमारे डब्ल्यूसीएफ कार्यान्वयन तक सीमित है जो सिल्वरलाइट समर्थित है।

आपकी विशिष्ट परियोजना की जांच करने का सबसे आसान तरीका Mono Migration Analyzer (MoMA) चलाने के लिए है। लाभ यह है कि यह उन मुद्दों की मोनो टीम को सूचित करेगा जो आपको मोनो (यदि कोई हो) का उपयोग करने से रोक देगा, जो उन्हें उनके काम को प्राथमिकता देने देता है।

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

मोनो several commercial as well as open source products में सक्रिय उपयोग में है। यह इस तरह के Wikipedia and the Mozilla Developer Center के रूप में कुछ बड़े अनुप्रयोगों में उपयोग किया जा रहा है और इस तरह Sansa एमपी 3 प्लेयर और प्रकाशित गेम की शक्तियों हजारों के रूप में एम्बेडेड अनुप्रयोगों में इस्तेमाल किया गया है।

भाषा स्तर पर, the Mono compiler is fully compliant with the C# 5.0 language specification


1

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

किसी अन्य एप्लिकेशन की तरह, पूर्ण प्रतिबद्धता करने से पहले प्रोटोटाइप और परीक्षण करें।

एक और समस्या जो हमने भागी है वह लाइसेंस प्राप्त सॉफ़्टवेयर है: यदि आप किसी और के डीएलएल का संदर्भ दे रहे हैं, तो आप उस असेंबली में दंडित असंगतताओं के आसपास अपना रास्ता कोड नहीं कर सकते हैं।


2

क्या आप जानते हैं कि विंडोज फॉर्म 2.0 के लिए मोनो 2.0 पूर्वावलोकन का समर्थन कितना अच्छा है?

मैंने जो कुछ भी खेला है उससे अपेक्षाकृत पूर्ण और लगभग उपयोग योग्य लग रहा था। यह कुछ जगहों पर बिल्कुल सही नहीं दिख रहा था और अभी भी थोड़ा हिट या मिस है। यह मुझे आश्चर्यचकित करता है कि यह हमारे कुछ रूपों के साथ-साथ ईमानदारी से काम करता है।


1

मैं तो कल्पना कर सकते हैं अगर आप कुछ 3 पार्टी घटकों आप भरवां किया जा सकता है के साथ एक आवेदन पत्र है। मुझे शक है विक्रेताओं का एक बहुत ध्यान में मोनो के साथ विकास होगा

उदाहरण: http://community.devexpress.com/forums/p/55085/185853.aspx


4

हम एक परियोजना यहाँ काम पर कि लिनक्स पर चलने लेकिन है कि हम बनाया कुछ नेट पुस्तकालयों का पुन: उपयोग करने के लिए आवश्यक के लिए उपयोग किया गया है प्रबंधित सी ++ में। मैं बहुत आश्चर्यचकित हूं कि यह कितनी अच्छी तरह से काम कर रहा है। हमारा मुख्य निष्पादन योग्य सी # में लिखा जा रहा है और हम किसी भी मुद्दे के साथ हमारे प्रबंधित सी ++ बाइनरी का संदर्भ दे सकते हैं। विंडोज और लिनक्स के बीच सी # कोड में एकमात्र अंतर आरएस 232 सीरियल पोर्ट कोड है।

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

  0

तो आप दोनों धारावाहिक बंदरगाहों के लिए कोड कैसे लिखते हैं? सीएलआर/मोनो का पूरा बिंदु मंच स्वतंत्र होना है, है ना? क्या यह कॉन्फ़िगरेशन फाइलों में किया जाता है? 12 jan. 092009-01-12 04:46:17


5

मोमा, इस के लिए एक महान उपकरण है। इन दिनों असंगतता का सबसे बड़ा स्रोत वे अनुप्रयोग हैं जो Win32 पुस्तकालयों में DllImport (या P/Invoke) हैं। कुछ असेंबली लागू नहीं की जाती हैं, लेकिन उनमें से अधिकांश केवल विंडोज़ हैं और वास्तव में लिनक्स पर समझ नहीं पाएंगे। मुझे लगता है कि यह कहना सुरक्षित है कि अधिकांश एएसपी.NET अनुप्रयोग सीमित संशोधनों के साथ मोनो पर चल सकते हैं।

(प्रकटीकरण: मैंने मोनो में योगदान दिया है, साथ ही लिखित ऐप्स जो इसके शीर्ष पर चलते हैं।)

+4

यह मोनो माइग्रेशन विश्लेषक है जो अपने सिर को खरोंच करने के लिए सोच रहा है कि यह आधुनिक कला संग्रहालय के साथ क्या करना है। फॉलो अप के लिए 26 oct. 082008-10-26 12:24:59


21

स्वीकार्य उत्तर की सिफारिशें अब थोड़ी पुरानी हैं।

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

+1 ... ऐसा लगता है कि इस पृष्ठ को एक बार फिर से पुराना हो सकता है। 08 jul. 102010-07-08 02:25:30

+1

हाँ, मोनो में गति के साथ दो साल का जीवनकाल है जो लोग काम करते हैं। 08 jul. 102010-07-08 14:01:26


12

यदि आप भाग्य से बाहर डब्ल्यूपीएफ का उपयोग करना चाहते हैं तो मोनो में वर्तमान में इसे लागू करने की कोई योजना नहीं है।

http://www.mono-project.com/WPF

+3

यह वास्तव में बहुत बुरा है। डब्ल्यूपीएफ एक सभ्य यूआई टूलकिट है। 30 aug. 092009-08-30 07:21:09


2

हाँ, यह निश्चित रूप से हम रा-अजाक्स में (अजाक्स http://ra-ajax.org में पाया पुस्तकालय) मोनो समर्थन करते हैं और हम ज्यादातर सभी में समस्या हो रही है नहीं कर रहे हैं है (यदि आप सावधान हालांकि रहे हैं) । आपको कुछ "सबसे पागल चीजों" से सावधान रहना चाहिए। नेट की तरह डब्लूएसई इत्यादि, और शायद आपकी कुछ मौजूदा परियोजनाएं 100% मोनो संगत नहीं होंगी, लेकिन यदि आप विकास के दौरान उनका परीक्षण करेंगे तो नई परियोजनाएं अधिकतर होंगी मोनो के साथ समस्याओं के बिना संगत हो। और मोनो का उपयोग करके लिनक्स इत्यादि का समर्थन करने से लाभ वास्तव में अच्छा है;)

मोनो का समर्थन करने के रहस्य का एक बड़ा हिस्सा मुझे लगता है कि शुरुआत से सही टूल का उपयोग करना है, उदा। ActiveRecord, log4net, ra-ajax आदि ...


2

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

त्रुटि संदेश है: "जी सी में घातक त्रुटियों: बहुत से ढेर वर्गों", यहाँ किसी के लिए एक लिंक किसी और एक से थोड़ा अलग तरीके से समस्या का सामना कर रहा है:

http://bugzilla.novell.com/show_bug.cgi?id=435906

की पहली टुकड़ा कोड जो हम मोनो में भाग चुके थे, वह एक सरल प्रोग्रामिंग चुनौती थी जिसे हमने विकसित किया था ... कोड कुछ डेटा संरचनाओं (जैसे हैशसेट्स) में लगभग 10 एमबी डेटा लोड करता है, फिर डेटा के खिलाफ 10 प्रश्न चलाता है। हमने उन्हें समय देने और औसत प्राप्त करने के लिए 100 बार प्रश्नों को चलाया।

कोड विंडोज़ पर 55 वें प्रश्न के आसपास दुर्घटनाग्रस्त हो गया। लिनक्स पर यह काम करता था, लेकिन जैसे ही हम एक बड़े डेटा सेट में चले गए, यह भी क्रैश हो जाएगा।

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

हमारे लोगों में से एक ने मिगुएल को ईमेल किया और उस कोड को शामिल किया जो समस्या का कारण बन गया, अभी तक कोई प्रतिक्रिया नहीं है। :(

यह भी कई अन्य लोगों समाधान के बिना इस समस्या का सामना करना पड़ा की तरह लगता है - एक समाधान अलग जीसी सेटिंग्स के साथ मोनो पुन: संयोजित करने के लिए सुझाव दिया गया है, लेकिन वह सिर्फ सीमा बढ़ाने के लिए जो इससे पहले कि यह दुर्घटनाओं प्रकट होता है

+9

बगजिला बग की रिपोर्ट करने का स्थान है: मिगुएल बेहद व्यस्त है और कोई भी उसे व्यक्तिगत बग रिपोर्ट भेजने वाले सभी के साथ नहीं रह सकता है। यदि आप नमूना कोड प्रकाशित नहीं कर सकते हैं तो आपको अभी भी बगजिला में समस्या की रिपोर्ट करनी चाहिए और वहां ध्यान दें कि आपने नमूना मिगुएल या मुझे ([email protected]) पर भेजा है। 27 oct. 082008-10-27 08:27:06


2

बस। www.plasticscm.com की जाँच करें। सब कुछ (ग्राहक, सर्वर, जीयूआई, उपकरण विलय) मोनो पर लिखा है।


23

मैं व्यक्तिगत रूप से एक प्राइम टाइम env में मोनो का उपयोग करें। मैं मोनो यूडीपी के Giga-बाइट के साथ काम कर सर्वर संचालित/टीसीपी डेटा प्रसंस्करण संबंधित कार्यों और खुश नहीं हो सकता है।

peculiarities रहे हैं, और सबसे कष्टप्रद चीजों में से एक यह है कि आप न केवल अपने MSBuild फ़ाइलें मोनो वर्तमान स्थिति की वजह से "का निर्माण" कर सकते हैं:

  • monodevelop (आईडीई) कुछ आंशिक MSBuild समर्थन हासिल है , लेकिन मूल रूप से किसी भी "असली" निर्माण को एक साधारण हैलो-वर्ल्ड (कस्टम बिल्ड कार्य, गतिशील "गुणों" जैसे $ (सोल्यूशनडियर), वास्तविक कॉन्फ़िगरेशन को कुछ मृत-सिरों के नाम से परे भरोसा कर देगा)
  • xbuild जो SHOULD मोनो-सप्लाई-एमएसबिल्ड-पूरी तरह से संगत-निर्माण-प्रणाली और भी भयानक है, इसलिए कमांड लाइन से निर्माण वास्तव में एक खराब अनुभव है जीयूआई, जो एक बहुत ही "अपरंपरागत" लिनक्स वातावरण के लिए संघ की स्थिति है का उपयोग करने से ience ...

एक बार/अपना सामान वास्तव में निर्मित हो रही है के दौरान, आपको लगता है कि समर्थन किया जाना चाहिए यहां तक ​​कि कोड के लिए कुछ wildernesses देख सकते हैं जैसे:

  • संकलक कुछ निर्माणों
  • और कुछ और अधिक उन्नत/नई नेट वर्गों आप अ-उम्मीद बकवास फेंक (? XLinq किसी को भी)
  • कुछ अपरिपक्व क्रम "सुविधाओं" पर borked हो रही (3GB x64 पर ढेर सीमा ... डब्ल्यूटीएफ!)

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

एक बार जब आप उन शुरुआती बाधाओं पर चले गए, तो मेरा अनुभव मोनो रोक्स है, और प्रत्येक पुनरावृत्ति के साथ बेहतर हो रहा है।

मेरे पास मोनो के साथ चलने वाले सर्वर हैं, प्रति दिन 300 जीबी डेटा प्रोसेसिंग करते हैं, जिनमें बहुत से पी/इनवॉक्स होते हैं और आम तौर पर काम के बहुत सारे काम करते हैं और 5-6 महीने तक यूपी रहते हैं, यहां तक ​​कि "खून बहने वाले किनारे" मोनो के साथ भी ।

उम्मीद है कि इससे मदद मिलती है।

+1

क्या आप मुझे बता सकते हैं (यदि आप कर सकते हैं) आप किस वेबसाइट के बारे में बात कर रहे हैं? 15 oct. 122012-10-15 15:39:26


1

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

+4

यह वास्तविक सबूत तथ्य के रूप में प्रस्तुत किया और मेरे लिए भर आता है के रूप में FUD 23 apr. 132013-04-23 11:32:31

  0

असल ASP.NET तेजी से हो सकता है आईआईएस पर से nginx/तेजी से cgi के तहत चल रहा है। यह सब इस बात पर निर्भर करता है कि ढांचे के किस हिस्से को पोर्ट किया गया है/अच्छी तरह से परीक्षण किया गया है: http://www.mono-project.com/compatibility। @firegrass से सहमत होना चाहिए। 22 may. 132013-05-22 14:36:17

+1

इस तरह के रूप में प्रस्तुत किया एक व्यक्ति की व्यक्तिगत अनुभव है। साथ यह लगाकर के अपवाद के साथ "मुझे लगता है" यह इस चर्चा के लिए एक वैध योगदान है। 03 feb. 142014-02-03 10:14:47


9

अच्छा, मोनो महान है, लेकिन जहां तक ​​मैं देख सकता हूं, यह अस्थिर है। यह काम करता है, लेकिन जब आप मोनो प्रक्रिया को करने के लिए गंभीर काम करते हैं तो दोष होता है।

टी एल; डॉ - मोनो का उपयोग न करें यदि आप:

  • उपयोग AppDomains (विधानसभा लोड \ अनलोड) बहु-क्रम वातावरण में
  • को बनाए रखने नहीं कर सकता 'चलो यह असफल' मॉडल
  • प्रक्रिया चलाने के दौरान कभी-कभी भारी लोड घटनाओं का अनुभव

तो, तथ्यों।

हम आरएचईएल 5, उबंटू पर मोनो-2.6.7 (.नेट वी 3.5) का उपयोग करते हैं, और मेरे दृष्टिकोण के अनुसार, यह नोवेल द्वारा निर्मित सबसे स्थिर संस्करण है।इसे अनलोडिंग ऐपडोमेन्स (सेगफाल्ट्स) के साथ एक मुद्दा है, हालांकि, यह बहुत दुर्लभ विफल रहता है और यह अब तक स्वीकार्य है (हमारे द्वारा)।

ठीक है। लेकिन अगर आप .NET 4.0 की विशेषताओं का उपयोग करना चाहते हैं, तो आपको संस्करण 2.10.x, या 3.x पर स्विच करना होगा, और यही वह समस्या है जहां समस्याएं शुरू होती हैं।

2.6.7 की तुलना में, नए संस्करणों सिर्फ प्रयोग की जाने वाली अस्वीकार्य हैं। मैंने मोनो इंस्टॉलेशन का परीक्षण करने के लिए एक सरल तनाव परीक्षण आवेदन लिखा था।

यह यहाँ है, निर्देशों का उपयोग करने के लिए के साथ: https://github.com/head-thrash/stress_test_mono

यह थ्रेड का उपयोग करता पूल कार्यकर्ता धागे। कार्यकर्ता AppDomain को डीएलएल लोड करता है और कुछ गणित-कार्य करने की कोशिश करता है। कुछ काम बहुत थ्रेडेड हैं, कुछ सिंगल हैं। लगभग सभी काम सीपीयू-बाध्य है, हालांकि डिस्क से फ़ाइलों के कुछ पठन हैं।

परिणाम बहुत अच्छे नहीं हैं। वास्तव में, संस्करण 3.0.12 के लिए:

  • sgen जीसी segfaults प्रक्रिया लगभग immediatly
  • बोहम साथ मोनो अब रहता है (2 से 5 घंटे से), लेकिन segfaults अंततः

ऊपर उल्लेख किया है, sgen जीसी बस (स्रोत से बनाया मोनो) काम नहीं करता:

* Assertion: should not be reached at sgen-scan-object.h:111 

Stacktrace: 


Native stacktrace: 

    mono() [0x4ab0ad] 
    /lib/x86_64-linux-gnu/libpthread.so.0(+0xfcb0) [0x2b61ea830cb0] 
    /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x2b61eaa74425] 
    /lib/x86_64-linux-gnu/libc.so.6(abort+0x17b) [0x2b61eaa77b8b] 
    mono() [0x62b49d] 
    mono() [0x62b5d6] 
    mono() [0x5d4f84] 
    mono() [0x5cb0af] 
    mono() [0x5cb2cc] 
    mono() [0x5cccfd] 
    mono() [0x5cd944] 
    mono() [0x5d12b6] 
    mono(mono_gc_collect+0x28) [0x5d16f8] 
    mono(mono_domain_finalize+0x7c) [0x59fb1c] 
    mono() [0x596ef0] 
    mono() [0x616f13] 
    mono() [0x626ee0] 
    /lib/x86_64-linux-gnu/libpthread.so.0(+0x7e9a) [0x2b61ea828e9a] 
    /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x2b61eab31ccd] 

बोहम segfauls का सवाल है - उदाहरण के लिए (उबंटू 13.04, मोनो स्रोत से बनाया):

+०१२३५१६४१०
mono: mini-amd64.c:492: amd64_patch: Assertion `0' failed. 
Stacktrace: 
at <unknown> <0xffffffff> 
at System.Collections.Generic.Dictionary`2.Init (int,System.Collections.Generic.IEqualityComparer`1<TKey>) [0x00012] in /home/bkmz/my/mono/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:264 
at System.Collections.Generic.Dictionary`2..ctor() [0x00006] in /home/bkmz/my/mono/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:222 
at System.Security.Cryptography.CryptoConfig/CryptoHandler..ctor (System.Collections.Generic.IDictionary`2<string, System.Type>,System.Collections.Generic.IDictionary`2<string, string>) [0x00014] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/Crypto 
Config.cs:582 
at System.Security.Cryptography.CryptoConfig.LoadConfig (string,System.Collections.Generic.IDictionary`2<string, System.Type>,System.Collections.Generic.IDictionary`2<string, string>) [0x00013] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/CryptoCo 
nfig.cs:473 
at System.Security.Cryptography.CryptoConfig.Initialize() [0x00697] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/CryptoConfig.cs:457 
at System.Security.Cryptography.CryptoConfig.CreateFromName (string,object[]) [0x00027] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/CryptoConfig.cs:495 
at System.Security.Cryptography.CryptoConfig.CreateFromName (string) [0x00000] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/CryptoConfig.cs:484 
at System.Security.Cryptography.RandomNumberGenerator.Create (string) [0x00000] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/RandomNumberGenerator.cs:59 
at System.Security.Cryptography.RandomNumberGenerator.Create() [0x00000] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/RandomNumberGenerator.cs:53 
at System.Guid.NewGuid() [0x0001e] in /home/bkmz/my/mono/mcs/class/corlib/System/Guid.cs:492 

या (RHEL5, मोनो आरपीएम से यहाँ ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home%3A/vmas%3A/mono-centos5 लिया जाता है)

Assertion at mini.c:3783, condition `code' not met 
Stacktrace: 
at <unknown> <0xffffffff> 
at System.IO.StreamReader.ReadBuffer() [0x00012] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.IO/StreamReader.cs:394 
at System.IO.StreamReader.Peek() [0x00006] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.IO/StreamReader.cs:429 
at Mono.Xml.SmallXmlParser.Peek() [0x00000] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/Mono.Xml/SmallXmlParser.cs:271 
at Mono.Xml.SmallXmlParser.Parse (System.IO.TextReader,Mono.Xml.SmallXmlParser/IContentHandler) [0x00020] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/Mono.Xml/SmallXmlParser.cs:346 
at System.Security.Cryptography.CryptoConfig.LoadConfig (string,System.Collections.Generic.IDictionary`2<string, System.Type>,System.Collections.Generic.IDictionary`2<string, string>) [0x00021] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Security.Cryptog 
raphy/CryptoConfig.cs:475 
at System.Security.Cryptography.CryptoConfig.Initialize() [0x00697] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Security.Cryptography/CryptoConfig.cs:457 
at System.Security.Cryptography.CryptoConfig.CreateFromName (string,object[]) [0x00027] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Security.Cryptography/CryptoConfig.cs:495 
at System.Security.Cryptography.CryptoConfig.CreateFromName (string) [0x00000] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Security.Cryptography/CryptoConfig.cs:484 
at System.Security.Cryptography.RandomNumberGenerator.Create (string) [0x00000] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Security.Cryptography/RandomNumberGenerator.cs:59 
at System.Security.Cryptography.RandomNumberGenerator.Create() [0x00000] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Security.Cryptography/RandomNumberGenerator.cs:53 
at System.Guid.NewGuid() [0x0001e] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System/Guid.cs:483 
at System.Runtime.Remoting.RemotingServices.NewUri() [0x00020] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Runtime.Remoting/RemotingServices.cs:356 
at System.Runtime.Remoting.RemotingServices.Marshal (System.MarshalByRefObject,string,System.Type) [0x000ba] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Runtime.Remoting/RemotingServices.cs:329 
at System.AppDomain.GetMarshalledDomainObjRef() [0x00000] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System/AppDomain.cs:1363 

दोनों विफलताओं किसी भी तरह AppDomains तर्क से जुड़े हैं, हां, तो आप मोनो में उन लोगों से दूर रहना चाहिए।

Btw, परीक्षण किया कार्यक्रम 24 घंटे Windows मशीन पर एमएस .NET 4.5 env में किसी भी असफल बिना काम किया।

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

  0

आप [Xamarin बगजिला] (https://bugzilla.xamarin.com/index.cgi) में एक बग दाखिल की कोशिश की? 09 mar. 142014-03-09 10:38:28