¿Cómo explico la diferencia entre una API y un SDK a personas que no saben nada de ellas?


Respuesta 1:

Ambos están dirigidos a desarrolladores, pero a diferentes niveles de acabado. La diferencia tiene que ver con dónde se sienta como desarrollador en relación con el usuario final, y si está creando algo desde cero o está consumiendo la funcionalidad existente y empaquetando para un usuario final. Puede haber un área gris entre crear y consumir, ya que pueden suceder muy juntas; la distinción puede convertirse en un corte de cabello en algunos casos.

Un SDK es como una caja de Legos: debe hacer todo el montaje, pero las piezas y la documentación se han presentado para usted. De esta manera, está creando principalmente porque un SDK es principalmente solo materias primas y documentación.

Una API es una "creación finalizada" para un propósito específico pero sin interfaz de usuario. Entonces, cuando trabajas con una API, estás consumiendo esa API mientras creas algún tipo de interfaz de usuario para el usuario final. Por lo tanto, hay una mezcla de creación y consumo al acercarse a las API.


Respuesta 2:

No estoy seguro de que llamaría a un SDK una mezcla de pastel, ni llamaría a un API una receta. Las otras dos respuestas son técnicamente correctas, pero creo que parte del problema aquí es de audiencia. Estas no son personas técnicas, por lo que lo que parece una explicación clara puede no serlo.

Creo que una analogía está bien, pero debe mostrar realmente la diferencia entre las dos cosas y, como usted dice, una mezcla de pastel y una receta realmente no proporcionan eso. Mi ejemplo usa dos cosas no relacionadas, en lugar de otras relacionadas, y simplifica demasiado las cosas, pero creo que podría ayudar.

Mi simplificación excesiva para una API es mirar específicamente una API CRUD. Como tal, podría considerarse similar a un banco. Puede abrir una cuenta para retener su dinero (crear), puede verificar el saldo de su cuenta (leer), puede agregar o quitar dinero de ella (actualizar) y puede cerrarla (eliminar). Es posible que se le permita mirar, depositar dinero y tomar dinero de cuentas que pertenecen a otros (autenticación y autorización).

Un SDK, por otro lado, es como un conjunto de herramientas. Proporciona cosas que puede usar para construir o mantener algo. Puede encontrar un martillo, algunos destornilladores, alicates, etc.


Respuesta 3:

Esto me recuerda una discusión con mi amigo químico que estaba molesto por la discusión que estaba teniendo lugar con otro amigo ingeniero de software.

Teníamos que explicarle las cosas, así que elegimos algo en lo que ya es un maestro.

Entonces la discusión fue así:

CF (Amigo químico): Chicos, me están irritando con algo sobre API y algunos SDK, ¿qué son esos?

EE. UU. (SF y yo (amigo del software)): jaja, está bien ...

EE. UU .: deje de tomar API como algo parecido a los artículos que tiene en su tienda, como tabletas, inyección, jarabe, bebidas y otras cosas.

Y SDK puede ser una colección de todos estos artículos anteriores, que es su tienda.

Si alguien necesita una inyección, eso significa que necesita usar una API.

Si alguien necesita muchos medicamentos, puede optar por visitar una farmacia.

CF: Ohh, ¿no es así? De todos modos no obtuve mucho, pero esto ayudó.