একটি API এবং SDK এর মধ্যে পার্থক্য


187

আমি কোনও নন-বিকাশকারীকে একটি এপিআই, এসডিকে-র মধ্যে পার্থক্য বোঝানোর চেষ্টা করছি। আমাকে ব্যাখ্যা করতে হবে কেন বাণিজ্যিক ফিঙ্গারপ্রিন্ট সফ্টওয়্যার বিক্রেতা সম্ভবত কোনও এসডিকে সরবরাহ করবে না, যদিও তারা সম্ভবত এটি ব্যবহার করেছে one

উভয় ডিভাইস বিক্রেতা এবং সফ্টওয়্যার বিক্রেতারা একটি ভাল-সংজ্ঞায়িত API প্রকাশ করতে এবং তা প্রকাশ করতে পারে। এই এপিআইটি অন্য সফ্টওয়্যার প্রোগ্রামগুলিকে বিক্রেতার নিজস্ব সফ্টওয়্যার উপাদান বা হার্ডওয়্যার ডিভাইসগুলির সাথে আন্তঃচালিত করতে (লিখিত হতে) অনুমতি দেয়।

কারও কাছে যদি আরও স্পষ্টভাবে এটি ব্যাখ্যা করার জন্য ধারণা থাকে তবে আমি পরামর্শগুলির খুব প্রশংসা করব। আমি জোর দিয়ে বলতে চাই যে লক্ষ্যটি হ'ল এমন একটি নন-প্রোগ্রামারকে ধারণাটি ব্যাখ্যা করা যিনি বিকাশকারী লিঙ্গো জানেন না

তালিকাভুক্তি / যাচাইকরণের জন্য সফ্টওয়্যার বনাম ফিঙ্গারপ্রিন্ট সেন্সর প্রসঙ্গে, আমি কীভাবে এটি ব্যাখ্যা করার চেষ্টা করেছি:

আমি যদি আঙুলের ছাপ ডিভাইস / সেন্সর প্রস্তুতকারক এবং লেখার সফটওয়্যার ব্যবসা না করি তবে যেভাবে আমি আমার পণ্যকে আরও ভালভাবে বাজারজাত করতে পারি সেগুলি হ'ল:

  1. আমার ডিভাইস ড্রাইভাররা বিভিন্ন অপারেটিং সিস্টেমে ইনস্টলযোগ্য কিনা তা নিশ্চিত করুন
  2. সফ্টওয়্যার বিকাশকারীদের প্রোগ্রাম লিখার জন্য একটি API নির্ধারণ করুন এবং সরবরাহ করুন (যেমন, তালিকাভুক্তি, যাচাইকরণের জন্য) আমার ডিভাইসে "কথা বলতে" বা ব্যবহার করতে
  3. সফ্টওয়্যার বিকাশকারীদের আমার ডিভাইসের সাথে কাজ করে এমন প্রোগ্রাম লিখতে এটি আরও সহজ এবং দ্রুত করার জন্য একটি এসডিকে বিকাশ এবং সরবরাহ করুন। এসডিকে সাহায্যকারী কোড লাইব্রেরি, রেফারেন্স অ্যাপ্লিকেশন, ডকুমেন্টেশন ইত্যাদি সরবরাহ করতে পারে

উত্তর:


225

খুবই সহজ:

  • একটি API একটি ইন্টারফেস । এটি টেলিফোনের সিস্টেমের স্পেসিফিকেশন বা আপনার বাড়ির বৈদ্যুতিক তারের মতো like যে কোনও কিছুই * এটি ইন্টারফেস করতে জানে ততক্ষণ এটি ব্যবহার করতে পারে। এমনকি আপনি কোনও নির্দিষ্ট এপিআই ব্যবহার করার জন্য অফ-দ্য শেল্ফ সফটওয়্যারটিও কিনতে পারেন, যেমন আপনি নিজের বাড়ির এসি তারের সাথে সংযুক্ত শেল্ফ টেলিফোন সরঞ্জাম বা ডিভাইসগুলি কিনতে পারেন off
  • একটি এসডিকে বাস্তবায়ন সরঞ্জামায়ন হয় । এটি এমন কিটের মতো যা ** আপনাকে টেলিফোন সিস্টেম বা বৈদ্যুতিক ওয়্যারিংয়ের জন্য কিছু কাস্টম তৈরি করতে দেয়।

