एक एपीआई और एसडीके के बीच अंतर


187

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

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

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

विशेष रूप से, नामांकन / सत्यापन करने के लिए एक फिंगरप्रिंट सेंसर बनाम सॉफ़्टवेयर के संदर्भ में, यहां बताया गया है कि मैंने इसे कैसे समझाने का प्रयास किया:

यदि मैं एक फिंगरप्रिंट डिवाइस / सेंसर निर्माता हूं और सॉफ्टवेयर लिखने के व्यवसाय में नहीं हूं, तो मैं अपने उत्पाद को बेहतर तरीके से बाजार में ला सकता हूं:

  1. सुनिश्चित करें कि मेरे डिवाइस ड्राइवर ऑपरेटिंग सिस्टम की एक विस्तृत विविधता पर स्थापित करने योग्य हैं
  2. सॉफ्टवेयर डेवलपर्स को प्रोग्राम लिखने के लिए एक एपीआई प्रदान करें (उदाहरण के लिए, नामांकन, सत्यापन के लिए) "टॉक" या मेरे डिवाइस का उपयोग करने के लिए
  3. सॉफ़्टवेयर डेवलपर्स के लिए मेरे डिवाइस के साथ काम करने वाले प्रोग्राम लिखने के लिए इसे आसान और तेज़ बनाने के लिए एसडीके (एपीआई से एक कदम आगे) विकसित करें और प्रदान करें। SDK हेल्पर कोड लाइब्रेरी, रेफरेंस एप्लिकेशन, डॉक्यूमेंटेशन आदि प्रदान कर सकते हैं।

जवाबों:


225

केक का टुकड़ा:

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

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

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


2
यह समझाने के लिए मेरे पास कुछ अन्य विचार हैं iPhone उदाहरण (मालिकाना कोड लेकिन अच्छी तरह से परिभाषित एपीआई), टेलीफोन जैक या यूएसबी पोर्ट उदाहरण यह समझाने के लिए कि एक सॉफ्टवेयर इंटरफेस क्या है हार्डवेयर समानता को दृष्टिगत रूप से समझने में आसान है
स्लाइसॉफ्ट

17
इस अच्छी व्याख्या को जारी रखना, अर्थात एक एपीआई उदाहरण के लिए एक http / REST एपीआई हो सकता है, जबकि SDK HESTpClient के शीर्ष पर एक पुस्तकालय हो सकता है ताकि REST वेब सेवाओं के साथ बातचीत करना अधिक तेज़ और आसान हो सके।

4
अधिक बस, एक एपीआई एक इंटरफ़ेस है। जबकि इंटरफ़ेस पर एक SDK एक अमूर्त परत है।
टीवीएस

1
एसडीके इंटरफेस पर एक अमूर्त परत नहीं है; एसडीके इंटरफेस का एक कार्यान्वयन है। (अगर एक और अमूर्त परत है, तो सवाल यह है कि इसे स्वयं इंटरफ़ेस के भाग के रूप में निर्दिष्ट क्यों नहीं किया गया है)
जेसन एस

मैं इस परिभाषा से सहमत हूं, लेकिन एक ही समय में आश्चर्य होता है कि iOS और Android उदाहरण के लिए API का उपयोग ब्लूटूथ लाइब्रेरी (iOS कोर ब्लूटूथ एपीआई, एंड्रॉइड ब्लूटूथ एपीआई) के लिए क्यों करते हैं?
टैमबर्ग

59

एपीआई कुछ puzzling गेम के बिल्डिंग ब्लॉक्स की तरह है जिसे एक बच्चा अलग-अलग शेप में ब्लॉक से जुड़ने के लिए खेलता है और कुछ ऐसा बनाता है जिसके बारे में वह सोच सकता है।

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

एक एसडीके या एपीआई के बिना कोडिंग एक कार्यशाला के बिना खरोंच से सब कुछ बनाने की तरह है - आपको यहां तक ​​कि अपने खुद के उपकरण बनाने होंगे


आप कहते हैं कि SDK का कोई पूर्व-आकार का बिल्डिंग ब्लॉक नहीं है, लेकिन JAVA SDK डेटा स्ट्रक्चर्स जैसे ArrayList या HAPMap के साथ आता है ...?
कोरे तुगे

1
हां, आप इसे बिल्डिंग ब्लॉक के रूप में मान सकते हैं लेकिन दूसरी ओर जावा इसे एक बिल्डिंग ब्लॉक के रूप में नहीं एक टूल के रूप में प्रदान करता है।
अब्दुल रहमान

1
मुझे यह सवाल तब आया जब मैं फेसबुक प्रलेखन को पढ़ने और समझने की कोशिश कर रहा था: Developers.facebook.com/docs/javascript एक बात मुझे भ्रमित करती है कि facebook इसे एक जावास्क्रिप्ट एसडीके कहता है, जो मेरी राय में एपीआई की तरह है। क्योंकि यह कोई मूर्त उपकरण प्रदान नहीं करता है, लेकिन केवल एक पुस्तकालय जिसे डेवलपर्स उपयोग कर सकते हैं, क्या इसे एसडीके के बजाय एपीआई नहीं कहा जाना चाहिए?
shenkwen

