.NET कोर बनाम मोनो


257

.NET कोर और मोनो के बीच अंतर क्या है?

मुझे आधिकारिक साइट पर एक बयान मिला, जिसमें कहा गया था: "इसके लिए लिखा गया कोड एप्लीकेशन स्टैक, जैसे मोनो भी पोर्टेबल है।"

मेरा लक्ष्य एक वेबसाइट बनाने के लिए C #, LINQ, EF7 और विज़ुअल स्टूडियो का उपयोग करना है जिसे लिनक्स पर चलाया / होस्ट किया जा सकता है।

किसी ने मुझे बताया कि वह चाहता था कि यह "मोनो में" हो, लेकिन मुझे नहीं पता कि इसका क्या मतलब है। मुझे पता है कि मैं ऊपर सूचीबद्ध प्रौद्योगिकियों के साथ .NET कोर 1.0 का उपयोग करना चाहता हूं। उन्होंने यह भी कहा कि वह "तेज सीजीआई" का उपयोग करना चाहते हैं। मुझे नहीं पता कि इसका क्या मतलब है।

क्या आप इन सभी शब्दों को समझने में मेरी मदद कर सकते हैं और यदि मेरी अपेक्षाएँ यथार्थवादी हैं?


2
मुझे यकीन नहीं है .NET कोर मोनो पर समर्थित है (या अगर इसे मोनो की आवश्यकता है, तो अब?), कम से कम पूरी तरह से नहीं। मोनो क्या समर्थन करता है, इसके लिए यहां एक नज़र डालें । FastCGI केवल सर्वर है जो मोनो के साथ ASP.NET कोड चलाता है। अब, यह कहते हुए कि, क्या आपको लिनक्स पर इसे चलाने की कोई खास वजह है? यदि कोई दबाने का कारण नहीं है (केवल लिनक्स का उपयोग करना चाहते हैं), तो .NET कोड को चलाने के लिए विंडोज़ सर्वर को हड़पने के लिए बेहतर है, कम से कम समय के लिए।
रोब

हां, जिस सर्वर पर इसे होस्ट किया जाएगा, वह निश्चित रूप से लिनक्स होगा। यह विंडोज़ सर्वर का उपयोग करने का विकल्प नहीं है। आपने कहा कि आप यकीन नहीं कर रहे हैं यदि .NET कोर मोनो पर समर्थित है। लेकिन मुझे नहीं पता कि मोनो क्या है। मोनो के बजाय .Net कोर का उपयोग करने के लिए एक तर्क क्या होगा?
कप्तानलोनेट

12
मोनो क्या है के बारे में सामान्य होना: यह अनिवार्य रूप से .net पुस्तकालयों (प्लस संकलन और दुभाषियों) का एक ओपन-सोर्स कार्यान्वयन है। उदाहरण के लिए, जब आप लिखते हैं Math.Pow(2, 3)- जिन बायनेरिज़ में कार्यान्वयन होता है वे बंद-स्रोत होते हैं और केवल खिड़कियों के लिए होते हैं। कुछ लोगों ने तय किया कि वे .NET को इतना पसंद करते हैं कि वे इसे * nix के लिए चाहते हैं। इसलिए उन्होंने बंद-स्रोत बायनेरिज़ का अपना संस्करण लिखा। फिर उन्होंने एक कंपाइलर, और एक दुभाषिया लिखा। मोनो अनिवार्य रूप से उन सभी चीजों का पुन: कार्यान्वयन है जो पहले बंद स्रोत थे, और विंडोज़ / लिनक्स / ओएक्सएक्स पर चलाने के लिए लिखे गए थे।
रोब

1
मैंने पिछले साल एक ब्लॉग पोस्ट लिखा था, blog.lextudio.com/2015/12/… आप एक का उपयोग कर सकते हैं, लेकिन .NET कोर उज्जवल भविष्य होने जा रहा है।
लेक्स ली

3
".NET Core" में "Core" शब्द गलत धारणा का स्रोत हो सकता है। अपने बच्चों को उचित नाम दें!
मनी ओरिएंटेड प्रोग्रामर

जवाबों:


256

Necromancing।
वास्तविक उत्तर प्रदान करना।

.नेट कोर और मोनो में क्या अंतर है?

.NET कोर अब आधिकारिक तौर पर .NET का भविष्य है। यह ASP.NET MVC फ्रेमवर्क और कंसोल अनुप्रयोगों के फिर से लिखने के साथ अधिकांश भाग के लिए शुरू हुआ , जिसमें बेशक सर्वर अनुप्रयोग शामिल हैं। (चूंकि यह ट्यूरिंग-पूर्ण है और सी dlls के साथ इंटरोप का समर्थन करता है, तो आप कर सकते हैं, यदि आप पूरी तरह से चाहते हैं, तो इसके साथ अपने स्वयं के डेस्कटॉप एप्लिकेशन भी लिखें, उदाहरण के लिए एवलोनिया जैसी 3-पार्टी लाइब्रेरी के माध्यम से, जो उस समय सबसे बुनियादी थे जब मैंने पहली बार यह लिखा था, जिसका मतलब था कि आप वेब या सर्वर के सामान तक बहुत सीमित थे।) समय के साथ, .NET कोर में कई एपीआई जोड़े गए हैं, इतना ही कि संस्करण 3.1 के बाद। .NET कोर संस्करण 5.0 में कूद जाएगा, जिसे "Core" के बिना .NET 5.0 के रूप में जाना जाएगा, और उसके बाद .NET फ्रेमवर्क का भविष्य होगा। क्या पूर्ण .NET फ्रेमवर्क हुआ करता था, कुछ दशकों तक Full .NET फ्रेमवर्क 4.8.x के रूप में रखरखाव मोड में घूमता रहेगा, जब तक कि यह मर नहीं जाएगा (शायद अभी भी कुछ अपग्रेड होने जा रहे हैं, लेकिन मुझे संदेह है)। दूसरे शब्दों में, .NET कोर .NET का भविष्य है, और पूर्ण .NET फ्रेमवर्क डोडो / सिल्वरलाइट / विंडोजफोन के रास्ते पर जाएगा

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

जबकि .NET कोर रनटाइम कई ऑपरेटिंग सिस्टम और प्रोसेसर का समर्थन करता है, एसडीके एक अलग कहानी है। और जब एसडीके कई ओएस का समर्थन करता है, तो एसडीके के लिए एआरएम समर्थन अभी भी प्रगति पर है। .NET कोर Microsoft द्वारा समर्थित है। डॉटनेट-कोर WinForms या WPF या ऐसा कुछ भी नहीं आया।

  • संस्करण 3.0 के रूप में, WinForms और WPF भी .NET कोर द्वारा समर्थित है, लेकिन केवल विंडोज पर, और केवल C # द्वारा। VB.NET द्वारा नहीं (2020 में V5 के लिए योजनाबद्ध VB.NET समर्थन)। और .NET Core में कोई फॉर्म डिज़ाइनर नहीं है: इसे बाद में किसी अनिर्दिष्ट समय पर विज़ुअल स्टूडियो अपडेट के साथ भेज दिया जा रहा है।
  • WebForms अभी भी .NET Core द्वारा समर्थित नहीं हैं, और उनका समर्थन करने के लिए कोई योजना नहीं है, कभी भी ( ब्लेज़र उस के लिए शहर में नया बच्चा है)।
  • .NET कोर भी System.Runtime के साथ आता है, जो mscorelib की जगह लेता है।
  • अक्सर, .NET कोर को NetStandard के साथ मिलाया जाता है , जो कि System.Runtime / mscorelib (और कुछ अन्य) के आसपास एक आवरण है, जो आपको पुस्तकालयों को लिखने की अनुमति देता है जो .NET कोर, Full .NET फ्रेमवर्क और Xarinarin (iOS) को लक्षित करते हैं / Android), सभी एक ही समय में।
  • .NET कोर SDK एआरएम पर काम नहीं करता / नहीं करता, कम से कम पिछली बार जब मैंने जाँच नहीं की।