* যে কোনও কিছু এপিআই ব্যবহার করতে পারে। কিছু এপিআই-তে লাইসেন্স কী, প্রমাণীকরণ ইত্যাদির জন্য সুরক্ষা বিধান থাকে যা নির্দিষ্ট পরিস্থিতিতে এপিআইয়ের সম্পূর্ণ ব্যবহার নিষিদ্ধ করতে পারে তবে এটি কেবলমাত্র নির্দিষ্ট প্রমাণীকরণ / অনুমোদনের পদক্ষেপ ব্যর্থ হওয়ার কারণে। যে কোনও সফ্টওয়্যার যা সঠিক শংসাপত্রগুলি উপস্থাপন করে (যদি প্রয়োজন হয়) এপিআই ব্যবহার করতে পারে।

** প্রযুক্তিগতভাবে, যদি কোনও এআইপিআই ভাল-ডকুমেন্টেড থাকে তবে আপনার এপিআই ব্যবহার করতে আপনার নিজের সফ্টওয়্যার তৈরি করতে এসডিকে দরকার হয় না। তবে একটি এসডিকে থাকা সাধারণত প্রক্রিয়াটি আরও সহজ করে তোলে।


2
এটি ব্যাখ্যা করার জন্য আমার কাছে থাকা আরও কিছু ধারণাগুলি হ'ল আইফোন উদাহরণ (প্রোফাইটারি কোড তবে সুস্পষ্ট সংজ্ঞায়িত এপিআই), টেলিফোন জ্যাক বা ইউএসবি পোর্ট উদাহরণস্বরূপ হার্ডওয়্যার অ্যানালগিটি ​​সহজেই বুঝতে সহজভাবে সফ্টওয়্যার ইন্টারফেস কী তা ব্যাখ্যা করার জন্য
স্লাইসফটাইম

17
এই ভাল ব্যাখ্যা অব্যাহত রাখা, অর্থাত্ একটি এপিআই উদাহরণস্বরূপ একটি HTTP / REST এপিআই হতে পারে, যখন এসডিকে এইচটিপিপ্লিনেন্টের শীর্ষে একটি লাইব্রেরি হতে পারে যাতে এটি আরআরটি ওয়েব পরিষেবাদির সাথে ইন্টারেক্ট করার জন্য আরও দ্রুত এবং সহজ হয়।
ফ্রেন্ডেভেল

4
আরও সহজভাবে, একটি এপিআই হল একটি ইন্টারফেস। যেখানে কোনও এসডিকে ইন্টারফেসের উপরে বিমূর্ত স্তর।
tvanc

1
এসডিকে অগত্যা ইন্টারফেসের উপর কোনও বিমূর্ত স্তর নয়; এসডিকে ইন্টারফেসের একটি বাস্তবায়ন। (যদি অন্য বিমূর্ত স্তর থাকে তবে প্রশ্ন হল এটি কেন ইন্টারফেসের অংশ হিসাবে নির্দিষ্ট করা হয়নি)
জেসন এস

আমি এই সংজ্ঞাটির সাথে একমত, তবে একই সাথে আশ্চর্য হয়েছি যে আইওএস এবং অ্যান্ড্রয়েড উদাহরণস্বরূপ ব্লুটুথ লাইব্রেরি (আইওএস কোর ব্লুটুথ এপিআই, অ্যান্ড্রয়েড ব্লুটুথ এপিআই) এর জন্য এপিআই শব্দটি কেন ব্যবহার করে?
ট্যামবার্গ

59

এপিআই হ'ল কিছু চমকপ্রদ গেমের বিল্ডিং ব্লকগুলির মতো যা কোনও শিশু বিভিন্ন আকারে ব্লকগুলিতে যোগ দিতে এবং তারা ভাবতে পারে এমন কিছু তৈরি করতে খেলবে।

অন্যদিকে, এসডিকে একটি যথাযথ কর্মশালা যা যেখানে প্রাক-আকারের বিল্ডিং ব্লকগুলির পরিবর্তে সমস্ত বিকাশ সরঞ্জাম উপলব্ধ। একটি কর্মশালায় আপনার কাছে আসল সরঞ্জাম রয়েছে এবং আপনি ব্লকগুলিতে সীমাবদ্ধ নন এবং তাই আপনার নিজের ব্লক তৈরি করতে পারেন, বা কোনও ব্লক ছাড়াই কিছু তৈরি করতে পারেন যার শুরু।

কোনও এসডিকে বা এপিআই ছাড়াই কোডিং হ'ল ওয়ার্কশপ ছাড়াই স্ক্র্যাচ থেকে সবকিছু তৈরি করার মতো - আপনাকে এমনকি নিজের সরঞ্জাম তৈরি করতে হবে


