API और SDK में क्या अंतर है?


174

मैं विभिन्न एपीआई और एसडीके के माध्यम से देख रहा था, जब मुझे एहसास हुआ कि मैं वास्तव में एक एपीआई और कुछ एसडीके नामक कुछ के बीच का अंतर नहीं बता सकता ।

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

तो, एसडीके और एपीआई के बीच शब्दार्थ अंतर क्या है?


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

जवाबों:


175

मुझे लगता है कि यह "सभी एसडीके हैं / एपीआई युक्त नहीं बल्कि सभी एसडीके एसडीके हैं" की तर्ज पर आते हैं।

एक एसडीके एपीआई का एक पूरा सेट लगता है जो आपको एप्लिकेशन बनाने के लिए सबसे अधिक आवश्यक कार्रवाई करने की अनुमति देता है। इसके अलावा SDK प्लेटफ़ॉर्म / आइटम के लिए विकसित करने के लिए अन्य टूल शामिल कर सकता है जो इसके लिए है।

दूसरी ओर एक एपीआई संबंधित तरीकों की एक श्रृंखला है जो एक विशिष्ट उद्देश्य के लिए अच्छा हो सकता है।

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


6
मैं जोड़ना चाहूंगा कि SDK सिर्फ एक नमूना है कि आप कैसे कहा एपीआई के साथ बातचीत करेंगे।
मफिन मैन

10
मुझे लगता है कि तुम निक उलटा हो सकता है। एक एसडीके चीजों का एक सुपरसेट है, जिसमें (अन्य चीजों के अलावा) एपीआई है, यह पुस्तकालयों के साथ बातचीत करने के लिए है (पुस्तकालय ही नहीं, लेकिन लाइब्रेरी के लिए एक कोडर का उपयोग करने वाले पुस्तकालय के लिए इंटरफ़ेस)।
डैनी स्टेपल

7
एक एसडीके में एक एपीआई, उपकरण, प्रलेखन, नमूने, और बाकी सब कुछ शामिल हो सकते हैं जिनकी आवश्यकता है।
gregmac

4
@gregmac क्या मैंने उस तथ्य को व्यक्त नहीं किया?

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

85
  • एपीआई = एप्लीकेशन प्रोग्रामिंग इंटरफ़ेस
  • एसडीके = सॉफ्टवेयर डेवलपमेंट किट

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

एपीआई के उदाहरण:

एसडीके के उदाहरण:


3
+10 के लिए "आप अंतर्निहित घटकों के बिना एक एपीआई का उपयोग कर सकते हैं"। Btw, दूसरा लिंक नीचे है .......
Pacerier

24

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

एसडीके → इंटरफ़ेस प्रलेखन (+ उदाहरण और उपकरण)


4
अंत में कोई है जो प्रलेखन का उल्लेख करता है!
gregmac

4
सभी एपीआई दस्तावेज नहीं हैं - कभी-कभी आपको केवल इंटरफ़ेस का निरीक्षण / प्रतिबिंबित करना होता है।
JBRWilkinson

एपीआई के "उदाहरण" हिस्सा नहीं है?
पचेरियर

1
@ स्पेसियर ... बिल्कुल नहीं। उदाहरण एक एपीआई प्रलेखन का हिस्सा हो सकता है , लेकिन सरासर इंटरफ़ेस "अनिर्दिष्ट" हो सकता है, (यानी इसके बारे में प्रलेखन बाहरी दुनिया के लिए गुप्त रखा जाता है: लगता है कि ... idk, microsoft ) अभी भी एक एपीआई है। यह सिर्फ इंटरफ़ेस है। फ़ंक्शंस, कक्षाएं, कॉल, शायद एक प्रोटोकॉल, शायद एक फ़ाइल प्रारूप, लेकिन अधिक कुछ नहीं।
ZJR

17

"एपीआई" की तुलना में "एसडीके" सामूहिक अर्थों में सामूहिक है।

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

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

बिना किसी संदर्भ के कोई भी शब्द बहुत सटीक नहीं है।


11

API क्या है?

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

एसडीके क्या है?

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

एपीआई और एसडीके के बीच अंतर क्या है?

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


7

