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 पर मोनो सुनता है काफी अच्छा होगा नमक के साथ ले। एक के लिए, एंड्रॉइड / आईओएस बनाम विंडोज पर डिफ़ॉल्ट-सिस्टम-एन्कोडिंग के समान होने की उम्मीद न करें, और एंड्रॉइड फाइलसिस्टम के मामले में असंवेदनशील होने की उम्मीद न करें, और किसी भी विंडोज़ फोंट की उम्मीद न करें। ।