Domanda

Sto cercando di spiegare a un non sviluppatore la differenza tra un'API e un SDK. Devo spiegare perché un fornitore commerciale di software per impronte digitali non fornirà probabilmente un SDK, anche se potrebbe averne sicuramente utilizzato uno.

Sia i venditori di dispositivi che quelli di software possono e devono esporre un'API ben definita. Questa API consente ad altri programmi software di (essere scritti) interagire con i componenti software o i dispositivi hardware del fornitore.

Se qualcuno ha più idee per spiegarlo chiaramente, apprezzerei molto i suggerimenti. Voglio sottolineare che l'obiettivo è quello di spiegare i concetti a un non programmatore che non conosce il linguaggio degli sviluppatori .

In particolare, nel contesto di un sensore di impronte digitali rispetto a un software per effettuare la registrazione / verifica, ecco come ho tentato di spiegarlo:

  

Se sono un produttore di dispositivi / sensori di impronte digitali e non nel   attività di scrittura di software, i modi in cui potrei meglio commercializzare il mio   i prodotti sono:

     
      
  1. Assicurati che i driver del mio dispositivo siano installabili su un'ampia varietà di sistemi operativi
  2.   
  3. Definire e fornire un'API per gli sviluppatori di software per scrivere programmi (ad es. per iscrizione, verifica) per "parlare" o usare il mio   dispositivo
  4.   
  5. Sviluppa e fornisci un SDK (un passo oltre un'API) per rendere più semplice e veloce per gli sviluppatori di software scrivere programmi che funzionano   con il mio dispositivo. Gli SDK possono fornire librerie di codici di supporto, riferimento   applicazioni, documentazione ecc.
  6.   
È stato utile?

Soluzione

Pezzo di torta:

  • un'API è una interfaccia . È come le specifiche del sistema telefonico o del cablaggio elettrico di casa tua. Qualsiasi cosa * può usarlo fintanto che sa come interfacciarsi. Puoi persino acquistare software standardizzati per utilizzare una particolare API, così come puoi acquistare apparecchiature telefoniche o dispositivi standard collegati al cablaggio CA di casa tua.
  • un SDK è strumenti di implementazione . È come un kit che ti consente di ** creare qualcosa di personalizzato da collegare al sistema telefonico o al cablaggio elettrico.

* Tutto può usare un'API. Alcune API hanno disposizioni di sicurezza che richiedono chiavi di licenza, autenticazione, ecc. Che potrebbero vietare il completo utilizzo dell'API in casi particolari, ma ciò è dovuto solo al fallimento di particolari passaggi di autenticazione / autorizzazione. Qualsiasi software che presenti le giuste credenziali (se richiesto) può utilizzare l'API.

** Tecnicamente, se un'API è ben documentata, non è necessario un SDK per creare il proprio software per utilizzare l'API. Ma avere un SDK generalmente rende il processo molto più semplice.

Altri suggerimenti

API è come i mattoni di un gioco enigmatico con cui un bambino gioca per unire blocchi in forme diverse e costruire qualcosa a cui possono pensare.

SDK , d'altra parte, è un'officina adeguata in cui sono disponibili tutti gli strumenti di sviluppo, anziché blocchi predefiniti. In un'officina hai gli strumenti reali e non sei limitato ai blocchi, e quindi puoi creare i tuoi blocchi o creare qualcosa senza blocchi per cominciare.

codifica senza SDK o API è come fare tutto da zero senza un seminario - devi persino creare i tuoi strumenti

Supponiamo che la società C offra il prodotto P e P che coinvolge il software in qualche modo. Quindi C può offrire una libreria / serie di librerie agli sviluppatori software che guidano i sistemi software di P.

Quella libreria / librerie sono un SDK . Fa parte dei sistemi di P. È un kit che gli sviluppatori di software possono utilizzare per modificare, configurare, riparare, migliorare, ecc. Il software di P.

Se C vuole offrire la funzionalità di P ad altre società / sistemi, lo fa con una API .

Questa è un'interfaccia per P. Un modo per i sistemi esterni di interagire con P.

Se pensi in termini di implementazione, sembreranno abbastanza simili. Soprattutto ora che Internet è diventato come un grande sistema operativo distribuito.

Allo scopo, tuttavia, sono in realtà abbastanza distinti.

Costruisci qualcosa con un SDK e usi o consumi qualcosa con un'API.

Interfaccia di programmazione dell'applicazione è un insieme di routine / strutture di dati / classi che specifica un modo per interagire con la piattaforma / software di destinazione come OS X, Android, l'applicazione di gestione del progetto, software di virtualizzazione ecc.

Mentre Kit di sviluppo software è un wrapper per API / e che semplifica il lavoro per gli sviluppatori.

Ad esempio, Android SDK facilita gli sviluppatori a interagire con la piattaforma Android nel suo insieme mentre la piattaforma stessa è costruita da componenti software compositi che comunicano tramite API.

Inoltre, a volte vengono creati SDK per facilitare lo sviluppo in un linguaggio di programmazione specifico. Ad esempio, driver web Selenium (costruito in Java) fornisce API per guidare nativamente qualsiasi browser, mentre capybara può essere considerato un SDK che consente agli sviluppatori di Ruby di utilizzare il driver web Selenium. Tuttavia, il driver Web Selenium è anche un SDK da solo in quanto combina l'interazione con vari driver browser nativi in ??un unico pacchetto.

Non sono sicuro che ci sia una definizione ufficiale di questi due termini. Comprendo che un'API è un insieme di librerie programmabili documentate e fonti di supporto come intestazioni o file IDL. Gli SDK di solito contengono API ma spesso aggiungono compilatori, strumenti ed esempi al mix.

L'API è una specifica su come fare qualcosa, un'interfaccia, come "I binari della ferrovia sono a quattro piedi di distanza e la barra di metallo è larga 1 pollice" Ora che hai l'API puoi ora costruire un treno che si adatterà a quei binari della ferrovia se vuoi andare ovunque. L'API è solo informazioni su come costruire il tuo codice, non fa nulla.

L'SDK è un pacchetto di strumenti reali già preoccupati per le specifiche. " Ecco un treno, del carbone e un addetto alla manutenzione. Usalo per andare da un posto all'altro " Con l'SDK non ti preoccupare dei dettagli. Un SDK è un vero codice, può essere usato da solo per fare qualcosa, ma ovviamente il treno non si avvia spontaneamente, devi comunque trovare un conduttore per controllare il treno.

Gli SDK hanno anche le proprie API. "Se si desidera alimentare il treno, inserire il carbone", "Tirare la leva blu per spostare il treno." Se il treno inizia a comportarsi in modo divertente, chiamare il manutentore " ecc.

API = Dizionario delle parole disponibili e dei loro significati (e della grammatica richiesta per combinarle)

SDK = Un sistema di elaborazione testi ... per bambini di 2 anni ... che scrive proprio dalle idee

Sebbene POTREBBE andare a scuola e diventare un maestro nella tua lingua dopo pochi anni, l'uso dell'SDK ti aiuterà a scrivere intere frasi significative in pochissimo tempo (Perdona il fatto che, in questo esempio, come un bambino che non hai ' ho persino imparato qualsiasi altra lingua almeno per imparare a usare l'SDK.)

Che ne dici di ... È come se volessi installare un sistema home theater a casa tua. Utilizzare un'API è come ottenere tutti i cavi, le viti, i bit e i pezzi. Le possibilità sono infinite (vincolate solo dai pezzi che ricevi), ma a volte travolgenti. Un SDK è come ottenere un kit. Devi ancora metterlo insieme, ma è più come ottenere pezzi pretagliati e istruzioni per una libreria IKEA che una scatola di viti.

Si utilizza un SDK per accedere alla funzionalità di una libreria e un'API per controllarlo.

API = Application Programming Interface SDK = Kit di sviluppo software

Un SDK sembra essere un set completo di API che ti consentono di eseguire la maggior parte delle azioni necessarie per creare applicazioni. Inoltre, un SDK può includere altri strumenti per lo sviluppo per la piattaforma / elemento a cui è destinato.

Un API d'altra parte è solo una serie di metodi correlati che potrebbero essere buoni per uno scopo specifico.

Ad esempio, il JDK (Java Development Kit) contiene l'API, nonché i compilatori, i runtime e altri strumenti vari. L'API Java è semplicemente tutte le librerie che compongono il linguaggio principale con cui puoi lavorare immediatamente.

Esempi di API: API Java, API di Google Maps, API di Flash Player.

Esempi di SDK: JDK, GWT, Flex SDK.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top