আপনি বলছেন যে এসডিকে কোনও প্রাক-আকারের বিল্ডিং ব্লক নেই তবে জাভা এসডিকে ডেটা স্ট্রাকচার যেমন অ্যারেলিস্ট বা হ্যাশম্যাপের সাথে আসে ...?
Koray Tugay

1
হ্যাঁ, আপনি এটিকে বিল্ডিং ব্লক হিসাবে বিবেচনা করতে পারেন তবে অন্যদিকে জাভা এটিকে একটি বিল্ডিং ব্লক হিসাবে নয় একটি সরঞ্জাম হিসাবে সরবরাহ করে।
আবদুল রেহমান

1
আমি যখন এই ফেসবুক ডকুমেন্টেশন পড়ার এবং বোঝার চেষ্টা করছিলাম তখন আমি এই প্রশ্নটি ঘটিয়েছিলাম : ডেভেলপার্স.ফেসবুক / ডকস / জাভাস্ক্রিপ্ট একটি জিনিস আমাকে বিভ্রান্ত করে যে ফেসবুক এটিকে একটি জাভাস্ক্রিপ্ট এসডিকে বলে, যা আমার মতে আরও একটি এপিআইয়ের মতো। কারণ এটি কোনও মূর্ত সরঞ্জাম সরবরাহ করে না তবে কেবলমাত্র একটি লাইব্রেরি যা বিকাশকারীরা ব্যবহার করতে পারেন, এটি কি এসডিকে পরিবর্তে এপিআই বলা উচিত নয়?
শেনকেন

এসডিকে ব্যাখ্যা ইমোতে কাজ করে না। পরিবর্তে not limited to blocks, or can create something without any blocks to begin with, এসডিকে আরও বেশি আপনাকে এপিআই এর ব্লকগুলির সাথে কাজ করার জন্য আরও ভাল রচনা দেয়। SDK একটি API এর উপরে তৈরি করে।
ডন

26

ধরুন, সি সি পণ্য সরবরাহ করে পি এবং পি কোনও উপায়ে সফ্টওয়্যার জড়িত। তারপরে সি সফ্টওয়্যার বিকাশকারীদের কাছে একটি লাইব্রেরি / সেট লাইব্রেরি সরবরাহ করতে পারে যা পি এর সফ্টওয়্যার সিস্টেমগুলিকে চালিত করে।

গ্রন্থাগার / গ্রন্থাগারগুলি একটি এসডিকে । এটি পি এর সিস্টেমগুলির অংশ, এটি সফটওয়্যার বিকাশকারীদের পি এর সফ্টওয়্যার টুকরো সংশোধন, কনফিগার, সংশোধন, উন্নতি ইত্যাদির জন্য ব্যবহার করা একটি কিট is

সি যদি অন্য সংস্থাগুলি / সিস্টেমে পি এর কার্যকারিতা সরবরাহ করতে চায় তবে এটি একটি এপিআই দিয়ে তা করে ।

এটি পি এর একটি ইন্টারফেস যা বহিরাগত সিস্টেমগুলিকে পি এর সাথে যোগাযোগ করার এক উপায়

আপনি যদি বাস্তবায়নের ক্ষেত্রে বিবেচনা করেন তবে এগুলি বেশ সাদৃশ্যপূর্ণ বলে মনে হবে। বিশেষত এখন ইন্টারনেট এক বিশাল বিতরণকারী অপারেটিং সিস্টেমের মতো হয়ে গেছে।

উদ্দেশ্য, যদিও, তারা আসলে বেশ স্বতন্ত্র।

আপনি একটি এসডিকে দিয়ে কিছু তৈরি করেন এবং আপনি কোনও এপিআই দিয়ে কিছু ব্যবহার করেন বা সেবন করেন।


22
আপনার কেবল নিজের উত্তরটি শেষ লাইনে সম্পাদনা করা উচিত এবং সমস্ত ব্লা-ডি-ব্লাহ এড়িয়ে যাওয়া উচিত।
mhenry1384

সি যদি পি এর সফ্টওয়্যারটিকে চালিত করে এমন একটি লাইব্রেরির সেট দেয়, তবে সেই লাইব্রেরিগুলি এসডিকে নয়, এপিআই (গুলি) তৈরি করে (যদি না এটি একেবারে ন্যূনতম এসডিকে হয় যা এপিআই ছাড়া কিছুই নয়)। এসডিকে এই এপিআই এর প্লাসকে এমন সমস্ত গুডির অন্তর্ভুক্ত করবে যা বিকাশকারীদের কাঁচা এপিআই ব্যতীত অন্য কিছু প্রয়োজন হয়, তাই "কিট"। সুতরাং আপনি বনাম তৈরি / গ্রাহক (+ / নিয়ন্ত্রণ / ইন্টারঅ্যাক্টিং) তৈরির বিষয়ে সঠিক, তবে পার্থক্যটি অন্যথায় মিশে গেছে।
জোশ সটারফিল্ড

