.NET कोर और .NET स्टैंडर्ड क्लास लाइब्रेरी प्रोजेक्ट के प्रकारों में क्या अंतर है?


813

विज़ुअल स्टूडियो में, कम से कम 3 विभिन्न प्रकार के पुस्तकालय पुस्तकालय आप बना सकते हैं:

  • क्लास लाइब्रेरी (.NET फ्रेमवर्क)
  • कक्षा पुस्तकालय (.NET मानक)
  • क्लास लाइब्रेरी (.NET कोर)

जबकि पहला वह है जो हम वर्षों से उपयोग कर रहे हैं, भ्रम का एक प्रमुख बिंदु मेरे पास है। .NET मानक और .NET कोर लाइब्रेरी लाइब्रेरी प्रकारों का उपयोग करना है। हाल ही में जब मैंने विभिन्न फ्रेमवर्क संस्करणों को लक्षित करने और एक इकाई परीक्षण परियोजना बनाने का प्रयास किया है, तो मैंने इसे काट लिया है ।

तो, क्लास लाइब्रेरी (.NET स्टैंडर्ड) और क्लास लाइब्रेरी (.NET कोर) में क्या अंतर है, दोनों क्यों मौजूद हैं, और हमें एक दूसरे पर कब इस्तेमाल करना चाहिए?


10
आप एक चूक गए: क्लास लाइब्रेरी (पोर्टेबल)। कोर == ढांचा, .NET मानक == पोर्टेबल।
हंस पसंत

4
ज़मारिन में से एक भी था, लेकिन इन अन्य लोगों ने सवाल का कोई मूल्य नहीं जोड़ा :)
गिगी

7
खैर, वे करते हैं। मुख्य विचार वे पोर्टेबल दृष्टिकोण पर छोड़ दिया है, यह n से भी भारी पड़ा! जिस तरह से कई प्रोफाइल के साथ समस्या है । तो अब आपको चुनने के लिए 7 मानक मिल गए हैं। अधिकांश वास्तव में अभी पोर्टेबल नहीं हैं :) .NETCore एक लंबे शॉट द्वारा नहीं किया जाता है, संभवतः वे जिस क्लिप पर जा रहे हैं उस पर एक और दो साल लगते हैं।
हंस पसंत

12
ओपी ने कहा "कम से कम 3 अलग-अलग प्रकार"। पोस्ट सटीक थी।
दान फ्राइडमैन

1
मैं कोर के नामकरण से उलझन में था जो न तो मानक और न ही फ्रेमवर्क प्लेटफॉर्म का कोर सबसेट है। इसके अलावा, हम नियमित रूप से ASP .Net कोर के साथ जुड़े हुए देखते हैं। यह भी बहुत भ्रामक है ...
एलेक्सिस पॉट्रोट

जवाबों:


609

हमें कब एक का उपयोग करना चाहिए?

निर्णय संगतता और एपीआई पहुंच के बीच एक व्यापार बंद है।

जब आप अपने पुस्तकालय के साथ संगत ऐप्स की संख्या में वृद्धि करना चाहते हैं, तो .NET .NET लाइब्रेरी का उपयोग करें, और आप .NET एपीआई की सतह के क्षेत्र में कमी के साथ ठीक हैं जो आपकी लाइब्रेरी तक पहुंच सकती है।

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

उदाहरण के लिए, .NET मानक 1.3 को लक्षित करने वाली एक लाइब्रेरी उन ऐप्स के साथ संगत होगी जो .NET फ्रेमवर्क 4.6, .NET कोर 1.0, यूनिवर्सल विंडोज प्लेटफॉर्म 10.0, और .NET मानक 1.3 का समर्थन करने वाले किसी अन्य प्लेटफॉर्म को लक्षित करते हैं। हालाँकि, लाइब्रेरी में .NET API के कुछ हिस्सों तक पहुँच नहीं होगी। उदाहरण के लिए, Microsoft.NETCore.CoreCLRपैकेज .NET कोर के साथ संगत है लेकिन .NET मानक के साथ नहीं है।