एसडीके स्पष्टीकरण बहुत काम नहीं करता है। इसके बजाय not limited to blocks, or can create something without any blocks to begin with, एसडीके की तरह आपको काम करने के लिए एपीआई के ब्लॉकों की बेहतर रचनाएँ भी देता है। एसडीके एक एपीआई के ऊपर बनाता है।
डॉन चीडल

26

मान लीजिए कि कंपनी C उत्पाद P प्रदान करती है और P किसी तरह से सॉफ़्टवेयर शामिल करता है। तब C, सॉफ्टवेयर डेवलपर्स के लिए लाइब्रेरीज़ का एक पुस्तकालय / सेट प्रदान कर सकता है जो P के सॉफ्टवेयर सिस्टम चलाते हैं।

वह पुस्तकालय / पुस्तकालय एक एसडीके हैं । यह पी। के सिस्टम का हिस्सा है। यह सॉफ्टवेयर डेवलपर्स के लिए एक किट है, जो पी के सॉफ्टवेयर पीस को संशोधित, कॉन्फ़िगर, ठीक करने, सुधारने आदि के लिए उपयोग करता है।

यदि C, अन्य कंपनियों / प्रणालियों को P की कार्यक्षमता प्रदान करना चाहता है, तो वह API के साथ ऐसा करता है

यह पी के लिए एक इंटरफेस है। बाहरी सिस्टम के लिए पी के साथ बातचीत करने का एक तरीका है।

यदि आप कार्यान्वयन के संदर्भ में सोचते हैं, तो वे काफी समान प्रतीत होंगे। खासकर अब जब इंटरनेट एक बड़े वितरित ऑपरेटिंग सिस्टम की तरह हो गया है।

उद्देश्य में, हालांकि, वे वास्तव में काफी अलग हैं।

आप एक एसडीके के साथ कुछ का निर्माण करते हैं और आप एक एपीआई के साथ कुछ का उपयोग या उपभोग करते हैं।


22
आपको बस अपने जवाब को अंतिम पंक्ति तक संपादित करना चाहिए और सभी ब्ला-डे-ब्ला को छोड़ देना चाहिए।
mhenry1384

यदि C पुस्तकालयों का एक समूह प्रदान करता है जो P''s सॉफ़्टवेयर को चलाता है, तो वे लाइब्रेरीएँ API (s) बनाती हैं, न कि SDK (जब तक कि यह बिल्कुल न्यूनतम SDK न हो, जो API नहीं है)। एसडीके में इन एपीआई के साथ-साथ उन सभी अच्छाइयों को शामिल किया जाएगा जो डेवलपर्स को कच्चे एपीआई के अलावा अन्य चाहिए, इसलिए "किट"। तो आप कुछ बनाने बनाम उपयोग करने / उपभोग (+ / नियंत्रण / बातचीत) के बारे में सही हैं, लेकिन भेद अन्यथा muddled है।
जोश सटरफील्ड

12

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

जबकि सॉफ्टवेयर डेवलपमेंट किट एपीआई / एस के आसपास एक आवरण है जो डेवलपर्स के लिए काम को आसान बनाता है।

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

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


बस सोचा था कि कुछ उदाहरणों को उद्धृत करना अच्छा होगा।
user3137634

9

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


1
तकनीकी रूप से एपीआई को निर्दिष्ट करने की आवश्यकता है लेकिन सार्वजनिक रूप से प्रलेखित होने की आवश्यकता नहीं है, वे गुप्त हो सकते हैं।
जेसन एस

8

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

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

एसडीके के अपने एपीआई भी हैं। "यदि आप ट्रेन को कोयले में डालना चाहते हैं, तो" ट्रेन को स्थानांतरित करने के लिए नीले रंग की लीवर खींचो। "," यदि ट्रेन मज़ेदार काम करना शुरू कर देती है, तो मेंटेनेंस मैन को कॉल करें "आदि।


3

एपीआई = उपलब्ध शब्दों और उनके अर्थों का शब्दकोश (और उन्हें संयोजित करने के लिए आवश्यक व्याकरण)

एसडीके = एक वर्ड प्रोसेसिंग सिस्टम ... 2 साल के बच्चों के लिए ... जो विचारों से सही लिखते हैं

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


2

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


0

लायब्रेरी की कार्यक्षमता और इसे नियंत्रित करने के लिए API का उपयोग करने के लिए आप SDK का उपयोग करते हैं।


0

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

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

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

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

एपीआई के उदाहरण: जावा एपीआई, गूगल मैप्स एपीआई, फ्लैश प्लेयर एपीआई।

एसडीके के उदाहरण: जेडडीके, जीडब्ल्यूटी, फ्लेक्स एसडीके।

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