एक एसडीके एक एपीआई के अलावा कुछ नहीं हो सकता है (किसी अन्य ऐप के साथ इंटरफ़ेस की मदद करने के लिए फाइलें), लेकिन आमतौर पर आपके आईडीई के लिए डिबगिंग और अन्य टुकड़ों के साथ मदद करने के लिए अन्य कोड शामिल होते हैं।

मैं सभी से बाहर हूं।


8
त्वरित, अपने आप को कुछ और TLAs प्राप्त करें!
मेसन व्हीलर

4
मैं EIEIO के लिए तैयार हूं।
जेफ़ो

5

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


1

मेरे दो सेंट: मेरा मानना ​​है कि एपीआई शब्द का इस्तेमाल अक्सर गलत तरीके से किया जाता है।

एक एपीआई एक एप्लीकेशन प्रोग्रामिंग इंटरफेस है।

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

हालाँकि अक्सर एपीआई शब्द का उपयोग "लाइब्रेरी" के पर्याय के रूप में किया जाता है। मुझे नहीं लगता कि यह शब्द का सही उपयोग है। भाग पुस्तकालय का कोड इसका इस्तेमाल करने की अनुमति देने के लिए एक API है, लेकिन पुस्तकालय नहीं है एक API।

और एक एसडीके एक तरह का पुस्तकालय है, इसलिए जहां भ्रम हो सकता है।


1
मैं सहमत हूँ। मैं शायद यह कहते हुए कमी कर दूंगा कि यह "गलत" है। यह जहाज रवाना हो गया है और "एपीआई" का उपयोग स्थानांतरित हो गया है। लेकिन मैं इस बात से सहमत हूं कि "लाइब्रेरी" अक्सर एक बेहतर शब्द है जिसे लोग "एपीआई" कह रहे हैं
हैरी वुड

0

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

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


क्या यह केवल आपकी राय है या आप इसे किसी तरह वापस कर सकते हैं?
gnat

"एपीआई अपेक्षित व्यवहार का वर्णन और निर्धारित करता है जबकि पुस्तकालय नियमों के इस सेट का वास्तविक कार्यान्वयन है" en.wikipedia.org/wiki/…
सोलोमन स्लो

मेरे पढ़ने के अनुसार यह उस बिंदु से संबंधित नहीं है जिसे आप बनाने की कोशिश कर रहे हैं: "कि एक एपीआई एक विनिर्देश है"
gnat

-3

मैं इस तरह से तुलना करना चाहूंगा।

यदि आप Microsoft उपकरण का उपयोग कर डेवलपर हैं:

एपीआई = Microsoft.Net फ्रेमवर्क बनाम एसडीके = विज़ुअल स्टूडियो

यदि आप जावा का उपयोग कर डेवलपर हैं:

एपीआई = जावा रनटाइम बनाम एसडीके = विकास किट (JDK) प्रदान करने वाला कोई भी उपकरण

मुझे लगता है कि एक एसडीके को अनिवार्य रूप से एक संगत एपीआई पर भरोसा करना होगा - एक एपीआई के बिना कोई एसडीके नहीं है।


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

1
विज़ुअल स्टूडियो एक एसडीके नहीं है, लेकिन कुछ संस्करणों में विंडोज या .NET एसडीके शामिल हैं क्योंकि आप वीएस का उपयोग करके उनके लिए विकसित होने की संभावना रखते हैं।
JBRWilkinson

-3

यहाँ एक सरल सादृश्य है ... एपीआई ऐसे शब्दों की तरह हैं जिनका आप उपयोग कर सकते हैं, और एसडीके ऐसे वाक्य हैं जो आपके लिए एक साथ रखे गए हैं।


-4

जैसा कि अनुप्रयोगों को विकसित किया जाता है और उन्हें अन्य अनुप्रयोगों के साथ जोड़कर बढ़ाया जाता है, अन्य अनुप्रयोगों (तर्क) को मुख्य तर्क के साथ इंटरफ़ेस करने की अनुमति देने की आवश्यकता होती है - यह एपीआई के एक निर्धारित सेट के माध्यम से किया जाता है। SDK का उपयोग / शिल्प कोड बनाने के लिए किया जाता है जो अन्य अनुप्रयोगों के साथ संपर्क करने के लिए API का उपयोग करता है।


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