Comment expliquer la différence entre une API et un SDK aux personnes qui ne savent rien à leur sujet?


Réponse 1:

Les deux sont destinés aux développeurs, mais à différents niveaux de finition. La différence a à voir avec l'endroit où vous vous situez en tant que développeur par rapport à l'utilisateur final, et si vous créez quelque chose à partir de zéro ou si vous consommez des fonctionnalités existantes et les conditionnez pour un utilisateur final. Il peut y avoir une zone grise entre la création et la consommation, car elles peuvent se produire si près les unes des autres - la distinction peut se transformer en coupes de cheveux dans certains cas.

Un SDK est comme une boîte de Legos - vous devez faire tout le montage, mais les pièces et la documentation ont été conçues pour vous. De cette façon, vous créez principalement parce qu'un SDK est principalement composé uniquement de matières premières et de documentation.

Une API est une «création terminée» dans un but précis mais sans interface utilisateur. Ainsi, lorsque vous travaillez avec une API, vous consommez cette API tout en créant une sorte d'interface utilisateur pour l'utilisateur final. Ainsi, il existe un mélange de création et de consommation à l'approche des API.


Réponse 2:

Je ne suis pas sûr d'appeler un SDK un mélange à gâteau, ni d'appeler une API une recette. Les deux autres réponses sont techniquement correctes, mais je pense qu'une partie du problème ici est celle du public. Ce ne sont pas des gens techniques, donc ce qui semble être une explication claire peut ne pas l'être.

Je pense qu'une analogie est bonne, mais elle doit vraiment montrer la différence entre les deux choses, et, comme vous le dites, un mélange à gâteau et une recette ne fournissent pas vraiment cela. Mon exemple utilise deux choses indépendantes, plutôt que liées, et simplifie à l'excès, mais je pense que cela pourrait aider.

Ma simplification excessive pour une API est de regarder spécifiquement une API CRUD. En tant que tel, il pourrait être considéré comme similaire à une banque. Vous pouvez ouvrir un compte pour conserver votre argent (créer), vous pouvez vérifier le solde de votre compte (lire), vous pouvez y ajouter ou en retirer de l'argent (mise à jour), et vous pouvez le fermer (supprimer). Vous pourriez être autorisé à consulter, à déposer de l'argent et à prendre de l'argent sur des comptes appartenant à des tiers (authentification et autorisation).

Un SDK, d'autre part, est comme un ensemble d'outils. Il fournit des choses que vous pouvez utiliser pour construire ou maintenir quelque chose. Vous pourriez y trouver un marteau, des tournevis, des pinces, etc.


Réponse 3:

Cela me rappelle une discussion avec mon ami chimiste qui était ennuyé par la discussion en cours avec un autre ami ingénieur logiciel.

Nous avons dû lui expliquer les choses, alors nous avons choisi quelque chose dans lequel il est déjà un maître.

La discussion s'est donc déroulée comme suit:

CF (Chemist Friend): Les gars, vous m'énervez avec quelque chose sur l'API et certains SDK, quels sont-ils?

US (moi et SF (ami logiciel)): haha, ok ..

États-Unis: prenons l'API comme quelque chose comme les articles que vous détenez dans votre magasin, comme les comprimés, les injections, le sirop, les boissons et d'autres choses.

Et le SDK peut être une collection de tous ces éléments ci-dessus, qui est votre magasin.

Si quelqu'un a besoin d'une injection, cela signifie qu'il doit utiliser une API.

Si quelqu'un a besoin de beaucoup de médicaments, il peut choisir de se rendre dans une pharmacie.

CF: Ohh, c'est ça? Quoi qu'il en soit, je n'ai pas obtenu grand-chose, mais cela a aidé.