frameworks - traduzione - java ee è un framework




Qual è la differenza tra un quadro e una biblioteca? (14)

Qual è la differenza tra un quadro e una biblioteca ?

Ho sempre pensato a una libreria come un insieme di oggetti e funzioni focalizzati sulla risoluzione di un problema particolare o attorno a un'area specifica dello sviluppo di applicazioni (ad es. L'accesso al database); un quadro d'altro canto è una raccolta di biblioteche incentrate su una particolare metodologia (cioè MVC) e copre tutte le aree di sviluppo di applicazioni.


Biblioteca:

È solo una raccolta di routine (programmazione funzionale) o definizioni di classe (programmazione orientata agli oggetti). Il motivo dietro è semplicemente riutilizzo del codice , vale a dire 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 far sì che lo sviluppatore chiami semplicemente la funzione senza ripetere l'implementazione di come funziona un algoritmo.

Struttura:

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 quadro è 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 è buono o meno, ma solo per implementare funzioni specifiche del dominio.

Libreria, Framework e rappresentazione dell'immagine del codice:

KeyDifference:

La differenza chiave tra una libreria e un framework è "Inversion of Control" . Quando chiami un metodo da una libreria, hai il controllo. Ma con un framework, il controllo è invertito: il framework ti chiama . Source.

Relazione:

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


Chiami la biblioteca.

Framework ti chiama.

図 書館 助 け 足 場 が 痛 い 多 く 涙 涙


Dalla prospettiva degli sviluppatori Web:

  1. La libreria può essere facilmente sostituibile con un'altra libreria. Ma il quadro non può.

    Se non ti piace la libreria di selezione date jquery, puoi sostituirla con altri selettori di date come il selettore di date di bootstrap o il pickadate.

    Se non ti piace AngularJS su cui hai costruito 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 ai Framework. Ad esempio: underscore.js è una libreria, Ember.js è un framework.


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

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


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

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

Quindi hai tutto in un unico pacchetto che devi usare nella libreria della tua applicazione (una libreria C / C ++ / Objective-C senza file .h è piuttosto inutile, a meno che tu non le scriva tu stesso in base a qualche documentazione della libreria), invece di una un mucchio di file per spostarsi (un bundle Mac è solo una directory sul livello Unix, ma l'interfaccia utente lo tratta come un singolo file, proprio come se avessi i file JAR in Java e quando fai clic su di esso, di solito non vedi cosa c'è dentro, a meno che tu non selezioni esplicitamente di mostrare il contenuto).

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

Un framework software è un progetto riutilizzabile per un sistema software (o sottosistema). Una struttura software può includere programmi di supporto, librerie di codici, un linguaggio di scripting o altro software per aiutare a sviluppare e incollare insieme i diversi componenti di un progetto software. Varie parti del framework possono essere esposte tramite un'API.

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

Un framework può essere tutto ciò che si utilizza nello sviluppo di applicazioni. Può essere una libreria, una raccolta di molte librerie, una raccolta di script o qualsiasi software necessario per creare la tua applicazione. Quadro è 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, tuttavia, sta solo scegliendo una delle molteplici definizioni di framework e la confronta con la classica definizione di libreria. Ad esempio, dice che hai bisogno di un framework per la sottoclasse. Veramente? Posso avere un oggetto definito in una libreria, posso collegarlo e sottoclassarlo nel mio codice. Non vedo come mi serve un "quadro" per questo. In qualche modo spiega piuttosto come il termine quadro sia usato al giorno d'oggi. E 'solo una parola esagerata, come ho detto prima. Alcune aziende rilasciano solo una normale libreria (in un certo senso di una biblioteca classica) e la chiamano una "struttura" perché sembra più elegante.


Inversion of Control è una parte fondamentale di ciò che rende una struttura diversa da una libreria. Una libreria è essenzialmente un insieme di funzioni che è possibile chiamare, di solito organizzate in classi. Ogni chiamata fa un po 'di lavoro e restituisce il controllo al client.