क्लास लाइब्रेरी (.NET स्टैंडर्ड) और क्लास लाइब्रेरी (.NET कोर) में क्या अंतर है?

पैकेज-आधारित फ्रेमवर्क अनुभाग अंतर का वर्णन करता है।

संगतता: .NET मानक को लक्षित करने वाले पुस्तकालय किसी भी .NET मानक अनुरूप रनटाइम पर चलेंगे, जैसे .NET कोर, .NET फ्रेमवर्क, मोनो / ज़ामरीन। दूसरी ओर, .NET कोर को लक्षित करने वाले पुस्तकालय केवल .NET कोर रनटाइम पर ही चल सकते हैं।

API भूतल क्षेत्र: .NET मानक पुस्तकालय सब कुछ के साथ आते हैं। NETStandard.Libraryजबकि .NET कोर पुस्तकालय सब कुछ के साथ आते हैं Microsoft.NETCore.App। उत्तरार्द्ध में लगभग 20 अतिरिक्त पुस्तकालय शामिल हैं, जिनमें से कुछ हम अपने .NET मानक पुस्तकालय (जैसे System.Threading.Thread) में मैन्युअल रूप से जोड़ सकते हैं और जिनमें से कुछ .NET मानक (जैसे Microsoft.NETCore.CoreCLR) के साथ संगत नहीं हैं ।

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

दोनों क्यों मौजूद हैं?

कुछ क्षणों के लिए पुस्तकालयों की उपेक्षा करना, .NET मानक मौजूद कारण पोर्टेबिलिटी के लिए है; यह एपीआई के एक सेट को परिभाषित करता है। .NET प्लेटफ़ॉर्म लागू करने के लिए सहमत होते हैं। कोई भी प्लेटफ़ॉर्म जो .NET मानक को लागू करता है, पुस्तकालयों के साथ संगत है जो .NET मानक को लक्षित करता है। उन संगत प्लेटफार्मों में से एक .NET कोर है।

पुस्तकालयों में वापस आकर, .NET मानक लाइब्रेरी टेम्प्लेट कई रनटाइम (एपीआई सतह क्षेत्र की कीमत पर) पर चलने के लिए मौजूद हैं। जाहिर है, .NET कोर लाइब्रेरी टेम्प्लेट अधिक API सतह क्षेत्र (संगतता की कीमत पर) तक पहुंचने और एक निष्पादन योग्य बनाने के लिए एक मंच निर्दिष्ट करने के लिए मौजूद है।

यहाँ एक इंटरेक्टिव मैट्रिक्स है जो दिखाता है कि .NET मानक किस .NET कार्यान्वयन (एस) का समर्थन करता है और कितना एपीआई सतह क्षेत्र उपलब्ध है।


