Domanda

Qual è la differenza tra un framework e un SDK? Prendiamo, ad esempio, l'SDK della piattaforma MS e il framework .NET. Entrambi hanno API, entrambi nascondono il loro funzionamento interno ed entrambi forniscono funzionalità che potrebbero non essere rapidamente / facilmente accessibili altrimenti (in altre parole, servono a uno scopo del mondo reale).

Quindi qual è la differenza? È principalmente un gioco di marketing di semantica o ci sono differenze effettive nel modo in cui gli sviluppatori dovrebbero interagire con il software (e viceversa, come gli sviluppatori possono aspettarsi che il software si comporti)? Si prevede che uno sarà di livello superiore o inferiore rispetto all'altro, ecc.?

Grazie!

EDIT: questa domanda si applica agli SDK e ai framework in generale, non solo ai due sopra menzionati.

È stato utile?

Soluzione

Un SDK dovrebbe offrire strumenti per programmare contro una determinata risorsa o funzione di sistema. Un framework non necessariamente (sebbene .NET offra un intero set di strumenti come i compilatori, ecc., Ma questi sono obbligatori perché funzioni comunque).

Quindi, potresti sviluppare un Framework costituito esclusivamente da librerie, ma se lo chiami SDK ti dovresti offrire qualcosa per supportare lo sviluppo.

Altri suggerimenti

Copierò da Wikipedia:

Libreria:

  

Una libreria è una raccolta di subroutine o classi utilizzate per sviluppare software. Le librerie contengono codice e dati che forniscono servizi a programmi indipendenti. Ciò consente di condividere e modificare codice e dati in modo modulare.

quadro:

  

Un framework software, nella programmazione per computer, è un'astrazione in cui il codice comune che fornisce funzionalità generiche può essere selettivamente ignorato o specializzato dal codice utente che fornisce funzionalità specifiche. I framework sono simili alle librerie software in quanto astrazioni riutilizzabili di codice racchiuse in un'API ben definita. A differenza delle librerie, tuttavia, il flusso di controllo del programma complessivo non è dettato dal chiamante, ma dal framework. Questa inversione di controllo è la caratteristica distintiva dei framework software.

SDK:

  

Un kit di sviluppo software (SDK o "devkit") è in genere un insieme di strumenti di sviluppo che consente a un ingegnere del software di creare applicazioni per un determinato pacchetto software, framework software, piattaforma hardware, sistema informatico, console per videogiochi, operativo sistema o piattaforma simile. Potrebbe essere qualcosa di semplice come un'interfaccia di programmazione dell'applicazione sotto forma di alcuni file per interfacciarsi con un particolare linguaggio di programmazione o includere hardware sofisticato per comunicare con un determinato sistema incorporato. Gli strumenti comuni includono ausili per il debug e altre utilità spesso presentate in un IDE. Gli SDK includono spesso anche un codice di esempio e note tecniche di supporto o altra documentazione di supporto per chiarire i punti del materiale di riferimento principale.

  • La libreria è il codice chiamato dall'applicazione.
  • Framework è un'applicazione o una libreria quasi pronta. Devi solo riempire alcuni spazi vuoti con il tuo codice che il framework chiama.
  • SDK è un concetto più ampio in quanto può includere librerie, framework, documentazione, strumenti, ecc.
  • .NET è molto più simile a una piattaforma, non a un framework software.

In poche parole la differenza è:

  • Chiamate le funzioni dell'SDK.
  • Il framework chiama le tue funzioni.

Un SDK è come una cassetta degli attrezzi con molti strumenti e scegli quali utilizzare e come. Hai il controllo ma anche molte decisioni da prendere. È un livello piuttosto basso.

Un framework prende molte decisioni per te, quindi non devi reinventare la ruota; È più un "riempi gli spazi" " approccio. Meno libertà ma risparmi molto tempo e probabilmente eviti alcuni errori.

Nel caso particolare di .NET framework si riferisce anche ai file di runtime necessari per eseguire le applicazioni che lo utilizzano, ma non è il modo in cui la parola viene utilizzata in un contesto di programmazione ...

È un'area grigia ma i Frameworks tendono ad essere le librerie su cui codifichi, spesso gli SDK hanno strumenti extra per aiutarti a ottenere di più dal Framework. Un buon esempio è l'SDK di .NET Framework che si installa separatamente, l'SDK ha strumenti extra come ildasm, cordb che in realtà non fanno parte del framework.

Sono stato il protagonista di Zend Framework attraverso la sua versione 1.0. Spesso abbiamo ricevuto commenti secondo cui non era un "framework" nel senso che gli sviluppatori si aspettavano - dissero che era più una biblioteca di classe.

Si aspettavano che un framework fosse più simile a un insieme di classi che devono essere usate insieme per farle funzionare. Un framework può anche includere una serie di convenzioni di codifica, guidandoti a organizzare il tuo codice in un certo modo. Inoltre, un framework può imporre convenzioni di denominazione per le classi e le entità del database. E infine, strumenti per la generazione di codice.

Zend Framework è stato progettato per essere accoppiato liberamente, quindi se lo desideri puoi utilizzare qualsiasi classe autonoma. Ha imposto alcune convenzioni sul tuo codice o sul tuo database. E avevamo intenzione di sviluppare generatori di codice ma non li avevamo ancora implementati.

Ma sentivo ancora che Zend Framework si qualificava come framework, anziché come SDK, in un altro modo: un framework è estensibile . È progettato come un insieme di classi base orientate agli oggetti e l'uso previsto è che gli sviluppatori estendono queste classi o scrivano semplici classi plug-in per aggiungere funzionalità.

Un SDK tradizionale non è non estensibile . Chiami semplicemente i metodi API nelle classi fornite, fanno quello che fanno e ti occupi del risultato. Qualsiasi personalizzazione dipende dall'utilizzo dell'API e dal modo in cui si utilizzano i risultati.

Microsoft SDK potrebbe essere utilizzato da uno sviluppatore per creare i propri programmi. Gli utenti finali normalmente non ne hanno bisogno.

Microsoft Framework invece è obbligatorio se si desidera eseguire applicazioni .NET su una macchina.

Una libreria di classi fornisce classi che di solito condividono la stessa area di applicazione approssimativa (matematica, rendering) ma sono destinate ad essere utilizzate per lo più indipendenti l'una dall'altra.

Un framework fornisce classi che insieme formano una base per un'applicazione che estendi e raffini solo.

Un SDK contiene tutto il necessario per utilizzare la tecnologia fornita dall'SDK. Spesso contiene documentazione, esempi e strumenti a fianco del vero contenuto principale che potrebbe essere un framework o una libreria di classi o anche qualcosa di completamente diverso.

In un confronto, potresti dire:
Libreria - > Framework - > SDK
Il framework è composto da diverse librerie, oltre ad alcuni strumenti (compilatori, ecc.) E non ha come target una piattaforma specifica. Per una piattaforma, potrebbero essere sviluppati diversi framework ciascuno con uno scopo diverso. SDK offre framework e tutto il necessario per lo sviluppo di software per una piattaforma specifica.

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