Risposte:
Sono in ritardo per rispondere. Ma vorrei condividere un esempio, a cui ho pensato solo oggi. Se ti dicessi di tagliare un pezzo di carta con dimensioni 5m per 5m, sicuramente lo faresti. Ma supponiamo che ti chieda di tagliare 1000 pezzi di carta delle stesse dimensioni. In questo caso, non eseguirai la misurazione 1000 volte; ovviamente, faresti una cornice di 5m per 5m, e con l'aiuto di essa potresti tagliare 1000 pezzi di carta in meno tempo. Quindi, quello che hai fatto è stato creare un framework che avrebbe svolto un tipo specifico di attività. Invece di eseguire lo stesso tipo di attività ancora e ancora per lo stesso tipo di applicazioni, si crea un framework con tutte quelle strutture insieme in un bel pacchetto, fornendo quindi l'astrazione per la propria applicazione e, soprattutto, molte applicazioni.
Tecnicamente, non è necessario un framework. Se stai creando un sito davvero molto semplice (pensa al Web nel 1992), puoi semplicemente fare tutto con HTML hardcoded e alcuni CSS.
E se vuoi creare una webapp moderna, in realtà non ti serve utilizzare come quadro di riferimento, sia.
Puoi invece scegliere di scrivere tutte le logiche di cui hai bisogno, ogni volta. Puoi scrivere il tuo livello di persistenza / archiviazione dei dati oppure, se sei troppo occupato, scrivere semplicemente un codice SQL personalizzato per ogni singolo accesso al database. Puoi scrivere i tuoi livelli di autenticazione e gestione delle sessioni. E la tua logica di rendering del modello. E la tua logica di gestione delle eccezioni. E le tue funzioni di sicurezza. E il tuo framework di test unitari per assicurarti che tutto funzioni bene. E il tuo ... [continua per molto tempo]
Poi di nuovo, se si fa uso di un quadro , sarete in grado di beneficiare del bene, di solito peer-reviewed e molto ben collaudato lavoro di decine se non centinaia di altri sviluppatori, che potrebbe essere meglio di te. Potrai costruire rapidamente ciò che desideri, senza dover perdere tempo a costruire o preoccuparti troppo degli elementi dell'infrastruttura sopra elencati.
Puoi fare di più in meno tempo e sapere che è molto probabile che il codice del framework che stai usando o estendi sia fatto meglio di te.
E il costo di questo? Investire un po 'di tempo nell'apprendimento del framework. Ma - come praticamente attesterà ogni sviluppatore web là fuori - vale sicuramente la pena dedicare del tempo a imparare a trarre enormi vantaggi (davvero, enormi) dall'uso di qualunque framework tu scelga.
Il sommario di Wikipedia (Software Framework) (primo google hit btw) lo spiega abbastanza bene:
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 frame sono un caso speciale di librerie software in quanto sono riutilizzabili astrazioni di codice racchiuse in una API (Application Programming Interface) ben definita, ma contengono alcune caratteristiche distintive che le separano dalle normali librerie.
I framework software hanno queste caratteristiche distintive che li separano dalle librerie o dalle normali applicazioni utente:
- inversione di controllo - In un framework, diversamente dalle librerie o dalle normali applicazioni dell'utente, il flusso di controllo del programma complessivo non è dettato dal chiamante, ma dal framework. [1]
- comportamento predefinito : un framework ha un comportamento predefinito. Questo comportamento predefinito deve effettivamente essere un comportamento utile e non una serie di operazioni non consentite.
- estensibilità - Un framework può essere esteso dall'utente di solito mediante override selettivo o specializzato per codice utente che fornisce funzionalità specifiche.
- codice quadro non modificabile - Il codice quadro, in generale, non può essere modificato. Gli utenti possono estendere il framework, ma non modificarne il codice.
Potresti "averne bisogno" perché potrebbe fornirti un ottimo collegamento durante lo sviluppo di applicazioni, poiché contiene molte funzionalità già scritte e testate. Il motivo è abbastanza simile al motivo per cui utilizziamo le librerie software.
Molte buone risposte già, ma fammi vedere se posso darti un altro punto di vista.
Semplificando un po 'le cose, puoi visualizzare un framework come un'applicazione completa ad eccezione della funzionalità effettiva. Colleghi la funzionalità e PRESTO! hai un'applicazione.
Considera, per esempio, un framework GUI. Il framework contiene tutto il necessario per creare un'applicazione. In effetti, spesso puoi semplicemente creare un'applicazione minimale con pochissime righe di sorgente che non fanno assolutamente nulla, ma ti danno la gestione delle finestre, la gestione delle finestre secondarie, i menu, le barre dei pulsanti, ecc. Questo è il lato quadro delle cose. Aggiungendo la funzionalità dell'applicazione e "inserendola" nei punti giusti nel framework, trasformate questa app vuota che non fa altro che la gestione delle finestre, ecc. In una vera e propria applicazione completa.
Esistono tipi simili di framework per app Web, per app lato server, ecc. In ogni caso il framework fornisce la maggior parte del noioso codice ripetitivo (si spera) mentre si fornisce l'effettiva funzionalità del dominio problematico. (Questo è l'ideale. In realtà, ovviamente, il successo del framework è molto variabile.)
Sottolineo ancora che questa è la visione semplificata di cosa sia un quadro. Non sto usando termini spaventosi come "Inversion of Control" e simili, sebbene la maggior parte dei framework abbia incorporati concetti così spaventosi. Dato che sei un principiante, ho pensato di risparmiarti il gergo e di fare una simile similitudine.
Non sono sicuro che esista una definizione netta di "framework". A volte un ampio set di librerie è chiamato framework, ma penso che l'uso tipico della parola sia più vicino alla definizione che aioobe ha portato.
Questo bellissimo articolo riassume la differenza tra un solo set di librerie e un framework:
Un framework può essere definito come un insieme di librerie che dicono "Non chiamarci, ti chiameremo".
In che modo ti aiuta un framework? Perché invece di scrivere qualcosa da zero, in pratica estendi semplicemente una data applicazione funzionante. In questo modo ottieni molta produttività - a volte l'applicazione risultante può essere molto più elaborata di quanto avresti potuto fare da sola nello stesso lasso di tempo - ma di solito commerci con molta flessibilità.
Una semplice spiegazione è: un framework è un'impalcatura su cui puoi creare applicazioni.
Un framework generalmente fornisce alcune funzionalità di base che è possibile utilizzare ed estendere per rendere più complesse le applicazioni, ci sono framework per ogni sorta di cose. Il framework MVC di Microsofts ne è un buon esempio. Fornisce tutto il necessario per scendere dal sito Web dell'edificio utilizzando il modello MVC, gestisce le richieste Web, i percorsi e simili. Tutto quello che devi fare è implementare "Controller" e fornire "Viste" che sono due costrutti definiti dal framework MVC. Il framework MVC gestisce quindi la chiamata dei controller e il rendering delle visualizzazioni.
Forse non è la migliore espressione, ma spero che sia di aiuto
al livello più basso, un framework è un ambiente in cui ti viene fornito un set di strumenti con cui lavorare
questi strumenti si presentano sotto forma di librerie, file di configurazione, ecc.
questo cosiddetto "ambiente" fornisce la configurazione di base (segnalazioni di errori, file di registro, impostazioni della lingua, ecc.) ... che può essere modificata, estesa e sviluppata.
Le persone in realtà non hanno bisogno di framework, è solo una questione di voler risparmiare tempo, e altri solo una questione di preferenze personali.
La gente giustifica che con un framework non è necessario codificare da zero. Ma quelle sono solo persone che confondono le librerie con i framework.
Non sono di parte, qui sto attualmente usando un framework.
Un framework fornisce funzionalità / soluzione alla particolare area problematica.
Definizione da wiki :
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 frame sono un caso speciale di librerie software in quanto sono riutilizzabili astrazioni di codice racchiuse in una API (Application Programming Interface) ben definita, ma contengono alcune caratteristiche distintive che le separano dalle normali librerie.
Un framework ci aiuta a utilizzare il "già creato", una metafora può essere come,
pensare che il materiale terrestre sia il linguaggio di programmazione,
e per esempio "una fotocamera" è il programma e hai deciso di creare un notebook. Non è necessario ricreare la videocamera ogni volta, basta usare la struttura terrestre (ad esempio in un negozio di tecnologia) per prendere la videocamera e integrarla nel notebook.
Un framework ha alcune funzioni di cui potresti aver bisogno. potresti aver bisogno di una sorta di array con meccanismi di ordinamento integrati. O forse hai bisogno di una finestra in cui desideri posizionare alcuni controlli, tutto ciò che puoi trovare in un framework. è una specie di LAVORO che abbraccia un TELAIO attorno al tuo lavoro.
EDIT: OK Sto per scavare quello che stavate cercando di dirmi;) forse non avete notato le informazioni tra le righe "WORK che attraversa un TELAIO in giro ..." prima che cadano sempre più in profondità. Cerco di dargli una parola sperando che tu sia gentile:
una buona spiegazione alla domanda "Differenza tra una biblioteca e un quadro" che ho trovato qui
http://ifacethoughts.net/2007/06/04/difference-b Between- a-libreria-e-un-framework /
Al di là delle definizioni, che a volte sono comprensibili solo se capisci già, un esempio mi ha aiutato.
Penso di avere avuto un barlume di comprensione cercando di ordinare un elenco in .Net; un esempio di un framework che fornisce una funzionalità personalizzata dal codice utente che fornisce funzionalità specifiche. Take List.Sort (IComparer). L'algoritmo di ordinamento, che risiede nel framework .Net nel metodo Sort, deve eseguire una serie di confronti; l'oggetto A viene prima o dopo l'oggetto B? Ma l'ordinamento stesso non ha idea di come fare il confronto; solo il tipo da ordinare lo sa. Non è stato possibile scrivere un algoritmo di ordinamento di confronto che può essere riutilizzato da molti utenti e anticipare tutti i vari tipi su cui verrebbe richiesto l'ordinamento. Devi lasciare quel po 'di lavoro all'utente stesso. Quindi qui, l'ordinamento, noto anche come framework, richiama un metodo nel codice utente, il tipo viene ordinato in modo che possa fare il confronto. (O un delegato può essere utilizzato;
Ho capito bene?