2
बहुत अच्छा जवाब। एक अतिरिक्त प्रश्न हालांकि ( इस प्रश्न से संबंधित है : इकाई परीक्षणों को चलाने के लिए एक आवेदन मॉडल क्यों आवश्यक है? यह अतीत में ऐसा कभी नहीं हुआ था, जब हमने इकाई परीक्षणों के संग्रह को रखने के लिए गैर-चलने योग्य वर्ग पुस्तकालयों का उपयोग किया था।
गीगी

3
मैंने अपने उत्तर को जुड़े प्रश्न से अपडेट कर दिया है। टी एल; डॉ; अतीत में, कक्षा के पुस्तकालयों ने पूर्ण रूपरेखा को लक्षित किया, जिसमें एक आवेदन मॉडल शामिल है।
शॉन लुटिन

आप क्लास लाइब्रेरी (.NET फ्रेमवर्क) को कवर करना भूल गए, क्या यह .NET मानक और .NET कोर के साथ संगत है?
टॉमस

8
इस आरेख ने वास्तव में मुझे इसे प्राप्त करने में मदद की।
jpaugh

1
@BerBar मूल प्रश्न .NET मानक और .NET कोर के बीच अंतर के बारे में था। इसलिए मैंने क्रॉस-प्लेटफ़ॉर्म विवरण को छोड़ दिया, क्योंकि क्रॉस-प्लेटफ़ॉर्म कोर और स्टैंडर्ड के बीच कोई अंतर नहीं है। मैंने जानबूझकर अपना उत्तर मूल प्रश्न से अलग रखा है।
शॉन लुटिन

396

एक .NET कोर क्लास लाइब्रेरी .NET मानक पर बनाया गया है । यदि आप किसी ऐसी लाइब्रेरी को लागू करना चाहते हैं , जो .NET फ्रेमवर्क के लिए पोर्टेबल हो , तो। .NET कोर और Xamarin , एक .NET स्टैंडर्ड लाइब्रेरी चुनें

.NET कोर अंततः .NET मानक 2 को लागू करेगा (जैसा कि Xamarin और .NET फ्रेमवर्क होगा )

.NET कोर , Xamarin और .NET फ्रेमवर्क , इसलिए .NET मानक के फ्लेवर के रूप में पहचाने जा सकते हैं

कोड साझाकरण और पुन: उपयोग के लिए अपने एप्लिकेशन को भविष्य में प्रूफ करने के लिए, आप .NET मानक पुस्तकालयों को लागू करेंगे।

Microsoft यह भी अनुशंसा करता है कि आप पोर्टेबल कक्षा पुस्तकालयों के बजाय .NET मानक का उपयोग करें ।

MSDN को एक आधिकारिक स्रोत के रूप में उद्धृत करने के लिए, .NET मानक का उद्देश्य एक लाइब्रेरी टू रूल थेम ऑल है । जैसा कि चित्र एक हजार शब्दों के लायक हैं, निम्नलिखित बातें बहुत स्पष्ट कर देंगी:

1. आपका वर्तमान एप्लिकेशन परिदृश्य (खंडित)

हम में से अधिकांश की तरह, आप शायद नीचे की स्थिति में हैं: (.NET फ्रेमवर्क, ज़ामरीन और अब .NET कोर फ्लेवर्ड एप्लिकेशन)

यहां छवि विवरण दर्ज करें

2. क्या .NET मानक लाइब्रेरी आपके लिए सक्षम होगी (क्रॉस-फ्रेमवर्क संगतता)

.NET मानक लाइब्रेरी को लागू करने से इन सभी अलग-अलग स्वादों में कोड साझा करने की अनुमति मिलती है:

एक पुस्तकालय उन सभी को नियम

अधीर के लिए:

  1. .NET मानक उन सभी API को लाने के लिए सभी प्लेटफार्मों पर .NET डेवलपर्स के लिए कोड साझा करने की समस्या को हल करता है, जिनकी आप अपेक्षा करते हैं और आपके लिए आवश्यक वातावरण में प्यार करते हैं: डेस्कटॉप एप्लिकेशन, मोबाइल एप्लिकेशन और गेम और क्लाउड सेवाएं:
  2. .NET मानक एपीआई का एक सेट है जिसे सभी .NET प्लेटफॉर्म को लागू करना होता है । यह .NET प्लेटफ़ॉर्म को एकीकृत करता है और भविष्य के विखंडन को रोकता है
  3. .NET .NET 2.0 .NET फ्रेमवर्क द्वारा कार्यान्वित किया जाएगा । नेट कोर , और ज़मारिन । के लिए नेट कोर , इस है कि अनुरोध किया गया है मौजूदा APIs को जोड़ना होगा।
  4. .NET मानक 2.0 में .NET फ्रेमवर्क बायनेरिज़ के लिए एक संगतता शिम शामिल है , पुस्तकालयों के सेट को काफी बढ़ाता है जिसे आप अपने .NET मानक पुस्तकालयों से संदर्भित कर सकते हैं।
  5. .NET मानक बहु-मंच .NET पुस्तकालयों के निर्माण के लिए टूलिंग स्टोरी के रूप में पोर्टेबल क्लास लाइब्रेरीज़ (पीसीएल) को बदल देगा

एक तालिका के लिए यह समझने में मदद करने के लिए कि .NET मानक का उच्चतम संस्करण जिसे आप लक्षित कर सकते हैं, जिसके आधार पर .NET प्लेटफार्मों को आप यहां से चलाने का इरादा रखते हैं

स्रोत: MSDN: .NET मानक का परिचय


2
ASP.NET Core उस ग्राफ़िक में थोड़ा गलत है, क्योंकि इसका उपयोग .NET .NET के साथ किया जा सकता है, न केवल .NET Core के साथ, क्योंकि यह वास्तव में .NET मानक को लक्षित करता है।
निम

2
लेकिन आप पूर्ण .NET फ्रेमवर्क के साथ एक ASP.NET कोर ऐप बना सकते हैं - ASP.NET कोर वास्तव में उसी परत से संबंधित है जैसे .NET मानक करता है। यह सिर्फ .NET कोर के लिए विवश नहीं है।
नेमी

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

3
मैं .NET कोर और .NET फ्रेमवर्क के संयोजन के बारे में बात नहीं कर रहा हूँ। मेरा कहना यह है कि ASP.NET Core नाम के बावजूद .NET Core पर निर्भर नहीं है। यह एक पुस्तकालय के रूप में लिखा गया है जो .NET मानक को लक्षित करता है, इसलिए आप इसे हर जगह उपयोग कर सकते हैं। आप .NET मानक का उपयोग कर सकते हैं। हां, उन्होंने उस छवि में गलती की।
निम

2
@OgrishMan आप .Net मानक में एक निष्पादन योग्य नहीं बना सकते हैं । यह केवल एक क्लास लाइब्रेरी हो सकती है, जिसे अन्य निष्पादन कोड द्वारा संदर्भित किया जा सकता है। इसका कोई रनटाइम नहीं है
user919426

91

तो संक्षिप्त उत्तर होगा:

IAnimal == .NetStandard (General)
ICat == .NetCore (Less General)
IDog == .NetFramework (Specific / oldest and has the most features)

26
@ जो.वांग के रूप में मैं देख रहा हूं कि यह खराब है कि यह .NET कोर और .NET फ्रेमवर्क के बीच के संबंध को खराब करता है। यदि .NET कोर पक्षी है, तो .NET फ्रेमवर्क ईगल नहीं हो सकता है (शायद बिल्ली अधिक उपयुक्त है)।
लेक्स ली

8
@LexLi सही है, इससे पानी पिघल जाता है। .NET फ्रेमवर्क .NET कोर का उपप्रकार नहीं है।
एरिक एस्सिल्डसन

6
यह थोड़ा फैंसी लग सकता है लेकिन
एक्यूरेट

3
@Joe द्वारा मूल टिप्पणी अधिक सटीक लग रही थी। समुदाय द्वारा संपादित उत्तर ने इसे भ्रमित कर दिया
नंदुन

7
कुत्तों में बिल्लियों की तुलना में अधिक विशेषताएं हैं?
एनओपी

71

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

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

.NET मानक एक विनिर्देश है जिसके लिए एपीआई पुस्तकालयों और विधानसभाओं के सेट उपलब्ध होने चाहिए। .NET मानक 1.0 के लिए लिखा गया एक ऐप फ्रेमवर्क, कोर, मोनो, आदि के किसी भी संस्करण को संकलित और चलाने में सक्षम होना चाहिए, जो पुस्तकालयों के .NET मानक 1.0 संग्रह के लिए समर्थन का विज्ञापन करता है। .NET मानक 1.1, 1.5, 1.6, 2.0, आदि के लिए भी ऐसा ही है। जब तक रनटाइम आपके प्रोग्राम द्वारा लक्षित मानक के संस्करण के लिए समर्थन प्रदान करता है, तब तक आपका प्रोग्राम वहां चलना चाहिए।

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

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

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


1
जबकि .NET कोर और .NET मानक का एक अच्छा अवलोकन है, लेकिन यह उत्तर इनमें से प्रत्येक को लक्षित करने वाले कक्षा पुस्तकालयों के बारे में प्रश्न का उत्तर देने में विफल रहता है।
गिगी

6
यदि यह आपका लक्ष्य है, तो प्रश्न को "अस्पष्ट क्या आप पूछ रहे हैं" के रूप में बंद करने की आवश्यकता है, क्योंकि हमेशा बहुत अधिक स्थितिजन्य विशिष्टताएं होने वाली हैं जो हमारे लिए किसी दिए गए व्यक्ति के वातावरण में खेलने के लिए हमेशा आपको बताते हैं कि क्या करना है , या "बहुत व्यापक" के रूप में यदि आप सामान्य मामले के बारे में पूछ रहे हैं। हम यहां केवल आपको उत्पादों के बारे में जानकारी दे सकते हैं, इसलिए आपको अपना निर्णय लेने के लिए सूचित किया जा सकता है।
जोएल कोएहॉर्न

यह स्पष्ट रूप से मामला नहीं है, क्योंकि दूसरे ने सवाल का सटीक उत्तर दिया है। मेरा सवाल कक्षा पुस्तकालयों के बारे में था। आपका उत्तर चौखटों के बारे में था।
गिगी

29

.NET फ्रेमवर्क और .NET कोर दोनों फ्रेमवर्क हैं।

.NET मानक एक मानक है (दूसरे शब्दों में, एक विनिर्देश)।

आप .NET फ्रेमवर्क और .NET कोर के साथ एक निष्पादन योग्य परियोजना (जैसे कंसोल एप्लिकेशन या ASP.NET एप्लिकेशन) बना सकते हैं, लेकिन .NET मानक के साथ नहीं।

.NET मानक के साथ आप केवल एक क्लास लाइब्रेरी प्रोजेक्ट बना सकते हैं जिसे स्टैंडअलोन निष्पादित नहीं किया जा सकता है और इसे किसी अन्य .NET कोर या .NET फ्रेमवर्क निष्पादन योग्य परियोजना द्वारा संदर्भित किया जाना चाहिए।


20

आशा है कि यह .NET मानक एपीआई सतह और अन्य .NET प्लेटफार्मों के बीच संबंधों को समझने में मदद करेगा । प्रत्येक इंटरफ़ेस एक लक्ष्य ढांचे का प्रतिनिधित्व करता है और विधियाँ उस लक्ष्य ढांचे पर उपलब्ध एपीआई के समूहों का प्रतिनिधित्व करती हैं।

namespace Analogy
{
  // .NET Standard

interface INetStandard10
{
    void Primitives();
    void Reflection();
    void Tasks();
    void Xml();
    void Collections();
    void Linq();
}

interface INetStandard11 : INetStandard10
{
    void ConcurrentCollections();
    void LinqParallel();
    void Compression();
    void HttpClient();
}

interface INetStandard12 : INetStandard11
{
    void ThreadingTimer();
}

interface INetStandard13 : INetStandard12
{
    //.NET Standard 1.3 specific APIs
}

// And so on ...


// .NET Framework 

interface INetFramework45 : INetStandard11
{
    void FileSystem();
    void Console();
    void ThreadPool();
    void Crypto();
    void WebSockets();
    void Process();
    void Drawing();
    void SystemWeb();
    void WPF();
    void WindowsForms();
    void WCF();
}

interface INetFramework451 : INetFramework45, INetStandard12
{
    // .NET Framework 4.5.1 specific APIs
}

interface INetFramework452 : INetFramework451, INetStandard12
{
    // .NET Framework 4.5.2 specific APIs
}

interface INetFramework46 : INetFramework452, INetStandard13
{
    // .NET Framework 4.6 specific APIs
}

interface INetFramework461 : INetFramework46, INetStandard14
{
    // .NET Framework 4.6.1 specific APIs
}

interface INetFramework462 : INetFramework461, INetStandard15
{
    // .NET Framework 4.6.2 specific APIs
}

// .NET Core
interface INetCoreApp10 : INetStandard15
{
    // TODO: .NET Core 1.0 specific APIs
}
// Windows Universal Platform
interface IWindowsUniversalPlatform : INetStandard13
{
    void GPS();
    void Xaml();
}

// Xamarin 
interface IXamarinIOS : INetStandard15
{
    void AppleAPIs();
}

interface IXamarinAndroid : INetStandard15
{
    void GoogleAPIs();
}    
// Future platform

interface ISomeFuturePlatform : INetStandard13
{
    // A future platform chooses to implement a specific .NET Standard version.
    // All libraries that target that version are instantly compatible with this new
    // platform
}
}

स्रोत


17

अंतर को समझाने का एक अन्य तरीका वास्तविक दुनिया के उदाहरणों के साथ हो सकता है, क्योंकि हम में से अधिकांश नर्तक मौजूदा उपकरण और रूपरेखा (ज़ामरीन, एकता, आदि) का उपयोग नौकरी करने के लिए करेंगे।

इसलिए, .NET फ्रेमवर्क के साथ आपके पास काम करने के लिए सभी .NET उपकरण हैं, लेकिन आप केवल Windows अनुप्रयोगों (UWP, Winforms, ASP.NET, आदि) को लक्षित कर सकते हैं। चूंकि .NET फ्रेमवर्क बंद स्रोत है इसलिए इसके बारे में बहुत कुछ नहीं करना है।

.NET कोर के साथ आपके पास कम उपकरण हैं लेकिन आप मुख्य डेस्कटॉप प्लेटफॉर्म (विंडोज, लिनक्स, मैक) को लक्षित कर सकते हैं। यह ASP.NET कोर अनुप्रयोगों में विशेष रूप से उपयोगी है, क्योंकि आप अब लिनक्स में Asp.net (सस्ते होस्टिंग मूल्य) की मेजबानी कर सकते हैं। अब चूंकि .NET कोर खुला हुआ था, इसलिए अन्य प्लेटफार्मों के लिए पुस्तकालयों को विकसित करना तकनीकी रूप से संभव है। लेकिन क्योंकि वहाँ चौखटे नहीं हैं जो इसका समर्थन करते हैं, मुझे नहीं लगता कि यह एक अच्छा विचार है।

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

एक वास्तविक दुनिया आवेदन में आप उन सभी का उपयोग करने की आवश्यकता हो सकती है। उदाहरण के लिए, मैंने बिक्री के एक बिंदु को विकसित किया जिसमें निम्नलिखित वास्तुकला थी:

सर्वर और क्लाइंट दोनों को साझा किया गया:

  • एक .NET मानक पुस्तकालय जो मेरे आवेदन के मॉडल को संभालता है।
  • एक .NET मानक पुस्तकालय जो ग्राहकों द्वारा भेजे गए डेटा के सत्यापन को संभालता है।

चूंकि यह .NET मानक पुस्तकालय है, इसलिए इसे किसी अन्य परियोजना (क्लाइंट और सर्वर) में उपयोग किया जा सकता है।

.NET मानक लाइब्रेरी पर सत्यापन होने का भी एक अच्छा फायदा है क्योंकि मैं यह सुनिश्चित कर सकता हूं कि सर्वर और क्लाइंट पर समान सत्यापन लागू हो। सर्वर अनिवार्य है, जबकि ग्राहक यातायात को कम करने के लिए वैकल्पिक और उपयोगी है।

सर्वर साइड (वेब ​​एपीआई):

  • एक .NET मानक (कोर और साथ ही) पुस्तकालय हो सकता है जो सभी डेटाबेस कनेक्शन को संभालता है।

  • एक .NET कोर प्रोजेक्ट जो रेस्ट एपीआई को हैंडल करता है और डेटाबेस लाइब्रेरी का उपयोग करता है।

जैसा कि यह .NET कोर में विकसित किया गया है, मैं लिनक्स सर्वर पर एप्लिकेशन को होस्ट कर सकता हूं।

क्लाइंट साइड (MVFM WPF + Xamarin के साथ। एंड्रॉइड / IOS):

  • एक .NET मानक पुस्तकालय जो क्लाइंट API कनेक्शन को संभालता है।

  • एक .NET मानक पुस्तकालय जो ViewModels लॉजिक को संभालता है। सभी विचारों में इस्तेमाल किया।

  • एक .NET फ्रेमवर्क WPF एप्लीकेशन जो कि विंडोज़ एप्लीकेशन के लिए WPF व्यूज को हैंडल करता है। अद्यतन: WPF अनुप्रयोग अभी .NET कोर हो सकते हैं, हालांकि वे केवल वर्तमान में विंडोज़ पर काम करते हैं। AvaloniaUI अन्य डेस्कटॉप प्लेटफॉर्म के लिए डेस्कटॉप GUI एप्लिकेशन बनाने के लिए एक अच्छा विकल्प है।

  • एक .NET मानक पुस्तकालय जो Xamarin प्रपत्र विचारों को संभालता है।

  • एक ज़ामरीन एंड्रॉइड और ज़ामारिन आईओएस प्रोजेक्ट।

इसलिए आप देख सकते हैं कि एप्लिकेशन के क्लाइंट पक्ष में यहां एक बड़ा फायदा है, क्योंकि मैं .NET मानक पुस्तकालयों (क्लाइंट एपीआई और व्यूमॉडल) दोनों का पुन: उपयोग कर सकता हूं और बस WPF, Xamarin और IOS अनुप्रयोगों के लिए कोई तर्क नहीं के साथ विचार कर सकता हूं।


2
मुझे लगता है कि यह एक बेहतर उत्तर है क्योंकि यह वास्तविक दुनिया को शामिल करता है।
जे वेज़ी

12

.NET मानक: इसे एक बड़े मानक पुस्तकालय के रूप में सोचें। एक निर्भरता के रूप में इसका उपयोग करते समय आप केवल पुस्तकालय (.DLL) बना सकते हैं, निष्पादन योग्य नहीं। .NET मानक के साथ निर्भरता के रूप में बनाई गई लाइब्रेरी को Xamarin.Android, Xamarin.iOS, .NET कोर विंडोज / OS X / Linux प्रोजेक्ट में जोड़ा जा सकता है।

.NET कोर: इसे पुराने .NET फ्रेमवर्क की निरंतरता के रूप में सोचें, बस यह ओपनसोर्स है और कुछ सामान अभी तक लागू नहीं किया गया है और अन्य को हटा दिया गया है। यह अतिरिक्त कार्यों के साथ .NET मानक का विस्तार करता है, लेकिन यह केवल डेस्कटॉप पर चलता है । इसे एक निर्भरता के रूप में जोड़ते समय आप विंडोज, लिनक्स और ओएस एक्स पर रन करने योग्य एप्लिकेशन बना सकते हैं (हालांकि केवल अब के लिए कंसोल, कोई जीयूआई नहीं)। तो .NET कोर = .NET मानक + डेस्कटॉप विशिष्ट सामान।

इसके अलावा UWP इसका उपयोग करता है और नए ASP.NET Core इसे निर्भरता के रूप में भी उपयोग करते हैं।


8

.NET मानक कोड साझाकरण को बेहतर बनाने और प्रत्येक .NET कार्यान्वयन में एपीआई को अधिक सुसंगत बनाने के लिए मुख्य रूप से मौजूद है।

पुस्तकालयों का निर्माण करते समय हमारे पास .NET मानक 2.0 के रूप में लक्ष्य हो सकता है ताकि निर्मित पुस्तकालय .NET .NET, मोनो , आदि सहित .NET फ्रेमवर्क के विभिन्न संस्करणों के साथ संगत हो ।


2

उपरोक्त उत्तर नेट कोर, नेट मानक और नेट फ्रैमवर्क के बीच के अंतर के बारे में सबसे अच्छी समझ का वर्णन कर सकते हैं, इसलिए मैं इस पर यह चुनते समय अपने अनुभव को साझा करना चाहता हूं।

उस प्रोजेक्ट में जिसे आपको .NET फ्रेमवर्क, .NET कोर और .NET स्टैंडर्ड के बीच मिलाना है। उदाहरण के लिए, जब हम .NET कोर 1.0 के साथ सिस्टम का निर्माण करते हैं, उस समय .net कोर के साथ होस्ट करने वाली विंडो सेवाओं के लिए कोई समर्थन नहीं होता है।

अगला कारण हम सक्रिय रिपोर्ट का उपयोग कर रहे हैं जो .NET कोर का समर्थन नहीं करता है। इसलिए हम एक ऐसी इन्फ्रास्ट्रक्चर लाइब्रेरी बनाना चाहते हैं, जिसका इस्तेमाल .NET कोर (asp.net core) और Windows सर्विस और रिपोर्टिंग (.NET फ्रेमवर्क) दोनों के लिए किया जा सकता है -> इसीलिए हमने इस तरह की लाइब्रेरी के लिए .NET स्टैंडर्ड को चुना। .NET मानक का चयन करने का मतलब है कि आपको सावधानीपूर्वक विचार करने की आवश्यकता है कि पुस्तकालय में प्रत्येक वर्ग सरल होना चाहिए और .NET (कोर, फ्रेमवर्क, मानक) को पार करना चाहिए।

निष्कर्ष:

  • .NET इन्फ्रास्ट्रक्चर लाइब्रेरी के लिए मानक और साझा आम। इस परिवाद को .NET फ्रेमवर्क और .NET कोर द्वारा संदर्भित किया जा सकता है।
  • सक्रिय रिपोर्ट, विंडो सर्विसेज (अब .NET 3.0 के साथ समर्थन करता है) जैसी असमर्थित प्रौद्योगिकियों के लिए .NET फ्रेमवर्क।
  • ASP.NET के लिए .NET कोर बेशक।

Microsoft ने केवल .NET 5 की घोषणा की: https://devblogs.microsoft.com/dotnet/introducing-net-5/


@ गिगी कृपया मेरे उत्तर को ध्यान से पढ़ें, मैंने कहा कि यह 1.0 संस्करण में .NET कोर था और इस मामले में हम .NET कोर और .NET फ्रेमवर्क दोनों को संयोजित करने के लिए एक समाधान डिजाइन करना चाहते हैं। ASP.NET कोर 2.0 से ऊपर से .NET फ्रेमवर्क का समर्थन करता है। मेरा जवाब एक कहानी है जब आपको .NET के कई संस्करण से निपटना पड़ता है। इसलिए मैं समझ नहीं पा रहा हूं कि जब आप स्थिति को सही ढंग से नहीं समझ पाते हैं तो आपके पास एक नीचा क्यों होता है।
शाम

आपके उत्तर के लिए धन्यवाद - मैंने आपका उत्तर पढ़ा, और मैंने वह भाग पढ़ा जहाँ आपने .NET कोर 1.0 को संदर्भित किया था। फिर भी मैंने इसे आपके निष्कर्षों की व्याख्या करने के लिए एक शर्त के रूप में नहीं लिया, जो अन्यथा वर्तमान संस्करण के साथ पढ़ने वाले लोगों को भ्रमित करेगा। इसके अतिरिक्त, ऐसा लगता है कि मेरी टिप्पणी को स्टैक ओवरफ्लो पुलिस द्वारा nuked किया गया था, जो एक शर्म की बात है कि मैं इस साइट पर आदी हो गया हूं।
गिगी

0

.NET फ्रेमवर्क विंडोज फॉर्म, ASP.NET और WPF एप्लिकेशन को .NET फ्रेमवर्क लाइब्रेरी का उपयोग करके विकसित किया जाना चाहिए

.NET मानक Xamarin, IOs और MAC OSx एप्लिकेशन को .NET मानक पुस्तकालय का उपयोग करके बंद किया जाना चाहिए

.NET कोर
लाइब्रेरी का उपयोग करके .NET कोर यूनिवर्सल विंडोज प्लेटफॉर्म (UWP) और लिनक्स एप्लिकेशन विकसित किया जाना चाहिए। API C ++ में लागू किया गया है और आप C ++, VB.NET, C #, F # और जावास्क्रिप्ट भाषाएं .NET का उपयोग कर सकते हैं


0

.Net कोर क्लास लाइब्रेरी .Net मानक पर बनाई गई है। यदि आप किसी ऐसी लाइब्रेरी को कार्यान्वित करना चाहते हैं जो कि .Net फ्रेमवर्क, .Net कोर और ज़ामरीन के लिए पोर्टेबल हो, तो .Net मानक चुनें।


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