Un framework comprende un design astratto, con più comportamenti incorporati. Per poterlo utilizzare è necessario inserire il proprio comportamento in vari punti del framework, sia attraverso la sottoclasse sia collegando le proprie classi. Il codice del framework chiama quindi il tuo codice in questi punti.


Le librerie sono facili da usare ed efficienti. Puoi dire ad esempio che la libreria Zend ci aiuta a svolgere diversi compiti con le sue classi e funzioni ben definite. Mentre un framework è qualcosa che di solito impone un certo modo di implementare una soluzione, come MVC (Model -view-controller) (reference) . Si tratta di un sistema ben definito per la distribuzione di attività come in MVC.Model contiene il lato del database, le viste sono per l'interfaccia utente ei controller sono per la logica aziendale.


Libreria - Qualsiasi insieme di classi o componenti che possono essere utilizzati come il cliente ritiene idoneo per eseguire una determinata attività.
Framework: impone alcune linee guida per "plug-in" in qualcosa di più grande di te. Fornisci semplicemente i pezzi specifici per la tua applicazione / requisiti in un modo richiesto pubblicato, in modo che "i framwework possano semplificarti la vita"


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

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

Questo problema può essere informazioni di registro o di debug in un'applicazione, disegnare grafici, creare un formato di file specifico (html, pdf, xls), connettersi a un database, 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 consacrano la loro differenza principale, non una definizione principale per entrambi.

La principale differenza 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 nel FW, ma per usare una Libreria è possibile usarne uno o poche classi, moduli o codici nella libreria della tua applicazione

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

Ma ad esempio una libreria di log, puoi semplicemente usare una classe Log nel tuo codice e aiutarti a risolvere il "problema di registrazione", che non significa che la libreria di log non abbia più classi nel suo codice, come le classi per gestire i file, gestire gli output dello schermo o persino le basi di dati, ma non si toccano / usano mai le classi nel codice, e questo è il motivo del perché è una libreria e non un framework.

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


Penso che la differenza principale sia che i framework seguono il " principio di Hollywood ", ovvero "non chiamarci, ti chiameremo".

Secondo Martin Fowler :

Una libreria è essenzialmente un insieme di funzioni che è possibile chiamare, di solito organizzate in classi. Ogni chiamata fa un po 'di lavoro e restituisce il controllo al client.

Un framework comprende un design astratto, con più comportamenti incorporati. Per poterlo utilizzare è necessario inserire il proprio comportamento in vari punti del framework o sottoclasse o inserendo le proprie classi. Il codice del framework chiama quindi il tuo codice in questi punti.


Penso che tu abbia bloccato abbastanza bene la differenza: il framework fornisce una cornice in cui facciamo il nostro lavoro ... In qualche modo, è più "vincolante" di una semplice libreria.
Si suppone inoltre che il framework aggiunga coerenza a un insieme di librerie.


Un framework può essere creato con 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, che è la base per preparare il piatto (questo è il dato della tua applicazione). tutti gli ingredienti insieme hanno chiamato un quadro . Ora li userete uno per uno o in combinazione per preparare il vostro curry di pesce, che è il vostro prodotto finale . Confrontalo con un framework web che è composto da underscore.js , bootstrap.css , bootstrap.js , fontawesome , AngularJS ecc. Per un esempio, Twitter Bootstrap v.35 .

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

Framework : una raccolta di librerie che forniscono proprietà e comportamenti esclusivi all'applicazione. (Tutti gli ingredienti)

Libreria : una serie ben definita di istruzioni che forniscono proprietà e comportamenti unici ai tuoi dati. (Olio sui pesci)

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

PS AngularJS è un framework MVC ma una libreria JavaScript. Perché credo che la libreria estende il comportamento predefinito della tecnologia nativa (JavaScript in questo caso).


Una libreria implementa funzionalità per uno scopo ristretto 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 del framework .NET complessivo.