हमारे पास .NET के इतने सारे फ्लेवर क्यों हैं? क्या यह एक अच्छी चीज है? [बन्द है]


9

.NET फ्रेमवर्क के कई "फ्लेवर" हैं :

  • पूर्ण ("सामान्य")
  • ग्राहक प्रोफ़ाइल सबसेट
  • वेब ब्राउज़र में सिल्वरलाइट
  • विंडोज फोन पर "सिल्वरलाइट"
  • कॉम्पैक्ट फ्रेमवर्क
  • WinRT

जब एक नए प्लेटफ़ॉर्म पर C # कोड की आवश्यकता होती है, तो ऐसा लगता है कि Microsot पूर्ण CLR लेना पसंद करता है और इसे एक छोटे उपसमुच्चय पर ले जाता है, नई असेंबलियों को बनाने और इधर-उधर घूमने के बजाय, केवल मौजूदा असेंबलियों जैसे कि BCL में उपयोग करना। । उदाहरण के लिए सिल्वरलाइट में WPF के समान कार्यान्वयन को संदर्भित करने के बजाय, WPF के लिए अलग-अलग कक्षाएं / विधियाँ हैं (थोड़े अलग हस्ताक्षर या बहुत अलग कार्यान्वयन वाले कुछ तरीकों के लिए भी) List<T>

क्या यह आदर्श वास्तुकला है, या विरासत का संकेत है? क्या बीसीएल को सभी प्लेटफार्मों पर नहीं चलना चाहिए, प्रत्येक पर सिर्फ अलग प्रस्तुति / आईओ लाइब्रेरी के साथ? या बीसीएल और अन्य पुस्तकालयों को भी फूला हुआ है, और उन्हें अलग करने से कई पिछड़ी संगतता समस्याएं पैदा होंगी, स्वीकार्य होने के लिए?

यदि हम एक रिक्त कैनवास से शुरू करते हैं और पीछे की संगतता के बारे में चिंतित नहीं थे, तो क्या मौजूदा स्थिति वास्तव में कई प्लेटफार्मों को संभालने का सबसे अच्छा तरीका होगा?


7
सभी करीबी वोटों के साथ क्या है? यह पूरी तरह से वैध सवाल है।
मेसन व्हीलर

2
ऐसा लगता है कि यह बंद हो सकता है, शायद इसलिए कि यह थोड़ा न्यायिक रूप से शब्दबद्ध किया गया है (ऐसा लगता है जैसे आपने पहले ही तय कर लिया है कि यह "बुरी तरह से स्थापत्य" है)। आप इसे rephrase करना चाह सकते हैं क्योंकि " .NET के इतने सारे फ्लेवर क्यों हैं?"
FrustratedWithFormsDesigner 19

1
@FrustratedWithFormsDesigner सही है। प्रश्न .NET के खिलाफ पूर्वाग्रह से शुरू होता है। यदि टोन अधिक तटस्थ था, मुझे संदेह है कि कोई करीबी वोट नहीं डाले गए होंगे।
ऊद

2
यह मुझे ऐसा लगता है जैसे आप एक तर्क शुरू करने की कोशिश कर रहे हैं, न कि आपके प्रश्न का रचनात्मक उत्तर ढूंढ रहे हैं। मैं अनुमान लगा रहा हूं कि आपको करीबी वोट क्यों मिल रहे हैं।
त्यान्ना

2
@Oded और अन्य - मैंने शीर्षक और निकाय पुन: प्राप्त किया है, आशा है कि आपकी स्वीकृति के साथ मिलती है :)
पॉल स्टोवेल

जवाबों:


5

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

यदि आप Apple को देखते हैं, तो iPhone में वे सभी रूटीन नहीं होते हैं जो एक मैक पर मिलते हैं।


लेकिन List<T>माइक्रो फ्रेमवर्क बनाने के लिए कोड की प्रतिलिपि बनाने / चिपकाने वाले डेवलपर के बजाय List<T>, क्या बीसीएल को ठीक से विभाजित नहीं किया जाना चाहिए जैसे कि सभी प्लेटफार्मों पर चलने वाले बायनेरी?
पॉल स्टोवेल

2
दूसरे शब्दों में, कोड को किसी अन्य प्लेटफ़ॉर्म पर नहीं चलाना चाहिए, यह चुनने का एक मामला हो सकता है कि कौन सी विधानसभाओं का समर्थन करना है?
पॉल स्टोवेल

1
जावा ऐसा भी करता है। उदाहरण के लिए, जावा कार्ड जावा का एक सबसेट है।
बर्नार्ड

2
@PaulStovell: मुझे यकीन नहीं है कि एमएस यह कैसे करता है ... लेकिन मुझे आश्चर्य नहीं होगा यदि एमएस के पास एक अलग बिल्ड पथ / स्क्रिप्ट (इसे हल्के ढंग से डालने के लिए) है जो कोड लेता है और इसे लक्ष्य मंच के लिए बनाता है - तो यह कॉपी / पेस्ट नहीं है, List<T>लेकिन यह कोड से कुछ चीजों को prune कर सकता है या कुछ प्लेटफ़ॉर्म विशिष्ट चीज़ों के साथ विलय कर सकता है और एक परिनियोजन आइटम का उत्पादन कर सकता है।
स्टीवन एवर्स

1

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

उदाहरण के लिए, संग्रह के विभिन्न प्रतियों के साथ System.dll / mscorlib.dll की अपनी प्रति होने के बजाय प्रत्येक रनटाइम के बजाय प्रत्येक स्वाद संदर्भ को "System.Collections.dll" नामक एक साझा असेंबली नहीं चाहिए?

इसकी आवश्यकता क्यों है? जब तक वे सभी संगत हैं (फिर से, पोर्टेबल क्लास लाइब्रेरी देखें), यह बात नहीं होनी चाहिए, क्योंकि बीसीएल स्वयं रनटाइम का हिस्सा है, और अग्रानुक्रम में वितरित किया जाता है।


क्या मुझे एक वर्ग लिखने में सक्षम नहीं होना चाहिए जो केवल List<T>पोर्टेबल लाइब्रेरी बनाए बिना किसी भी प्लेटफ़ॉर्म पर इसका उपयोग करता है और इसे चलाता है? या List<T>खुद को पोर्टेबल लाइब्रेरी में नहीं होना चाहिए ? पोर्टेबल लाइब्रेरी मुझे एक सुरुचिपूर्ण डिजाइन के हिस्से के बजाय एक वर्कअराउंड की तरह महसूस करती हैं।
पॉल स्टोवेल

1

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

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