"द मोनो प्रोजेक्ट" .NET कोर से बहुत पुराना है।
मोनो स्पेनिश है और बंदर का मतलब है, और एक पक्ष-टिप्पणी के रूप में, नाम का मोनोन्यूक्लिओसिस के साथ कोई लेना-देना नहीं है (संकेत: आप http://primates.ximian.com /) के तहत कर्मचारियों की एक सूची प्राप्त कर सकते हैं ।
मोनो की शुरुआत 2005 में मिगुएल डी इकजा ( गनोम - और कुछ अन्य लोगों ने शुरू की थी ) लिनक्स के लिए .NET फ्रेमवर्क (Ximian / SuSe / Novell) के कार्यान्वयन के रूप में की गई थी। मोनो में वेब-फॉर्म, विनफॉर्म, एमवीसी, ओलिव और एक आईडीई शामिल है जिसे मोनोडेवलप कहा जाता है(Xamarin Studio या Visual Studio Mac के रूप में भी जाना जाता है)। मूल रूप से (OpenJDK) JVM और (OpenJDK) JDK / JRE (SUN / Oracle JDK के विपरीत) के समकक्ष। आप लिनक्स पर काम करने के लिए ASP.NET-WebForms + WinForms + ASP.NET-MVC एप्लिकेशन प्राप्त करने के लिए इसका उपयोग कर सकते हैं।

मोनो Xamarin द्वारा समर्थित है (Ximian का उपयोग करने के लिए नई कंपनी का नाम, जब वे लिनक्स बाजार के बजाय मोबाइल बाजार पर ध्यान केंद्रित करते थे), और Microsoft द्वारा नहीं।
(चूंकि Xamarin को Microsoft द्वारा खरीदा गया था, यह तकनीकी रूप से [लेकिन सांस्कृतिक रूप से नहीं] Microsoft है।)
आपको आमतौर पर मोनो पर संकलन करने के लिए अपना C # सामान मिलेगा, लेकिन VB.NET सामान नहीं।
मोनो कुछ उन्नत सुविधाओं को याद करता है, जैसे डब्ल्यूएसई / डब्ल्यूसीएफ और वेबपार्ट्स।
मोनो कार्यान्वयन में से कई अधूरे हैं (जैसे ECDSA एन्क्रिप्शन में NotImforceedException फेंकें), छोटी गाड़ी (जैसे Firebird के साथ ODBC / ADO.NET), .NET की तुलना में अलग तरीके से व्यवहार करते हैं (उदाहरण के लिए XML- क्रमांकन या अन्यथा अस्थिर (ASP.NET MVC) और अस्वीकार्य रूप से धीमा (रेगेक्स)। उल्टा, मोनो टूलचिन एआरएम पर भी काम करता है।

जहाँ तक .NET कोर का संबंध है, जब वे क्रॉस-प्लेटफ़ॉर्म कहते हैं, तो यह उम्मीद न करें कि क्रॉस-प्लेटफ़ॉर्म का अर्थ है कि आप एआरएम-लिनक्स पर वास्तव में एप-कोर स्थापित कर सकते हैं, जैसे आप इलास्टिकसर्च के साथ कर सकते हैं। आपको स्रोत से संपूर्ण रूपरेखा संकलित करनी होगी।
यही है, यदि आपके पास वह स्थान है (जैसे कि Chrome बुक पर, जिसमें 16 से 32 जीबी कुल एचडी है)।
यह भी OpenSSL 1.1 और libcurl के साथ असंगति के मुद्दों के लिए इस्तेमाल किया।
उन्हें .NET कोर संस्करण 2.2 के नवीनतम संस्करण में ठीक किया गया है।
पार मंच के लिए इतना।

मुझे आधिकारिक साइट पर एक बयान मिला, जिसमें कहा गया था, "इसके लिए लिखा गया कोड एप्लीकेशन स्टैक पर भी पोर्टेबल है, जैसे मोनो"।

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

नोट:
.NET कोर 2.0 के रूप में, System.Drawing.Common (NuGet) है, जिसमें System.Drawing की अधिकांश कार्यक्षमता शामिल है। यह .NET-Core 2.1 में कम-से-कम फ़ीचर-पूर्ण होना चाहिए। हालाँकि, System.Drawing.Common GDI + का उपयोग करता है, और इसलिए Azure पर काम नहीं करेगा (System.Drawing लाइब्रेरी Azure Cloud Service [मूल रूप से सिर्फ एक VM] में उपलब्ध है, लेकिन Azure वेब ऐप में नहीं [मूल रूप से साझा होस्टिंग?]
तो अब तक, System.Drawing.Common लिनक्स / मैक पर ठीक काम करता है, लेकिन इसमें iOS / Android के मुद्दे हैं - अगर यह बिल्कुल भी काम करता है, तो।
.NET कोर 2.0 से पहले, जिसे कुछ समय फरवरी 2017 के मध्य में कहना है, आप स्केयशर का उपयोग इमेजिंग के लिए कर सकते हैं (उदाहरण के लिए) (आप अभी भी कर सकते हैं)।
पोस्ट .net-core 2.0, आप देखेंगे कि सिक्सलैबर्स ImageSharpजाने का रास्ता है, चूंकि System.Drawing आवश्यक रूप से सुरक्षित नहीं है, और इसमें बहुत सारी संभावित या वास्तविक मेमोरी लीक हैं, यही कारण है कि आपको वेब-अनुप्रयोगों में GDI का उपयोग नहीं करना चाहिए; ध्यान दें कि SkiaSharp ImageSharp की तुलना में बहुत तेज है, क्योंकि यह देशी-पुस्तकालयों का उपयोग करता है (जो एक ड्रॉ भी हो सकता है)। यह भी ध्यान दें कि GDI + लिनक्स और मैक पर काम करता है, इसका मतलब यह नहीं है कि यह iOS / Android पर काम करता है।

.NET (नॉन-कोर) के लिए लिखा गया कोड .NET कोर के लिए पोर्टेबल नहीं है।
मतलब, यदि आप पीडीएफ-दस्तावेज (बहुत ही सामान्य) बनाने के लिए एक गैर-जीपीएल सी # लाइब्रेरी जैसे पीडीएफशार्प चाहते हैं, तो आप भाग्य से बाहर हैं(इस समय)( अब नहीं )। कभी भी रिपोर्ट व्यूवर नियंत्रण का ध्यान न रखें, जो Windows-pInvokes का उपयोग करता है (एन्क्रिप्ट करने के लिए, COM के माध्यम से mcdf दस्तावेज़ बनाएं, और फ़ॉन्ट, वर्ण, कर्निंग, फ़ॉन्ट एम्बेडिंग जानकारी प्राप्त करने के लिए, तारों को मापें और लाइन-ब्रेकिंग करें, और वास्तव में स्वीकार्य गुणवत्ता के चित्र बनाने के लिए) , और लिनक्स पर मोनो पर भी नहीं चल रहा है
( मैं उस पर काम कर रहा हूं )।

इसके अलावा, .NET कोर में लिखा कोड मोनो के लिए पोर्टेबल नहीं है, क्योंकि मोनो में .NET कोर रनटाइम लाइब्रेरी (अब तक) का अभाव है।

मेरा लक्ष्य एक वेबसाइट बनाने के लिए C #, LINQ, EF7, विज़ुअल स्टूडियो का उपयोग करना है जिसे लिनक्स में चलाया / होस्ट किया जा सकता है।

ईएफ़ के किसी भी संस्करण में, जो मैंने अब तक कोशिश की थी, वह इतना धीमा था (यहां तक ​​कि इस तरह की सरल चीजों पर भी, जैसे कि एक टेबल के साथ एक बाएं-जुड़ाव), मैं कभी भी इसकी सिफारिश नहीं करूंगा - विंडोज पर भी नहीं।
यदि आपके पास अद्वितीय-बाधाएं, या वैरिनरी / फ़िलेस्ट्रीम / पदानुक्रम कॉलम के साथ डेटाबेस है, तो मैं विशेष रूप से ईएफ की सिफारिश नहीं करूंगा। (स्कीमा-अपडेट के लिए
भी नहीं ।) और ऐसी स्थिति में भी नहीं है जहां डीबी-प्रदर्शन महत्वपूर्ण है (10+ से 100+ समवर्ती तक)।
इसके अलावा, लिनक्स पर एक वेबसाइट / वेब-एप्लिकेशन को चलाना जल्द या बाद में इसका मतलब होगा कि आपको इसे डीबग करना होगा।
लिनक्स पर .NET कोर के लिए डिबगिंग समर्थन नहीं है।(अब और नहीं, लेकिन JetBrains Rider की आवश्यकता है।)
MonoDevelop ने .NET कोर प्रोजेक्ट्स को डीबग करना (अभी तक) समर्थन नहीं करता है।
यदि आपको समस्या है, तो आप अपने दम पर हैं। आपको व्यापक लॉगिंग का उपयोग करना होगा।
सावधान रहें, सलाह दी जाती है कि व्यापक लॉगिंग आपकी डिस्क को कुछ ही समय में भर देगी, खासकर यदि आपका प्रोग्राम एक अनंत लूप या पुनरावृत्ति में प्रवेश करता है।
यह विशेष रूप से खतरनाक है यदि आपका वेब-ऐप रूट के रूप में चलता है, क्योंकि लॉग-इन के लिए लॉगफ़ाइल-स्पेस की आवश्यकता होती है - यदि कोई खाली स्थान नहीं बचा है, तो आप अब लॉग इन नहीं कर पाएंगे।
(आम तौर पर, डिस्क्सस्पेस का लगभग 5% उपयोगकर्ता रूट [विंडोज़ पर उर्फ ​​प्रशासक] के लिए आरक्षित होता है, इसलिए डिस्क के लगभग पूर्ण होने पर कम से कम व्यवस्थापक अभी भी लॉग इन कर सकते हैं। लेकिन यदि आपके आवेदन रूट के रूप में चलते हैं, तो यह प्रतिबंध लागू नहीं होता है। उनकी डिस्क का उपयोग, और इसलिए उनके लॉगफ़ाइल्स शेष खाली स्थान का 100% उपयोग कर सकते हैं, इसलिए व्यवस्थापक भी नहीं लॉग इन कर सकते हैं।)
इसलिए बेहतर है कि आप उस डिस्क को एन्क्रिप्ट न करें, यदि आप अपने डेटा / सिस्टम को महत्व देते हैं।

किसी ने मुझे बताया कि वह चाहता था कि यह "मोनो में" हो, लेकिन मुझे नहीं पता कि इसका क्या मतलब है।

इसका मतलब है कि वह .NET कोर का उपयोग नहीं करना चाहता है, या वह केवल लिनक्स / मैक पर C # का उपयोग करना चाहता है। मेरा अनुमान है कि वह लिनक्स पर वेब-ऐप के लिए सी # का उपयोग करना चाहता है। .NET कोर उस के लिए जाने का तरीका है, अगर आप इसे सी # में करना चाहते हैं। "मोनो उचित" के साथ मत जाओ; सतह पर, यह पहली बार में काम करेगा - लेकिन मुझे विश्वास है कि आप इसे पछताएंगे क्योंकि मोनो का ASP.NET MVC स्थिर नहीं है जब आपका सर्वर दीर्घकालिक (1 दिन से अधिक) चलता है - तो आपको अब चेतावनी दी गई है। टेकेमपॉवर बेंचमार्क पर मोनो प्रदर्शन को मापते समय "पूर्ण नहीं" संदर्भ भी देखें।

भाग्य

मुझे पता है कि मैं ऊपर सूचीबद्ध तकनीकों के साथ .net Core 1.0 ढांचे का उपयोग करना चाहता हूं। उन्होंने यह भी कहा कि वह "तेज सीटी" का उपयोग करना चाहते थे। मुझे नहीं पता कि इसका क्या मतलब है।

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

निष्कर्ष निकालने के लिए:
.NET कोर वर्तमान में (2016-09-28) वास्तव में पोर्टेबल नहीं है, और न ही वास्तव में क्रॉस-प्लेटफ़ॉर्म (विशेष रूप से डिबग-टूल) है।
न ही मूल-संकलन आसान है, खासकर एआरएम के लिए।
और मेरे लिए, यह भी नहीं दिखता है कि इसका विकास "वास्तव में समाप्त" है, फिर भी।
उदाहरण के लिए, System.Data.DataTable / DataAdaper.Update गायब है ... (.NET कोर 2.0 के साथ अब नहीं)
साथ में System.Data.Common.IDB * इंटरफेस।(अब .NET कोर 1.1 के साथ नहीं)
यदि कभी एक वर्ग था जो अक्सर उपयोग किया जाता है, तो DataTable / DataAdapter यह होगा ...
इसके अलावा, लिनक्स-इंस्टॉलर (.deb) विफल रहता है, कम से कम मेरी मशीन पर, और मैं ' मुझे यकीन है कि मैं केवल एक ही है कि समस्या है नहीं कर रहा हूँ
डीबग, शायद विजुअल स्टूडियो कोड के साथ, यदि आप इसे ARM पर बना सकते हैं (मैं ऐसा करने में कामयाब रहा - यदि आप ऐसा करते हैं तो स्कॉट हैनेलमैन के ब्लॉग-पोस्ट को फॉलो न करें - गीथब पर वीएस-कोड की विकी में एक हाउटो है), क्योंकि वे निष्पादन योग्य की पेशकश नहीं करते हैं।
योमन भी असफल। (मुझे लगता है कि आपके द्वारा इंस्टॉल किए गए नोडज संस्करण के साथ इसका कुछ करना है - वीएस कोड को एक संस्करण की आवश्यकता है, येओमान दूसरे की ... लेकिन यह एक ही कंप्यूटर पर चलना चाहिए। बहुत लंगड़ा
यह कभी नहीं सोचता कि इसे डिफ़ॉल्ट रूप से भेजे गए नोड संस्करण पर चलना चाहिए। ओएस पर।
कभी ध्यान न दें कि पहले स्थान पर NodeJS पर निर्भरता नहीं होनी चाहिए।
केस्टेल सर्वर भी प्रगति पर है।
और मोनो-प्रोजेक्ट के साथ अपने अनुभव को देखते हुए, मुझे अत्यधिक संदेह है कि उन्होंने कभी FastCGI पर .NET कोर का परीक्षण किया, या उन्हें यह पता है कि FastCGI- समर्थन का उनके ढांचे के लिए क्या मतलब है, अकेले चलो कि उन्होंने यह सुनिश्चित करने के लिए परीक्षण किया कि "सब कुछ काम करता है" "। वास्तव में, मैंने सिर्फ .NET कोर के साथ एक फास्टकॉग-एप्लिकेशन बनाने की कोशिश की और बस महसूस किया कि .NET कोर "RTM" के लिए कोई FastCGI लाइब्रेरी नहीं है ...

इसलिए जब आप nginx के पीछे .NET Core "RTM" चलाने जा रहे हैं, तो आप इसे केवल kestrell (यानी अर्ध-समाप्त नोडजेएस-व्युत्पन्न वेब-सर्वर) के लिए अनुरोध करने के द्वारा कर सकते हैं - .NET .NET में वर्तमान में कोई भी फास्टकॉगी समर्थन नहीं है। "आरटीएम", एएफएआईके। चूँकि वहाँ कोई .net कोर फास्टकेजी लाइब्रेरी नहीं है, और कोई सैंपल नहीं है, इसलिए यह भी बहुत संभावना नहीं है कि किसी ने फ्रेमवर्क पर कोई भी परीक्षण किया हो ताकि यह सुनिश्चित हो सके कि फास्टगेगी काम करता है।

मैं प्रदर्शन पर भी सवाल उठाता हूं।
में (प्रारंभिक) techempower-बेंचमार्क (दौर 13) , पर सबसे अच्छा प्रदर्शन करने के लिए 25% सापेक्ष aspnetcore-linux रैंक, जबकि चोटी प्रदर्शन के 96.9% पर की तरह जाओ (golang) रैंक तुलनीय चौखटे (और वह यह है कि जब फ़ाइल के बिना प्लेन लौटने -सिस्टम एक्सेस केवल)। .NET कोर JSON-serialization पर थोड़ा बेहतर करता है, लेकिन यह या तो सम्मोहक नहीं दिखता है (चोटी के 98.5% तक पहुंच जाता है, .NET कोर 65%)। उस ने कहा, यह संभवतः "मोनो उचित" से भी बदतर नहीं हो सकता है।

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

क्या आप इन सभी शब्दों को समझने में मेरी मदद कर सकते हैं और यदि मेरी अपेक्षाएँ यथार्थवादी हैं ?

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

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

संक्षेप में प्रस्तुत करने के लिए
(2016-09-28), मैं .NET कोर (उत्पादन उपयोग के लिए) से दूर रहूंगा। हो सकता है एक से दो साल में, आप दूसरा रूप ले सकते हैं, लेकिन शायद पहले नहीं।
यदि आपके पास एक नया वेब-प्रोजेक्ट है जिसे आप विकसित करते हैं, तो इसे .NET कोर में शुरू करें, मोनो नहीं।

यदि आप एक ऐसा फ्रेमवर्क चाहते हैं जो लिनक्स (x86 / AMD64 / ARMhf) और विंडोज और मैक पर काम करता हो, जिसमें कोई निर्भरता नहीं है, यानी केवल स्थैतिक लिंकिंग और .NET, जावा या विंडोज पर निर्भरता नहीं है, तो इसके बजाय गोलंग का उपयोग करें। यह अधिक परिपक्व है, और इसका प्रदर्शन सिद्ध है (Baidu 1 मिलियन समवर्ती उपयोगकर्ताओं के साथ इसका उपयोग करता है), और गोलंग में काफी कम मेमोरी फ़ुटप्रिंट है। इसके अलावा रिपॉजिटरी में गोलंग होता है, .deb समस्याओं के बिना स्थापित होता है, सोर्सकोड संकलित करता है - बदलाव की आवश्यकता के बिना - और गोलंग (इस बीच) में डेलवे और जेटब्रेन के साथ डिबगिंग समर्थन हैलिनक्स पर गोगलैंड (और विंडोज और मैक)। गोलंग की निर्माण प्रक्रिया (और रनटाइम) भी NodeJS पर निर्भर नहीं करती है, जो अभी तक एक और प्लस है।

जहां तक ​​मोनो जाता है, उससे दूर रहें।
यह आश्चर्यजनक नहीं है कि मोनो कितनी दूर आ गई है, लेकिन दुर्भाग्य से यह उत्पादन अनुप्रयोगों के लिए इसके प्रदर्शन / स्केलेबिलिटी और स्थिरता के मुद्दों का कोई विकल्प नहीं है।
इसके अलावा, मोनो-विकास काफी मृत है, वे बड़े पैमाने पर केवल एंड्रॉइड और आईओएस के लिए प्रासंगिक भागों को विकसित करते हैं, क्योंकि यही वह जगह है जहां ज़मरीन अपने पैसे बनाता है।
प्रथम श्रेणी के ज़ामरीन / मोनो नागरिक होने के लिए वेब-विकास की अपेक्षा न करें।
.NET कोर इसके लायक हो सकता है, यदि आप एक नई परियोजना शुरू करते हैं, लेकिन मौजूदा बड़ी वेब-प्रपत्र परियोजनाओं के लिए, पोर्टिंग ओवर काफी हद तक प्रश्न से बाहर है, आवश्यक परिवर्तन बहुत बड़े हैं। यदि आपके पास एक एमवीसी-परियोजना है, तो परिवर्तनों की मात्रा प्रबंधनीय हो सकती है, यदि आपका मूल एप्लिकेशन डिज़ाइन समझदार था, जो कि ज्यादातर मौजूदा तथाकथित "ऐतिहासिक रूप से विकसित" अनुप्रयोगों के लिए नहीं है।

दिसंबर 2016 अपडेट:
नेट कोर पूर्वावलोकन से मूल संकलन हटा दिया गया है, क्योंकि यह अभी तक तैयार नहीं है ... ऐसा

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

इसके अलावा, लिनक्स आईडीई के मोर्चे पर राहत मिलती दिख रही है।
JetBrains ने "प्रोजेक्ट राइडर" जारी किया, जो लिनक्स (और मैक और विंडोज) के लिए C # /। NET कोर आईडीई का शुरुआती एक्सेस पूर्वावलोकन है, जो विज़ुअल स्टूडियो प्रोजेक्ट फ़ाइलों को संभाल सकता है। अंत में एक C # IDE जो प्रयोग करने योग्य है और जो नरक के रूप में धीमा नहीं है।

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

छोटी गाड़ी। नेट कोर

2017 अपडेट
ने अभी के लिए मेरे (भाई के) मुखपृष्ठ को .NET कोर में स्थानांतरित कर दिया है।
अब तक, लिनक्स पर रनटाइम पर्याप्त रूप से स्थिर होता है (कम से कम छोटी परियोजनाओं के लिए) - यह आसानी से लोड परीक्षण से बच गया - मोनो ने कभी नहीं किया।
इसके अलावा, ऐसा लगता है कि मैंने .NET-Core-native और .NET-Core-self-निहित परिनियोजन मिलाया है। स्व-निहित परिनियोजन कार्य करता है, लेकिन यह थोड़ा सा कम किया हुआ है, हालाँकि यह सुपर आसान है (बिल्ड / पब्लिश टूल थोड़े अस्थिर हैं, फिर भी - यदि आपको "सकारात्मक संख्या की आवश्यकता है - एनकाउंटर फेल्ड" - - फिर से वही कमांड चलाएं। और यह काम करता है)।

तुम दौड़ सकते हो

dotnet restore -r win81-x64
dotnet build -r win81-x64
dotnet publish -f netcoreapp1.1 -c Release -r win81-x64

नोट: के रूप में नेट कोर 3 प्रति, तुम सब कुछ प्रकाशित कर सकते हैं न्यूनतम किया गया एक के रूप में एकल फाइल :

dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true
dotnet publish -r linux-x64 -c Release /p:PublishSingleFile=true

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

और आपको एक स्व-निहित .exe-file (प्रकाशित निर्देशिका में) मिलती है, जिसे आप बिना किसी .NET फ्रेमवर्क के विंडोज 8.1 मशीन में स्थापित कर सकते हैं और इसे चला सकते हैं। अच्छा लगा। यह यहाँ है कि डॉटनेट-कोर बस दिलचस्प शुरू होता है। (दिमाग में अंतराल, SkiaSharp विंडोज 8.1 / विंडोज सर्वर 2012 R2 पर काम नहीं करता है , [अभी तक] - पारिस्थितिकी तंत्र को पहले पकड़ना पड़ता है - लेकिन दिलचस्प बात यह है कि स्किआ-डीएल-लोड-फेल पूरे सर्वर को क्रैश नहीं करता है / आवेदन - तो बाकी सब काम करता है)

(नोट: विंडोज 8.1 पर SkiaSharp उपयुक्त VC रनटाइम फ़ाइलों को गायब कर रहा है - msvcp140.dll और vcruntime140.dll। उन्हें प्रकाशन-निर्देशिका में कॉपी करें, और Skia विंडोज 8.1 पर काम करेगी।)

अगस्त 2017 अपडेट
.NET कोर 2.0 जारी किया गया।
सावधान रहें - प्रमाणीकरण में (विशाल ब्रेकिंग) परिवर्तनों के साथ आता है ...
उल्टा, यह DataTable / DataAdaper / DataSet कक्षाएं वापस लाया, और कई और।
रियलिनेट .NET कोर अभी भी अपाचे स्पार्कक्यूक्यू के लिए समर्थन गायब है, क्योंकि मोबियस अभी तक पोर्ट नहीं हुआ है। यह बुरा है, क्योंकि इसका मतलब है कि मेरे IoT कैसंड्रा क्लस्टर के लिए कोई स्पार्कक्यूएल सपोर्ट नहीं है, इसलिए इसमें कोई जुड़ाव नहीं है ...
प्रायोगिक एआरएम सपोर्ट (केवल रनटाइम, एसडीके नहीं - मेरे क्रोमबुक पर काम करने के लिए बहुत बुरा है - आगे 2.1 या 3.0 की तलाश में)।
PdfSharp अब प्रयोगात्मक रूप से .NET कोर में पोर्ट कर लिया गया है।
जेटब्राइंस राइडरEAP को छोड़ दिया। अब आप इसे लिनक्स पर .NET कोर को विकसित और डिबग करने के लिए उपयोग कर सकते हैं - हालांकि अभी तक केवल .NET कोर 1.1 है। जब तक .NET कोर 2.0 समर्थन के लिए अद्यतन लाइव नहीं हो जाता।

मई 2018 अद्यतन
.NET कोर 2.1 रिलीज आसन्न। शायद यह लिनक्स पर एनटीएलएम-प्रमाणीकरण को ठीक कर देगा (एनटीएलएम प्रमाणीकरण लिनक्स पर काम नहीं करता है {और संभवतः मैक}। नेट-कोर 2.0 में कई प्रमाणित हेडर के साथ, जैसे कि बातचीत, आमतौर पर एमएस-एक्सचेंज के साथ भेजा जाता है, और वे जाहिरा तौर पर भेजे जाते हैं। केवल इसे v2.1 में ठीक करना, 2.0 के लिए कोई बगफिक्स रिलीज़ नहीं)।
लेकिन मैं अपनी मशीन पर पूर्वावलोकन रिलीज़ स्थापित नहीं कर रहा हूँ। तो इंतजार है।
v2.1 को संकलन समय को बहुत कम करने के लिए भी कहा जाता है। वह अच्छा होगा।

इसके अलावा, ध्यान दें कि लिनक्स पर, .NET कोर केवल 64-बिट है !
लिनक्स पर .NET कोर का कोई x86-32 संस्करण नहीं है, और न ही है
और एआरएम पोर्ट केवल एआरएम -32 है। कोई एआरएम -64, अभी तक।
और एआरएम पर, आपके पास (वर्तमान में) केवल रनटाइम है, न कि डॉटनेट-एसडीके।

और एक और बात:
क्योंकि .NET-Core ओपनएसएसएल 1.0 का उपयोग करता है, लिनक्स पर .NET कोर आर्क लिनक्स पर नहीं चलता है, और मंज़रो पर व्युत्पन्न नहीं है (समय में इस बिंदु पर अब तक सबसे लोकप्रिय लिनक्स डिस्ट्रो), क्योंकि आर्क लिनक्स ओपनएसएसएल 1.1 का उपयोग करता है। इसलिए यदि आप आर्क लिनक्स का उपयोग कर रहे हैं, तो आप भाग्य से बाहर हैं (जेंटू के साथ भी)।

संपादित करें:

.NET Core 2.2+ का नवीनतम संस्करण OpenSSL 1.1 का समर्थन करता है। तो आप इसका उपयोग आर्क या (के) उबंटू 19.04+ पर कर सकते हैं। आपको .NET-Core इंस्‍टॉल स्क्रिप्ट का उपयोग करना पड़ सकता है , क्‍योंकि पैकेज नहीं हैं, फिर भी।

उल्टा, प्रदर्शन में निश्चित रूप से सुधार हुआ है: भाग्य

सादे पाठ

.NET Core 3:
.NET-core v 3.0 को WinForms और WPF को .NET-Core में लाने के लिए कहा जाता है।
हालाँकि, जबकि WinForms और WPF .NET Core होंगे, .NET-Core में WinForms और WPF केवल Windows पर चलेंगे, क्योंकि WinForms / WPF Windows-API का उपयोग करेगा।

नोट:
.NET कोर 3.0 अब बाहर (RTM) है, और इसमें WinForms और WPF सपोर्ट है, लेकिन केवल C # (विंडोज पर) के लिए। नहीं है कोई WinForms कोर-डिजाइनर । डिजाइनर, आखिरकार, विजुअल स्टूडियो अपडेट, मेशेन के साथ आएगा। VB.NET के लिए WinForms समर्थन समर्थित नहीं है , लेकिन 2020 में .NET 5.0 कहीं के लिए योजना बनाई गई है ।

पुनश्च:

echo "DOTNET_CLI_TELEMETRY_OPTOUT=1" >> /etc/environment
export DOTNET_CLI_TELEMETRY_OPTOUT=1 

यदि आपने इसे विंडोज़ पर उपयोग किया है, तो आपने शायद कभी इसे नहीं देखा है:

.NET कोर उपकरण आपके अनुभव को बेहतर बनाने के लिए उपयोग डेटा एकत्र करते हैं।
डेटा अनाम है और इसमें कमांड-लाइन तर्क शामिल नहीं हैं।
डेटा को Microsoft द्वारा एकत्र किया जाता है और समुदाय के साथ साझा किया जाता है।
आप अपने पसंदीदा शेल का उपयोग करके DOTNET_CLI_TELEMETRY_OPTOUT परिवेश चर सेट करके टेलीमेट्री से बाहर निकल सकते हैं।
आप .NET कोर टूल्स टेलीमेट्री @ https://aka.ms/dotnet-cli-telemetry के बारे में अधिक पढ़ सकते हैं ।

मैंने सोचा था कि मैं उल्लेख करता हूं कि मुझे लगता है कि मोनोडेवलप (उर्फ ज़ामरीन स्टूडियो, मोनो आईडीई, या विज़ुअल स्टूडियो मैक, जिसे अब मैक कहा जाता है) काफी अच्छी तरह से विकसित हुआ है, और इस बीच - काफी हद तक प्रयोग करने योग्य है।
हालाँकि, JetBrains Rider (समय में इस बिंदु पर 2018 EAP) निश्चित रूप से एक बहुत अच्छा और अधिक विश्वसनीय है (और इसमें शामिल डिकंपाइलर एक जीवन-रक्षक है), यह कहना है, यदि आप लिनक्स या मैक पर .NET-Core विकसित करते हैं। MonoDevelop .NET कोर में लिनक्स पर डीबग-स्टेपट्रूज का समर्थन नहीं करता है, हालांकि, चूंकि एमएस अपने डिबगिंग एपीआई डीएल (विजुअलस्टडियो मैक को छोड़कर) को लाइसेंस नहीं देता है। हालाँकि, आप सैमसंग डीबगर का उपयोग कर सकते हैं। .NET कोर के लिए सैमसंग डीबगर विस्तार के माध्यम से । सैमसंग डीबगर के लिए मोनो डिग्रेवर्ड के लिए

डिस्क्लेमर:
मैं मैक का उपयोग नहीं करता हूं, इसलिए मैं यह नहीं कह सकता कि मैंने यहां जो लिखा है वह फ्रीबीएसडी-यूनिक्स आधारित मैक पर भी लागू होता है। मैं JetBrains राइडर, मोनो, मोनोडेवलप / VisualStudioMac / XamarinStudio और .NET-Core के लिनक्स (डेबियन / उबंटू / मिंट) संस्करण का उल्लेख कर रहा हूं। इसके अलावा, ऐप्पल इंटेल-प्रोसेसर से स्व-निर्मित एआरएम (एआरएम -64?) - आधारित प्रोसेसर के लिए एक कदम पर विचार कर रहा है, जो कि मैक पर अभी लागू होता है, भविष्य में मैक पर लागू नहीं हो सकता है (2020+)।

इसके अलावा, जब मैं "मोनो काफी अस्थिर और धीमा होता है" लिखता है, तो अस्थिर WinFroms और WebForms अनुप्रयोगों से संबंधित है, विशेष रूप से Fastcgi के माध्यम से या XSP (मोनो के 4.x संस्करण पर) के साथ-साथ XML- क्रमांकन के साथ वेब-अनुप्रयोगों को निष्पादित करता है। -खुद की ख़ासियत, और काफी धीमी गति WinForms से संबंधित है, और विशेष रूप से नियमित अभिव्यक्ति (ASP.NET-MVC रूटिंग के लिए भी नियमित अभिव्यक्ति का उपयोग करता है)।

जब मैं मोनो 2.x, 3.x और 4.x के बारे में अपने अनुभव के बारे में लिखता हूं, तो इसका मतलब यह भी नहीं है कि इन मुद्दों को अब तक हल नहीं किया गया है, या जब तक आप इसे पढ़ रहे हैं, और न ही यदि वे हैं अभी तय है, कि बाद में कोई प्रतिगमन नहीं हो सकता है जो इनमें से किसी भी बग / सुविधाओं को फिर से प्रस्तुत करता है। न ही इसका मतलब यह है कि यदि आप मोनो-रनटाइम को एम्बेड करते हैं, तो आपको (देव) सिस्टम के मोनो रनटाइम का उपयोग करने के समान परिणाम प्राप्त होंगे। इसका मतलब यह भी नहीं है कि मोनो-रनटाइम (कहीं भी) एम्बेड करना नि: शुल्क है।

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


6
@ टेंग: आह हां यह बी.एस. क्या आपने Winforms Core या WPF Core को देखा है? हां, तकनीकी रूप से यह .NET फ्रेमवर्क का एक बहु-मंच पोर्ट है और इसका MVC से कोई लेना-देना नहीं है। लेकिन वेब-एप्लिकेशन (ASP.NET MVC) और कंसोल एप्लिकेशन केवल एक चीज है जो आप .NET .NET के साथ इस समय कर सकते हैं ... और हां MVC, क्योंकि कोई WebForms Core नहीं है। फिलहाल यही है, सादा और सरल। लेकिन सच है, आपको अपने वेब-अनुप्रयोगों में एमवीसी का उपयोग केवल इसलिए नहीं करना है क्योंकि आप .NET कोर का उपयोग करते हैं। आप MVC के बिना एक वेब-एप्लिकेशन भी बना सकते हैं। लेकिन एसईओ-वार, ऐसा करने के लिए बहुत कम अर्थ होगा।
स्टेफन स्टेगर

16
यह कहना कि मोनो "काफी अस्थिर और धीमी है" निराधार है, अगर सादा गलत नहीं है। लेकिन इसके अलावा, अच्छी जानकारी यहाँ।
नोल्डोरिन

65
यह उत्तर भारी है और इसमें कई बिंदुवार संदर्भ हैं।
कालेब

23
यह मुझे इस अत्यधिक स्कोर वाले उत्तर के पहले वाक्य को इतने गंभीर रूप से गलत होने के लिए देखने के लिए तैयार करता है। .NET कोर ASP.NET MVC फ्रेमवर्क का पुनः लेखन नहीं है।
JHo

6
@ स्टीफन-स्टीगर यहां तक ​​कि "अधिकांश भाग के लिए" पूरी तरह से गलत है और .NET कोर के सभी उद्देश्य पर नहीं है। "फिर"? खुद को दोहराने के बजाय, आप इसे क्यों नहीं बदलते?
JHo

51

.NET की दुनिया में दो प्रकार के सीएलआर, "पूर्ण" सीएलआर और कोर सीएलआर हैं, और ये काफी अलग चीजें हैं।

दो "पूर्ण" सीएलआर कार्यान्वयन हैं, माइक्रोसॉफ्ट देशी .NET सीएलआर (विंडोज के लिए) और मोनो सीएलआर (जिसमें स्वयं विंडोज, लिनक्स और यूनिक्स (मैक ओएस एक्स और फ्रीबीएसडी) के लिए कार्यान्वयन हैं)। एक पूर्ण सीएलआर वास्तव में यही है - सब कुछ, बहुत अधिक, जो आपको चाहिए। जैसे, "पूर्ण" सीएलआर आकार में बड़े होते हैं।

कोर सीएलआर दूसरी ओर कटे हुए हैं, और बहुत छोटे हैं। क्योंकि वे केवल एक कोर कार्यान्वयन हैं, उनमें आपके लिए आवश्यक सब कुछ होने की संभावना नहीं है, इसलिए कोर सीएलआर के साथ आप सीएलआर में फीचर सेट जोड़ते हैं जो आपके विशिष्ट सॉफ़्टवेयर उत्पाद का उपयोग करता है, नुगेट का उपयोग करके। मिश्रण में विंडोज, लिनक्स (विभिन्न) और यूनिक्स (मैक ओएस एक्स और फ्रीबीएसडी) के लिए कोर सीएलआर कार्यान्वयन हैं। Microsoft ने कोर CLR के लिए .NET फ्रेमवर्क पुस्तकालयों को भी फिर से तैयार किया है, ताकि उन्हें कोर संदर्भ के लिए और अधिक पोर्टेबल बनाया जा सके। * Nix OS पर मोनो की मौजूदगी को देखते हुए यह आश्चर्य की बात होगी कि अगर * nix के लिए Core CLR में कुछ मोनो कोड बेस शामिल न हों, लेकिन केवल मोनो समुदाय और Microsoft ही हमें यह बता सकते हैं।

इसके अलावा, मैं उस कोर सीएलआर में निको के साथ कॉन्करर करूंगा, यह नया है - यह आरसी 2 में है जिस समय मुझे लगता है। मैं अभी तक उत्पादन कोड के लिए इस पर निर्भर नहीं होता।

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


2
मैं यह जानकर मोनो में नहीं जाऊंगा कि यह मेरे प्रोडक्शन वेब एप्लिकेशन के लिए एक स्थायी होस्ट नहीं है, विशेष रूप से शुरुआत से यह जानते हुए कि यह मुझे कोर को पोर्ट करने के अतिरिक्त प्रयास में खर्च होगा!
पानायोटिस हिरिपिस

@Panayiotis Hiripis: मोनो व्यवहार विचलन को डीबग करना, अस्थिर मोनो वेब-सर्वर से निपटने और अपवादित अपवादों के साथ-साथ आउटेज-लागत जब एक अस्थिर मोनो-सर्वर क्रैश हो जाता है, तो आपको लागत भी होगी - और शायद .NET से पोर्टिंग की तुलना में अधिक। कोर। यदि मैं समय बिताता हूं, तो मैं पुराने संस्करणों में बगों को ठीक करने और विरासत प्रौद्योगिकी के साथ एक परियोजना को बनाए रखने के बजाय नए, तेज, बेहतर डिज़ाइन किए गए संस्करणों को अपडेट करने में बहुत समय बिताऊंगा। समय में कदम आपको बाद में बहुत सिरदर्द से बचाएगा। किसी समय में, आपको किसी भी तरह पोर्ट करना होगा ... TheSoonerYouMove, बाद में आप करें।
स्टीफन स्टीगर

यह लाइब्रेरी लाइब्रेरी एमजीटी से जुड़े मीरा-गो-राउंड को ध्यान देने योग्य है। एक समय पर (बहुत पहले नहीं!) हमारे पास डीएलएल नरक नामक यह चीज थी। यह इसलिए हुआ क्योंकि विभिन्न अनुप्रयोगों के साथ dll (कभी-कभी अलग-अलग संस्करण) की कई प्रतियां जारी की गईं। जावा में अभी भी यह समस्या है। Microsoft ने इसे COM रजिस्ट्री और बाद में .NET GAC से हल करने की कोशिश की। .NET कोर इसे पुन: प्रस्तुत करता है। एक दिन हम सब घूमेंगे - कुछ वर्षों के बाद dlls और परिनियोजन के साथ घूमने के बाद हम फिर साथ आएंगे: एक रजिस्ट्री। NuGet, Maven, Gradle - ये केवल समाधान के बजाय प्रबंधन करने के तरीके हैं।
मस्क्यू

13

आपने न केवल एक यथार्थवादी रास्ता चुना है, लेकिन यकीनन एमएस द्वारा सबसे अच्छे पारिस्थितिक तंत्रों में से एक (एक्स-प्लेटफॉर्म) का भी दृढ़ता से समर्थन किया गया है। फिर भी आपको निम्नलिखित बातों पर विचार करना चाहिए:

  • अपडेट: मुख्य डॉक्टर के बारे में .Net प्लेटफॉर्म मानक यहां है: https://github.com/dotnet/corefx/blob/master/Documentation/altecture/net-platform-standard.md
  • अपडेट: वर्तमान मोनो 4.4.1 नवीनतम Asp.Net कोर 1.0 RTM नहीं चला सकता है
  • यद्यपि मोनो अधिक विशेषता पूर्ण है, इसका भविष्य अस्पष्ट है, क्योंकि एमएस अब कुछ महीनों के लिए इसका मालिक है और इसका समर्थन करने के लिए उनके लिए एक डुप्लिकेट काम है। लेकिन एमएस निश्चित रूप से .Net कोर के लिए प्रतिबद्ध है और इस पर बड़ा दांव लगा रहा है।
  • हालांकि .Net कोर जारी किया गया है, 3 जी पार्टी इकोसिस्टम काफी नहीं है। उदाहरण के लिए, निबरनेट, अम्ब्रेको आदि अभी तक .Net कोर नहीं चला सकते हैं। लेकिन उनके पास एक योजना है।
  • .Net Core में कुछ सुविधाएँ गायब हैं जैसे System.Drawing, आपको 3rd पार्टी लाइब्रेरीज़ के लिए दिखना चाहिए
  • आपको asp.net ऐप के लिए kestrelserver के साथ फ्रंट सर्वर के रूप में nginx का उपयोग करना चाहिए, क्योंकि kestrelserver उत्पादन के लिए काफी तैयार नहीं है। उदाहरण के लिए HTTP / 2 लागू नहीं है।

मुझे उम्मीद है यह मदद करेगा


एक वेबसर्वर कहा जाता है jexusजो linux पर ASP.NET वेबसाइट को होस्ट कर सकता है। मेरी व्यक्तिगत साइट NancyFx (मूल रूप से ASP.NET MVC4) के साथ लिखी गई है।
7

दूसरी गोली गलत है। मैं वर्तमान में मोनो 4.4.0 पर ASP.NET Core 1.0 एप्लिकेशन को शिपिंग कर रहा हूं और बीटा 8 के बाद से कर रहा हूं।
बेन कॉलिन्स

@zwcloud: nginx के साथ mono.xsp4 /4.5 का उपयोग क्यों नहीं किया जाता है? वास्तव में jexus की कोई आवश्यकता नहीं है।
स्टेफेन स्टीगर

9

.नेट कोर को मोनो फ्रेमवर्क के अर्थ में मोनो की आवश्यकता नहीं होती है। .Net कोर एक ढांचा है जो लिनक्स सहित कई प्लेटफार्मों पर काम करेगा। संदर्भ https://dotnet.github.io/

हालाँकि .Net कोर मोनो फ्रेमवर्क का उपयोग कर सकते हैं। संदर्भ https://docs.asp.net/en/1.0.0-rc1/getting-started/choosing-the-right-dotnet.html (नोट rc1 documentatiopn no rc2 उपलब्ध है), हालाँकि मोनो एक Microsoft समर्थित ढाँचा नहीं है और एक समर्थित ढांचे का उपयोग करने की सिफारिश करेगा

अब एंटिटी फ्रेमवर्क 7 अब कहा जाता है Entity Framework Coreऔर लिनक्स सहित कई प्लेटफार्मों पर उपलब्ध है। संदर्भ https://github.com/aspnet/EntityFramework (रोड मैप की समीक्षा करें)

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

यहाँ लिनक्स में MVC .Net कोर को स्थापित करने के बारे में एक ट्यूटोरियल है। https://docs.asp.net/en/1.0.0-rc1/getting-started/installing-on-linux.html

अंत में आपके पास fast cgiलिनक्स पर आपके एप्लिकेशन को होस्ट करने के लिए वेब सर्वर (जहां मैं संदर्भ से आया हूं मान रहा हूं ) का एक विकल्प है । यहां लिनक्स एनवायरमेंट में इंस्टॉल करने के लिए एक संदर्भ बिंदु है। https://docs.asp.net/en/1.0.0-rc1/publishing/linuxproduction.html

मुझे पता है कि यह पोस्ट ज्यादातर प्रलेखन के लिए लिंक के रूप में समाप्त होती है, लेकिन इस बिंदु पर वे आपकी जानकारी का सबसे अच्छा स्रोत हैं। .Net कोर अभी भी .Net समुदाय में अपेक्षाकृत नया है और जब तक इसके पूरी तरह से जारी नहीं किया जाता है, तब तक इसे जारी किए गए संस्करण के बीच ब्रेकिंग परिवर्तन को देखते हुए मैं इसे एक उत्पाद वातावरण में उपयोग करने में संकोच करूंगा।


6
Microsoft अब Xamarin का मालिक है, जो मोनो विकसित करता है। तो मोनो और .Net कोर दोनों ही एमएस द्वारा समर्थित हैं।
जोएल कोएहॉर्न

@JoelCoehoorn मुझे समझ में आता है कि Microsoft Xamarin का मालिक है, लेकिन Xamarin के बारे में नहीं जानते कि मोनो के मालिक हैं। हालाँकि डॉक्स से डॉक्स .asp.net/en/1.0.0-rc1/getting-started/… यह बताता है कि यह समर्थित नहीं है। मोनो Microsoft द्वारा समर्थित प्लेटफ़ॉर्म नहीं है; हालाँकि, यह क्रॉस-प्लेटफ़ॉर्म विकास के लिए एक अच्छा साबित मैदान है जबकि .NET कोर परिपक्वताओं में क्रॉस-प्लेटफ़ॉर्म समर्थन है। अब यह गलत या पुराना हो सकता है।
निको

@ RC1 के समय में, Xamarin को अभी तक Microsoft द्वारा अधिग्रहित नहीं किया गया था। आप अधिक विवरण के लिए समयरेखा की जांच कर सकते हैं, corefx.strikingly.com
लेक्स ली

मोनो Microsoft द्वारा समर्थित नहीं है। MS Xamarin संगठन का समर्थन करता है, लेकिन वे मोनो परियोजना के लिए कुछ नहीं करते हैं।
कोटूस्कास

7

यह प्रश्न विशेष रूप से वास्तविक है क्योंकि कल Microsoft ने आधिकारिक तौर पर .NET कोर 1.0 रिलीज की घोषणा की थी । मान लें कि मोनो मानक .NET पुस्तकालयों में से अधिकांश को लागू करता है, तो मोनो फ्रेमवर्क और .NET कोर के बीच अंतर को .NET फ्रेमवर्क और .NET कोर के बीच अंतर के माध्यम से देखा जा सकता है:

  • APIs - .NET कोर में बहुत सारे समान हैं, लेकिन बहुत कम , .NET फ्रेमवर्क के रूप में API, और एक अलग फैक्टरिंग के साथ (असेंबली के नाम
    अलग - अलग होते हैं ; प्रकार आकार महत्वपूर्ण मामलों में भिन्न होते हैं)।
    वर्तमान में इन अंतरों को आमतौर पर .NET कोर में पोर्ट सोर्स में बदलाव की आवश्यकता होती है। .NET कोर .NET मानक लाइब्रेरी API को लागू करता है, जो
    समय के साथ .NET फ्रेमवर्क BCL APIs को और अधिक शामिल करने के लिए बढ़ेगा ।
  • सबसिस्टम - .NET कोर एक सरल कार्यान्वयन और
    प्रोग्रामिंग मॉडल के लक्ष्य के साथ .NET फ्रेमवर्क में सबसिस्टम का सबसेट लागू करता है। उदाहरण के लिए, कोड एक्सेस सिक्योरिटी (CAS)
    समर्थित नहीं है , जबकि प्रतिबिंब समर्थित है।

यदि आपको कुछ जल्दी लॉन्च करने की आवश्यकता है, तो मोनो के साथ जाएं क्योंकि यह वर्तमान में (जून 2016) अधिक परिपक्व उत्पाद है, लेकिन यदि आप एक दीर्घकालिक वेबसाइट का निर्माण कर रहे हैं, तो मैं .NET कोर का सुझाव दूंगा। यह आधिकारिक तौर पर Microsoft द्वारा समर्थित है और समर्थित API में अंतर शायद जल्द ही गायब हो जाएगा, जो Microsoft द्वारा .NET कोर के विकास में किए गए प्रयास को ध्यान में रखता है।

मेरा लक्ष्य एक वेबसाइट बनाने के लिए C #, LINQ, EF7, विज़ुअल स्टूडियो का उपयोग करना है जिसे लिनक्स में चलाया / होस्ट किया जा सकता है।

Linq और Entity ढांचे को .NET Core में शामिल किया गया है , इसलिए आप एक शॉट लेने के लिए सुरक्षित हैं।


4

सरल होने के लिए,

मोनो लिनक्स / Android / iOs के लिए .Net फ्रेमवर्क का तीसरा पक्ष कार्यान्वयन है

.Net कोर उसी के लिए microsoft का अपना कार्यान्वयन है।

.नेट कोर भविष्य है। और मोनो अंततः मृत हो जाएगा। ने कहा कि .नेट कोर पर्याप्त परिपक्व नहीं है। मैं इसे IBM Bluemix के साथ लागू करने के लिए संघर्ष कर रहा था और बाद में इस विचार को छोड़ दिया। समय नीचे (1-2 साल हो सकता है), यह बेहतर होना चाहिए।


8
यह मामला प्रतीत नहीं होता है, बल्कि आप मान्यताओं / विचारों को बता रहे हैं आधिकारिक तौर पर यह मोनो का भविष्य है: मोनो-project.com/news/2016/11/29/mono-code-sharing ऐसा लगता है जैसे वे को बनाए रखना होगा। नेट कोर सिर्फ इतना है कि "कोर" पूर्ण ढांचे का एक सबसेट है और मोनो अभी भी केवल क्रॉस-प्लेटफॉर्म फ्रेमवर्क होगा, हालांकि .net मानक कोड के साथ मोनो और पूर्ण-नेट फ्रेमवर्क (और अन्य) के साथ साझा किया जा सकता है। .net कार्यान्वयन भी पसंद करते हैं .net कोर कोर्स)
pqsk

-14

संक्षेप में:

मोनो = सी # के लिए संकलक

मोनो डेवलप = कंपाइलर + आईडीई

.नेट कोर = एएसपी कंपाइलर

.Net कोर के लिए वर्तमान मामला केवल वेब के रूप में है जैसे ही यह कुछ खुले winform मानक और व्यापक भाषा को गोद लेता है, यह अंत में Microsoft हत्यारा देव पावरहाउस हो सकता है। ओरेकल के हालिया जावा लाइसेंसिंग कदम को ध्यान में रखते हुए, माइक्रोसॉफ्ट के पास चमकने के लिए बहुत बड़ा समय है।


11
इस उत्तर में लगभग सब कुछ सकल गलत है।
डगलस गास्केल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.