2009-01-08 10 views
20

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

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

धन्यवाद!

संपादित करें: यह प्रश्न सामान्य रूप से एसडीके और ढांचे पर लागू होता है, न केवल ऊपर वर्णित दो।

उत्तर

12

एक एसडीके से एक निश्चित सिस्टम संसाधन या सुविधा के खिलाफ कार्यक्रम के लिए उपकरण प्रदान करने की उम्मीद है। एक फ्रेमवर्क जरूरी नहीं है (हालांकि .NET कंपाइलर्स इत्यादि जैसे उपकरणों का एक पूरा सेट प्रदान करता है - लेकिन यह किसी भी तरह से काम करने के लिए अनिवार्य है)।

तो, आप पूरी तरह से पुस्तकालयों वाली एक फ्रेमवर्क विकसित कर सकते हैं, लेकिन यदि आप इसे एसडीके कहते हैं तो आपको विकास का समर्थन करने के लिए कुछ पेशकश करने की उम्मीद की जाएगी।

+1

यह बहुत अच्छा स्पष्टीकरण था। दर्शकों के लिए थोड़ा सा जोड़ने के लिए यदि मैं किसी को किसी उदाहरण की सहायता से समझना चाहता हूं तो: नेट फ्रेमवर्क = फ्रेमवर्क क्लास लाइब्रेरीज़ (एफसीएल) का सेट जो सीएलआर .NET SDK = .Net Framework + सी # और वीबी कंपाइलर + वीएस + में डेवलपर + डीबगर + आईआईएस एक्सप्रेस वेब सर्वर द्वारा लिखे गए कोड को पैकेज करने के लिए एमएस बिल्ड टूल, ऐसी कई अन्य चीजें जो नेट नेटवर्क विकसित करने के लिए नेट फ्रेमवर्क क्लास लाइब्रेरीज़ (एफसीएल) के खिलाफ प्रोग्राम लिखने में आपकी मदद करती हैं। – RBT

+2

एक और उदाहरण: क्यूटी फ्रेमवर्क (पुस्तकालय) और क्यूटी एसडीके (क्यूटी फ्रेमवर्क + क्यूमेक + क्यूटी निर्माता + क्यूटी लिंगुइस्ट + ...) – rbaleksandar

1

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

यदि आप किसी मशीन पर .NET एप्लिकेशन को चलाने के लिए चाहते हैं तो इसके बजाय Microsoft Framework अनिवार्य है।

1

यह एक ग्रे क्षेत्र है लेकिन फ्रेमवर्क आपके द्वारा लिखे गए पुस्तकालयों के रूप में होते हैं, एसडीके के पास अक्सर अतिरिक्त कार्य होते हैं ताकि आप फ्रेमवर्क से अधिक लाभ प्राप्त कर सकें। एक अच्छा उदाहरण .NET Framework SDK जिसे आप अलग से स्थापित करते हैं, एसडीके में अतिरिक्त उपकरण जैसे ildasm, cordb हैं जो वास्तव में ढांचे के कुछ हिस्सों नहीं हैं।

5

संक्षेप अंतर नहीं है में:

  • आप एसडीके कार्यों कहते हैं।
  • ढांचा आपके कार्यों को कॉल करता है।

एक एसडीके कई टूल के साथ टूलबॉक्स की तरह है और आप चुनते हैं कि आप किसका उपयोग करते हैं और कैसे। आपके पास नियंत्रण है लेकिन बनाने के लिए भी कई निर्णय हैं। यह काफी कम स्तर है।

एक ढांचा आपके लिए बहुत से निर्णय लेता है, इसलिए आपको पहिया को फिर से शुरू करने की आवश्यकता नहीं है; यह एक "रिक्त स्थान भरें" दृष्टिकोण है। कम स्वतंत्रता लेकिन आप बहुत समय बचाते हैं और शायद कुछ गलतियों से बचें।

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

+0

मुझे यकीन नहीं है कि यह क्यों कम हो गया है ... अभी तक उत्तर में, यह है शर्तों के अर्थों की मेरी समझ के सबसे नज़दीकी। –

+1

क्योंकि बुलेट बिंदु गलत हैं। आपके द्वारा कॉल किए जाने वाले फ़ंक्शन एपीआई हैं, एसडीके नहीं। एसडीके एक "ग्रे-डिफ़ाइंड" चीज है। यह आपकी मदद करने के लिए अतिरिक्त सामान के साथ सिर्फ एक ढांचा है। – lespommes

0

मैं भूमिका में थे Zend Framework पर इसकी 1.0 रिलीज के माध्यम से। हमें अक्सर टिप्पणियां मिलीं कि यह इस अर्थ में "ढांचा" नहीं था कि डेवलपर्स ने उम्मीद की - उन्होंने कहा कि यह कक्षा पुस्तकालय से अधिक था।

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

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

लेकिन मुझे अभी भी लगा कि ज़ेड फ्रेमवर्क एक एसडीके की बजाय एक ढांचे के रूप में योग्यता के रूप में योग्यता प्राप्त करता है: एक ढांचा एक्स्टेंसिबल है। इसे ऑब्जेक्ट-ओरिएंटेड बेस क्लास के सेट के रूप में डिज़ाइन किया गया है, और इच्छित उपयोग यह है कि कार्यक्षमता जोड़ने के लिए डेवलपर्स या तो extend इन कक्षाओं में, या सरल प्लग-इन कक्षाएं लिखते हैं।

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

0

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

एक ढांचा कक्षाएं प्रदान करता है जो एक साथ उस एप्लिकेशन के लिए आधार बनाते हैं जिसे आप केवल विस्तारित करते हैं और मांस निकालते हैं।

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

26

मैं सिर्फ विकिपीडिया से कॉपी कर देंगे:

लाइब्रेरी:

एक पुस्तकालय सॉफ्टवेयर विकसित करने के लिए प्रयोग किया जाता सबरूटीन्स या वर्गों का एक संग्रह है। पुस्तकालयों में कोड और डेटा होता है जो स्वतंत्र कार्यक्रमों को सेवाएं प्रदान करता है। यह मॉड्यूलर फैशन में कोड और डेटा साझा और बदलने की अनुमति देता है।

फ्रेमवर्क:

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

एसडीके:

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

तो:

  • लाइब्रेरी कोड है कि आपके आवेदन कॉल है।
  • फ्रेमवर्क एक ऐसा एप्लिकेशन या लाइब्रेरी है जो लगभग तैयार है। आप बस अपने कोड के साथ कुछ रिक्त स्थान भरें जो फ्रेमवर्क कॉल करता है।
  • एसडीके एक बड़ी अवधारणा है क्योंकि इसमें पुस्तकालय, ढांचे, दस्तावेज़ीकरण, उपकरण इत्यादि शामिल हो सकते हैं
  • .NET वास्तव में एक प्लेटफॉर्म की तरह है, सॉफ्टवेयर सॉफ़्टवेयर नहीं।
+1

और 'इंजन' – Delta

+1

@ डिल्टा के साथ क्या अंतर है एक इंजन एक ढांचा है जो एक रनटाइम वातावरण प्रदान करता है जो आपके कार्यक्रमों के साथ सहभागिता करता है। मुझे लगता है कि मुख्य विचार यह है कि इंजन आपके कोड को नियंत्रित करने या क्रियाओं को "ड्राइविंग" के साथ "चल रहा है"। –

0

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