12

অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস হ'ল রুটিন / ডেটা স্ট্রাকচার / ক্লাসগুলির একটি সেট যা ওএস এক্স, অ্যান্ড্রয়েড, প্রজেক্ট ম্যানেজমেন্ট অ্যাপ্লিকেশন, ভার্চুয়ালাইজেশন সফ্টওয়্যার ইত্যাদির মতো টার্গেট প্ল্যাটফর্ম / সফ্টওয়্যারের সাথে যোগাযোগের একটি উপায় নির্দিষ্ট করে which

যদিও সফটওয়্যার ডেভেলপমেন্ট কিট এপিআই কাছাকাছি একটি লেফাফা হয় / s যে ডেভেলপারদের জন্য সহজ কাজ করে তোলে।

উদাহরণস্বরূপ, অ্যান্ড্রয়েড এসডিকে বিকাশকারীদের সামগ্রিকভাবে অ্যান্ড্রয়েড প্ল্যাটফর্মের সাথে যোগাযোগ করার জন্য সহায়তা করে যখন প্ল্যাটফর্মটি নিজেই সংযুক্ত সফ্টওয়্যার উপাদানগুলি API এর মাধ্যমে যোগাযোগ করে তৈরি করা হয়।

এছাড়াও, কখনও কখনও এসডিকে একটি নির্দিষ্ট প্রোগ্রামিং ভাষায় উন্নয়নের সুবিধার্থে নির্মিত হয়। উদাহরণস্বরূপ, সেলেনিয়াম ওয়েব ড্রাইভার (জাভায় নির্মিত) কোনও ব্রাউজার স্থানীয়ভাবে চালিত করার জন্য এপিআই সরবরাহ করে, ক্যাপিবারা এমন একটি এসডিকে হিসাবে বিবেচনা করা যেতে পারে যা রুবি বিকাশকারীদের সেলেনিয়াম ওয়েব ড্রাইভার ব্যবহার করতে সহায়তা করে। তবে, বিভিন্ন নেটিভ ব্রাউজার ড্রাইভারের সাথে ইন্টারঅ্যাকশনকে এক প্যাকেজের সাথে সংযুক্ত করে সেলেনিয়াম ওয়েব ড্রাইভার নিজে থেকে একটি এসডিকেও।


শুধু ভেবেছিলেন যে কয়েকটি উদাহরণ উদ্ধৃত করে ভাল লাগবে।
ব্যবহারকারী3137634

9

আমি নিশ্চিত নই যে এই দুটি পদটির কোনও অফিসিয়াল সংজ্ঞা আছে। আমি একটি এপিআই বুঝতে পারি ডকুমেন্টেড প্রোগ্রামেবল লাইব্রেরির একটি সেট এবং সমর্থনকারী উত্স যেমন শিরোনাম বা আইডিএল ফাইল। এসডিকেগুলিতে সাধারণত এপিআই থাকে তবে প্রায়শই মিশ্রণে সংকলক, সরঞ্জাম এবং নমুনা যুক্ত হয়।


1
প্রযুক্তিগতভাবে API গুলি নির্দিষ্ট করা দরকার তবে প্রকাশ্যে নথিভুক্ত করতে হবে না, সেগুলি গোপন থাকতে পারে।
জেসন এস

8

এপিআই হ'ল কীভাবে কিছু করা যায় তার একটি স্পেসিফিকেশন, যেমন "রেলপথ ট্র্যাকগুলি চার ফুট দূরে, এবং ধাতব বারটি 1 ইঞ্চি প্রশস্ত" এখন আপনার কাছে এপিআই রয়েছে আপনি সেই ট্রেনটি তৈরি করতে পারবেন যা সেই রেলপথে উপযুক্ত হবে will আপনি কোথাও যেতে চান ট্র্যাক। আপনার কোডটি কীভাবে তৈরি করবেন এপিআই হ'ল তথ্য, এটি কিছুই করে না।

এসডিকে প্রকৃত সরঞ্জামগুলির কিছু প্যাকেজ যা স্পেসিফিকেশন সম্পর্কে ইতিমধ্যে চিন্তিত। "এখানে একটি ট্রেন, কিছু কয়লা এবং একটি রক্ষণাবেক্ষণের লোক। জায়গা থেকে অন্য জায়গায় যেতে এটি ব্যবহার করুন" এসডিকে দিয়ে আপনি নির্দিষ্টকরণের বিষয়ে চিন্তা করবেন না। একটি এসডিকে আসল কোড, এটি কিছু করার জন্য এটি নিজেই ব্যবহার করা যেতে পারে, তবে অবশ্যই ট্রেনটি স্বতঃস্ফূর্তভাবে শুরু হবে না, আপনাকে এখনও ট্রেন নিয়ন্ত্রণ করতে কন্ডাক্টর পেতে হবে।

