Domanda

Qual è la differenza tra un framework e un libreria ?

Ho sempre pensato a una libreria come a un insieme di oggetti e funzioni che si concentra sulla risoluzione di un problema specifico o di un'area specifica di sviluppo dell'applicazione (ovvero l'accesso al database); e un framework d'altra parte come una raccolta di librerie incentrate su una particolare metodologia (vale a dire MVC) e che copre tutte le aree di sviluppo delle applicazioni.

È stato utile?

Soluzione

In realtà questi termini possono significare molte cose diverse a seconda del contesto in cui vengono utilizzate.

Ad esempio, su Mac OS X i framework sono solo librerie, raggruppate in un bundle. All'interno del bundle troverai una vera libreria dinamica (libWhatever.dylib). La differenza tra una libreria vuota e il framework su Mac è che un framework può contenere più versioni diverse della libreria. Può contenere risorse extra (immagini, stringhe localizzate, file di dati XML, oggetti UI, ecc.) E, a meno che il framework non sia reso pubblico, di solito contiene i file .h necessari per utilizzare la libreria.

Quindi hai tutto in un unico pacchetto di cui hai bisogno per usare la libreria nella tua applicazione (una libreria C / C ++ / Objective-C senza file .h è piuttosto inutile, a meno che tu non li scriva da te stesso secondo la documentazione della libreria), invece di un mucchio di file da spostare (un bundle Mac è solo una directory a livello Unix, ma l'interfaccia utente lo tratta come un singolo file, praticamente come se avessi file JAR in Java e quando fai clic su di esso, di solito non don vedi cosa c'è dentro, a meno che tu non scelga esplicitamente di mostrare il contenuto).

Wikipedia chiama framework una "parola d'ordine". Definisce un framework software come

  

Un framework software è riutilizzabile   progettazione per un sistema software (o   sottosistema). Un framework software può   include programmi di supporto, codice   librerie, un linguaggio di scripting o   altri software per aiutare a sviluppare e   incollare insieme i diversi componenti   di un progetto software. Varie parti   del quadro può essere esposto   attraverso un'API ..

Quindi direi che una libreria è proprio questo, "una libreria". È una raccolta di oggetti / funzioni / metodi (a seconda della lingua) e della tua applicazione "link" contro di essa e quindi può usare gli oggetti / funzioni / metodi. È fondamentalmente un file contenente codice riutilizzabile che di solito può essere condiviso tra più applicazioni (non è necessario scrivere più volte lo stesso codice).

Un framework può essere tutto ciò che usi nello sviluppo di applicazioni. Può essere una libreria, una raccolta di molte librerie, una raccolta di script o qualsiasi componente software necessario per creare l'applicazione. Framework è solo un termine molto vago.

Ecco un articolo su un ragazzo riguardante l'argomento " Libreria vs. Framework " ;. Personalmente penso che questo articolo sia altamente discutibile. Non è sbagliato quello che sta dicendo lì, tuttavia, sta solo scegliendo una delle molteplici definizioni di framework e la confronta con la classica definizione di libreria. Per esempio. dice che hai bisogno di un framework per la sottoclasse. Veramente? Posso avere un oggetto definito in una libreria, posso collegarmi contro di esso e sottoclassarlo nel mio codice. Non vedo come ho bisogno di un "framework" per quello. In qualche modo spiega piuttosto come viene usato il termine framework al giorno d'oggi. È solo una parola in voga, come ho detto prima. Alcune aziende rilasciano solo una normale libreria (in qualsiasi senso di una libreria classica) e la chiamano "framework" perché sembra più elegante.

Altri suggerimenti

Una biblioteca esegue operazioni specifiche e ben definite.

Un framework è uno scheletro in cui l'applicazione definisce la "carne" dell'operazione compilando lo scheletro. Lo scheletro ha ancora il codice per collegare le parti, ma il lavoro più importante è svolto dall'applicazione.

Esempi di librerie: protocolli di rete, compressione, manipolazione delle immagini, utilità delle stringhe, valutazione delle espressioni regolari, matematica. Le operazioni sono autonome.

Esempi di framework: sistema di applicazioni Web, gestore plug-in, sistema di interfaccia grafica. Il framework definisce il concetto ma l'applicazione definisce le funzionalità fondamentali di cui gli utenti finali si preoccupano.

Penso che la differenza principale sia che i framework seguono il " Principio di Hollywood " ;, cioè " non chiamarci, ti chiameremo. "

Secondo Martin Fowler :

  

Una biblioteca è essenzialmente un insieme di   funzioni che puoi chiamare, queste   giorni di solito organizzati in classi.   Ogni chiamata fa un po 'di lavoro e ritorna   controllo al client.

     

Un framework incarna alcuni abstract   design, con più comportamenti integrati.   Per usarlo devi inserire   il tuo comportamento in vari luoghi in   il framework tramite sottoclasse o   collegando le tue classi. Il   il codice di framework quindi chiama il tuo codice   in questi punti.

Libreria:

È solo una raccolta di routine (programmazione funzionale) o definizioni di classe (programmazione orientata agli oggetti). Il motivo dietro è semplicemente riutilizzo del codice , ovvero ottenere il codice che è già stato scritto da altri sviluppatori. Le classi o le routine normalmente definiscono operazioni specifiche in un'area specifica del dominio . Ad esempio, ci sono alcune librerie di matematica che possono consentire allo sviluppatore di chiamare semplicemente la funzione senza ripetere l'implementazione di come funziona un algoritmo.

quadro:

Nel framework, tutto il flusso di controllo è già lì, e ci sono un sacco di punti bianchi predefiniti che dovremmo compilare con il nostro codice . Un framework è normalmente più complesso. definisce uno scheletro in cui l'applicazione definisce le proprie caratteristiche per riempire lo scheletro. In questo modo, il tuo codice verrà chiamato dal framework quando appropriato. Il vantaggio è che gli sviluppatori non devono preoccuparsi se un progetto è valido o meno, ma solo sull'implementazione di funzioni specifiche del dominio.

Libreria, Framework e rappresentazione dell'immagine del codice:

Relazione immagine libreria, framework e codice

KeyDifference:

La differenza chiave tra una libreria e un framework è & # 8220; Inversion of Control & # 8221; . Quando chiami un metodo da una libreria, hai il controllo. Ma con un framework, il controllo è invertito: il framework ti chiama . Fonte.

Relazione:

Entrambi hanno definito l'API, che viene utilizzata dai programmatori. Per metterli insieme, possiamo pensare a una libreria come una certa funzione di un'applicazione, un framework come lo scheletro dell'applicazione e un'API è un connettore per metterli insieme. Un tipico processo di sviluppo inizia normalmente con un framework e compila le funzioni definite nelle librerie tramite API.

Chiama Library.

Il framework ti chiama.


  

Guida della libreria
  L'impalcatura fa male
  Molte lacrime

Come l'ho sempre descritto:

Una libreria è uno strumento.

Un Framework è un modo di vivere.

Una libreria che puoi usare qualunque piccola parte ti aiuti. Un framework a cui devi impegnare l'intero progetto.

Mi piace la risposta di Cohens, ma una definizione più tecnica è: il tuo codice chiama una libreria. Un framework chiama il tuo codice . Ad esempio un framework GUI chiama il tuo codice tramite i gestori di eventi. Un framework web chiama il tuo codice attraverso un modello di richiesta-risposta.

Questo è anche chiamato inversione di controllo - improvvisamente il framework decide quando e come eseguire il tuo codice piuttosto che il contrario come con le librerie. Ciò significa che un framework ha anche un impatto molto maggiore su come strutturare il codice.

Dal punto di vista dello sviluppatore Web:

  1. La libreria può essere facilmente sostituibile da un'altra libreria. Ma il framework non può.

    Se non ti piace la libreria di selezione della data jquery, puoi sostituirla con un'altra selezione della data come la selezione della data di bootstrap o il pickadate.

    Se non ti piace AngularJS su cui hai creato il tuo prodotto, non puoi semplicemente sostituirlo con altri framework. Devi riscrivere l'intera base di codice.

  2. Per lo più la libreria richiede una curva di apprendimento molto inferiore rispetto a Frameworks. Ad esempio: underscore.js è una libreria, Ember.js è un framework.

Ho dimenticato dove ho visto questa definizione, ma penso che sia piuttosto carino.

Una libreria è un modulo che chiami dal tuo codice e un framework è un modulo che chiama il tuo codice.

Un framework può essere creato da diverse librerie. Facciamo un esempio.

Diciamo che vuoi cucinare un curry di pesce. Quindi hai bisogno di ingredienti come olio , spezie e altre utilità . Hai anche bisogno di pesce su quale base preparare il tuo piatto (Questi sono i dati della tua applicazione). tutti gli ingredienti insieme hanno chiamato framework . Ora li userai uno per uno o in combinazione per rendere il tuo pesce al curry che è il tuo prodotto finale . Confrontalo con un framework web composto da underscore.js , bootstrap.css , bootstrap.js , fantastico , AngularJS ecc. Ad esempio, Twitter Bootstrap v.35 .

Ora, se consideri solo un ingrediente, come ad esempio olio . Non puoi usare l'olio che vuoi perché rovinerebbe i tuoi pesci (dati). Puoi utilizzare solo Olio d'oliva . Confrontalo con underscore.js . Ora quale marca di olio vuoi usare dipende da te. Alcuni piatti sono stati realizzati con Olio d'oliva americano (underscore.js) o Olio d'oliva indiano (lodash.js). Questo cambierà solo il gusto della tua applicazione. Poiché hanno quasi lo stesso scopo, il loro utilizzo dipende dalle preferenze dello sviluppatore e sono facilmente sostituibili.

 inserisci qui la descrizione dell'immagine


  

Framework : una raccolta di librerie che forniscono proprietà e comportamenti unici alla tua applicazione. (Tutti gli ingredienti)

     

Biblioteca : una serie ben definita di istruzioni che forniscono proprietà e comportamenti unici ai tuoi dati. (Olio su pesce)

     

Plugin : una build di utilità per una libreria (ui-router - > AngularJS) o molte librerie in combinazione (data-selettore - > bootstrap.css + jQuery) senza le quali il tuo plug-in potrebbe ora funziona come previsto.


P.S. AngularJS è un framework MVC ma una libreria JavaScript. Perché credo che Library estenda il comportamento predefinito della tecnologia nativa (JavaScript in questo caso).

Ecco come ci penso (e l'ho visto razionalizzato da altri):

Una libreria è qualcosa contenuta nel tuo codice. E un framework è un contenitore per la tua applicazione.

qui è collegato un articolo amaro di Joel Spolsky , ma contiene una buona distinzione tra toolbox, librerie, framework e simili

Una libreria implementa funzionalità per uno scopo limitato, mentre un framework tende ad essere una raccolta di librerie che fornisce supporto per una gamma più ampia di funzionalità. Ad esempio, la libreria System.Drawing.dll gestisce la funzionalità di disegno, ma è solo una parte dell'intero framework .NET.

Libreria: qualsiasi set di classi o componenti che possono essere utilizzati come il client ritiene idonei a svolgere una determinata attività.
Framework: richiede alcune linee guida per il "plug-in" in qualcosa di più grande di te. Fornisci semplicemente i pezzi specifici per la tua applicazione / i requisiti in un modo pubblicato pubblicato, in modo che "il framwework può semplificarti la vita"

Le librerie sono per facilità d'uso ed efficienza. Ad esempio, puoi dire che la libreria Zend ci aiuta a svolgere diverse attività con le sue classi e funzioni ben definite. Mentre un framework è qualcosa che di solito forza un certo modo di implementare una soluzione, come MVC (Model-view-controller) (riferimento) . Si tratta di un sistema ben definito per la distribuzione di attività come in MVC. Il modello contiene il lato database, le viste sono per l'interfaccia utente e i controller sono per la logica aziendale.

Penso che tu abbia individuato abbastanza bene la differenza: il framework fornisce un frame in cui facciamo il nostro lavoro ... In qualche modo, è più "vincolante". di una semplice libreria.
Il framework dovrebbe anche aggiungere coerenza a una serie di librerie.

Penso che la libreria sia un insieme di utility per raggiungere un obiettivo (ad esempio socket, crittografia, ecc.). Framework è libreria + RUNTIME EINVIRONNEMENT. Ad esempio, ASP.NET è un framework: accetta richieste HTTP, crea oggetto pagina, richiama eventi cicliche lyfe, ecc. Framework fa tutto questo, scrivi un po 'di codice che verrà eseguito in un momento specifico del ciclo di vita di richiesta corrente!

Comunque, domanda molto interessante!

Non ricordo la fonte di questa risposta (suppongo di averla trovata in un .ppt in Internet), ma la risposta è abbastanza semplice.

Una libreria e un framework sono un insieme di classi, moduli e / o codice (a seconda del linguaggio di programmazione) che possono essere utilizzati nelle applicazioni e consentono di risolvere un "problema" specifico.

Questo problema può essere il log o il debug delle informazioni in un'applicazione, disegnare grafici, creare un formato file specifico (html, pdf, xls), connettersi a una base di dati, creare una parte di un'applicazione o un'applicazione completa o un codice applicato a un Design Pattern .

Puoi avere un Framework o una Libreria per risolvere tutti questi problemi e molti altri, normalmente i framework ti aiutano a risolvere problemi più complessi o più grandi, ma che una consistenza della loro differenza principale, non una definizione principale per entrambe le cose.

  

La differenza principale tra una libreria e un framework è la dipendenza tra il proprio codice, in altre parole per usare un framework   è necessario utilizzare quasi tutte le classi, i moduli o il codice nell'FW, ma per   utilizzare una libreria in cui è possibile utilizzare una o poche classi, moduli o codice in   lib nella propria applicazione

Ciò significa che se un Framework ha, ad esempio, 50 classi per utilizzare il framework in un'app che devi usare, diciamo, 10-15 o più classi nel tuo codice, perché è così che è progettato un Framework, alcune classi (oggetti di quelle classi) sono input / parametri per metodi in altre classi nel framework. Vedi .NET framework, Spring o qualsiasi framework MVC.

Ma per esempio una libreria di log, puoi semplicemente usare una classe Log nel tuo codice e ti aiuta a risolvere il problema di registrazione che non significa che la libreria di log non ha più classi nel suo codice, come le classi per gestire file, gestire output di schermate o persino basi di dati, ma non tocchi mai / usi quelle classi nel tuo codice, e questo è il motivo per cui è una libreria e non un framework.

E ci sono anche più categorie di Frameworks e Librerie, ma questo è fuori tema.

La tua interpretazione mi sembra abbastanza buona ... Una libreria potrebbe essere qualsiasi cosa compilata e autonoma per il riutilizzo in altri codici, non c'è letteralmente alcuna restrizione sul suo contenuto.

Un framework dovrebbe invece avere una gamma di servizi da utilizzare in una specifica arena di sviluppo di applicazioni, proprio come il tuo esempio, MVC.

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