এসডিকেগুলির নিজস্ব এপিআইও রয়েছে। "আপনি যদি ট্রেনকে বিদ্যুৎ করতে চান তবে এতে কয়লা রাখুন", "ট্রেনটি সরাতে নীল লিভারটি টানুন" "," ট্রেন যদি মজার অভিনয় শুরু করে তবে রক্ষণাবেক্ষণকারীকে কল করুন "ইত্যাদি etc.


3

এপিআই = উপলব্ধ শব্দ এবং তার অর্থগুলির অভিধান (এবং এগুলিকে সংযুক্ত করার জন্য প্রয়োজনীয় ব্যাকরণ)

এসডিকে = একটি ওয়ার্ড প্রসেসিং সিস্টেম… 2 বছরের বাচ্চাদের জন্য ... যা সঠিক ধারণা থেকে লেখেন

যদিও আপনি স্কুলে যেতে পারেন এবং কয়েক বছর পরে আপনার ভাষাতে মাস্টার হয়ে উঠতে পারেন, এসডিকে ব্যবহার করে আপনাকে কোনও সময়েই পুরো অর্থবহ বাক্যগুলি লিখতে সহায়তা করবে (এই উদাহরণটি উদাহরণস্বরূপ, একটি শিশু হিসাবে আপনি এখনও অর্জন করেন নি কমপক্ষে এসডিকে ব্যবহার করতে শেখার জন্য অন্য কোনও ভাষা শিখতে))


2

কীভাবে ... আপনি যদি নিজের বাড়িতে একটি হোম থিয়েটার সিস্টেম ইনস্টল করতে চান তা এমন। একটি API ব্যবহার করা সমস্ত তার, স্ক্রু, বিট এবং টুকরা পাওয়ার মতো like সম্ভাবনাগুলি সীমাহীন (কেবলমাত্র আপনি যে টুকরা পেয়েছেন তা দ্বারা বাঁধা) তবে কখনও কখনও অপ্রতিরোধ্য। একটি এসডিকে কিট পাওয়ার মতো। আপনাকে এখনও এটি একসাথে রাখতে হবে, তবে এটি স্ক্রুগুলির বাক্সের চেয়ে প্রাক-কাটা টুকরো এবং আইকেইএ বুকশেল্ফের জন্য নির্দেশাবলী পাওয়ার মতো more


0

আপনি একটি লাইব্রেরির কার্যকারিতা অ্যাক্সেস করতে একটি এসডিকে এবং এটি নিয়ন্ত্রণ করার জন্য একটি এপিআই ব্যবহার করেন।


0

এপিআই = অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস এসডিকে = সফটওয়্যার ডেভলপমেন্ট কিট

একটি এসডিকে এপিআই এর একটি সম্পূর্ণ সেট বলে মনে হচ্ছে যা আপনাকে অ্যাপ্লিকেশন তৈরির জন্য প্রয়োজনীয় যে কোনও ক্রিয়া সম্পাদন করতে দেয়। এছাড়াও একটি এসডিকে প্ল্যাটফর্ম / আইটেমটির জন্য বিকাশের জন্য অন্যান্য সরঞ্জাম অন্তর্ভুক্ত করতে পারে।

অন্যদিকে একটি এপিআই হ'ল সম্পর্কিত পদ্ধতির একটি সিরিজ যা নির্দিষ্ট উদ্দেশ্যে ভাল হতে পারে।

উদাহরণস্বরূপ, জেডিকে (জাভা ডেভলপমেন্ট কিট) এপিআইয়ের পাশাপাশি সংকলক, রানটাইম এবং অন্যান্য বিবিধ সরঞ্জাম রয়েছে। জাভা এপিআই হ'ল সমস্ত লাইব্রেরি যা আপনার বাক্সের বাইরে কাজ করতে পারে এমন মূল ভাষাটি তৈরি করে।

এপিআই এর উদাহরণ: জাভা এপিআই, গুগল ম্যাপস এপিআই, ফ্ল্যাশ প্লেয়ার এপিআই।

এসডিকেগুলির উদাহরণ: জেডিকে, জিডব্লিউটি, ফ্লেক্স এসডিকে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.