Wat is het verschil tussen een framework en een bibliotheek?

Wat is het verschil tussen een framework en een bibliotheek?

Ik dacht altijd aan een bibliotheek als een verzameling objecten en functies die zich richten op het oplossen van een bepaald probleem of een specifiek gebied van applicatie-ontwikkeling (d.w.z. databasetoegang); en anderzijds een raamwerk als een verzameling bibliotheken die is gecentreerd rond een bepaalde methodologie (d.w.z. MVC) en die alle gebieden van applicatieontwikkeling bestrijkt.


Antwoord 1, autoriteit 100%

In feite kunnen deze termen veel verschillende dingen betekenen, afhankelijk van de context waarin ze worden gebruikt.

In Mac OS X zijn frameworks bijvoorbeeld gewoon bibliotheken, verpakt in een bundel. Binnen de bundel vindt u een echte dynamische bibliotheek (libWhatever.dylib). Het verschil tussen een kale bibliotheek en het framework op Mac is dat een framework meerdere verschillende versies van de bibliotheek kan bevatten. Het kan extra bronnen bevatten (afbeeldingen, gelokaliseerde tekenreeksen, XML-gegevensbestanden, UI-objecten, enz.) en tenzij het raamwerk openbaar wordt gemaakt, bevat het meestal de benodigde .h-bestanden die u nodig hebt om de bibliotheek te gebruiken.

Dus je hebt alles in een enkel pakket dat je nodig hebt om de bibliotheek in je toepassing te gebruiken (een C/C++/Objective-C-bibliotheek zonder .h-bestanden is vrij nutteloos, tenzij je ze zelf schrijft volgens sommige bibliotheekdocumentatie), in plaats van een heleboel bestanden om te verplaatsen (een Mac-bundel is slechts een map op Unix-niveau, maar de gebruikersinterface behandelt het als een enkel bestand, ongeveer alsof je JAR-bestanden in Java hebt en wanneer je erop klikt, doe je dat meestal niet niet zien wat erin zit, tenzij je er expliciet voor kiest om de inhoud weer te geven).

Wikipedia noemt framework een “modewoord”. Het definieert een softwareframework als

Een softwareframework is een herbruikbare
ontwerp voor een softwaresysteem (of
subsysteem). Een softwareframework kan
inclusief ondersteuningsprogramma’s, code
bibliotheken, een scripttaal, of
andere software om te helpen ontwikkelen en
lijm de verschillende onderdelen aan elkaar
van een softwareproject. Verschillende delen
van het raamwerk kan worden blootgesteld
via een API..

Dus ik zou zeggen dat een bibliotheek precies dat is, “een bibliotheek”. Het is een verzameling objecten/functies/methoden (afhankelijk van uw taal) en uw toepassing “linkt” ernaar en kan dus de objecten/functies/methoden gebruiken. Het is in feite een bestand met herbruikbare code die meestal door meerdere applicaties kan worden gedeeld (je hoeft dezelfde code niet steeds opnieuw te schrijven).

Een framework kan alles zijn wat je gebruikt bij applicatieontwikkeling. Het kan een bibliotheek zijn, een verzameling van vele bibliotheken, een verzameling scripts of elk stukje software dat u nodig hebt om uw toepassing te maken. Kader is maar een heel vage term.

Hier is een artikel over een man over het onderwerp “Bibliotheek versus Framework“. Persoonlijk vind ik dit artikel zeer discutabel. Het is niet verkeerd wat hij daar zegt, maar hij kiest gewoon een van de meerdere definities van framework en vergelijkt dat met de klassieke definitie van bibliotheek. bijv. hij zegt dat je een raamwerk nodig hebt voor subclassificatie. Werkelijk? Ik kan een object laten definiëren in een bibliotheek, ik kan er een link naar maken en het in mijn code onderklassen. Ik zie niet in hoe ik daar een “raamwerk” voor nodig heb. Op de een of andere manier legt hij eerder uit hoe de term raamwerk tegenwoordig wordt gebruikt. Het is gewoon een hyped woord, zoals ik al eerder zei. Sommige bedrijven brengen gewoon een normale bibliotheek uit (in welke zin dan ook een klassieke bibliotheek) en noemen het een “raamwerk” omdat het chiquer klinkt.


Antwoord 2, autoriteit 91%

Een bibliotheek voert specifieke, goed gedefinieerde bewerkingen uit.

Een raamwerk is een skelet waarbij de applicatie het “vlees” van de operatie definieert door het skelet in te vullen. Het skelet heeft nog steeds code om de onderdelen aan elkaar te koppelen, maar het belangrijkste werk wordt gedaan door de applicatie.

Voorbeelden van bibliotheken: netwerkprotocollen, compressie, beeldmanipulatie, tekenreekshulpprogramma’s, evaluatie van reguliere expressies, wiskunde. De bewerkingen staan ​​op zichzelf.

Voorbeelden van frameworks: Webapplicatiesysteem, Plug-inmanager, GUI-systeem. Het raamwerk definieert het concept, maar de applicatie definieert de fundamentele functionaliteit waar eindgebruikers om geven.


Antwoord 3, autoriteit 83%

Ik denk dat het belangrijkste verschil is dat frameworks het “Hollywood-principe volgen”, dwz ” bel ons niet, wij bellen u.”

Volgens Martin Fowler:

Een bibliotheek is in wezen een verzameling van
functies die u kunt oproepen, deze
dagen meestal georganiseerd in klassen.
Elke oproep doet wat werk en keert terug
controle aan de klant.

Een raamwerk belichaamt wat abstract
ontwerp, met meer ingebouwd gedrag.
Om het te gebruiken, moet je invoegen:
uw gedrag naar verschillende plaatsen in
het raamwerk ofwel door subklassen of
door je eigen lessen in te pluggen. De
framework-code roept vervolgens uw code aan
op deze punten.


Antwoord 4, autoriteit 70%

Je belt Bibliotheek.

Framework roept je.


??? ??
????
????


Antwoord 5, autoriteit 68%

Bibliotheek:

Het is gewoon een verzameling van routines (functioneel programmeren) of klassedefinities(objectgeoriënteerd programmeren). De reden hierachter is simpelweg hergebruik van code, d.w.z. de code ophalen die al door andere ontwikkelaars is geschreven. De klassen of routines definiëren normaal gesproken specifieke bewerkingen in een domeinspecifiek gebied. Er zijn bijvoorbeeld enkele wiskundige bibliotheken waarmee ontwikkelaars de functie gewoon kunnen aanroepen zonder de implementatie van hoe een algoritme werkt opnieuw uit te voeren.

Kader:

In het raamwerk is alle controlestroom er al, en er zijn een aantal vooraf gedefinieerde witte vlekken die we in moeten vullen met onze code. Een raamwerk is normaal gesproken complexer. Het definieert een skelet waar de toepassing zijn eigen kenmerken definieert om het skelet in te vullen. Op deze manier wordt uw code indien nodig door het framework aangeroepen. Het voordeel is dat ontwikkelaars zich geen zorgen hoeven te maken over of een ontwerp goed is of niet, maar alleen over het implementeren van domeinspecifieke functies.

Bibliotheek, Framework en uw code-afbeeldingsweergave:

Bibliotheek, Framewerk en uw cod-afbeeldingsrelatie

Sleutelverschil:

Het belangrijkste verschil tussen een bibliotheek en een framework is Inversion of Control . Wanneer u een methode uit een bibliotheek aanroept, heeft u de controle. Maar met een raamwerk is de controle omgekeerd: het raamwerk roept jou. Bron.

Relatie:

Beiden gedefinieerde API, die wordt gebruikt door programmeurs om te gebruiken. Om die samen te voegen, kunnen we een bibliotheek zien als een bepaalde functie van een applicatie, een raamwerk als het skelet van de applicatie, en een API is de connector om die samen te voegen. Een typisch ontwikkelingsproces begint normaal gesproken met een raamwerk en vult functies in die zijn gedefinieerd in bibliotheken via API.


Antwoord 6, autoriteit 30%

Zoals ik het altijd heb beschreven:

Een bibliotheek is een hulpmiddel.

Een raamwerk is een manier van leven.

Een bibliotheek die u kunt gebruiken, elk klein onderdeel dat u helpt. Een Framework waaraan je je hele project moet committeren.


Antwoord 7, autoriteit 13%

Vanuit het perspectief van de webontwikkelaar:

  1. Bibliotheek kan eenvoudig worden vervangen door een andere bibliotheek. Maar framework kan dat niet.

    Als je de jQuery-datumkiezer-bibliotheek niet leuk vindt, kun je deze vervangen door een andere datumkiezer, zoals bootstrap-datumkiezer of pickadate.

    Als je AngularJS waarop je je product hebt gebouwd niet leuk vindt, kun je het niet zomaar vervangen door andere frameworks. Je moet je hele codebasis herschrijven.

  2. Meestal neemt de bibliotheek een zeer korte leercurve in vergelijking met Frameworks. Bijv.: underscore.js is een bibliotheek, Ember.js is een raamwerk.


Antwoord 8, autoriteit 11%

Ik vind het antwoord van Cohen leuk, maar een meer technische definitie is: je code roept een bibliotheek aan. Een framework roept je code aan. Een GUI-framework roept bijvoorbeeld uw code op via event-handlers. Een webframework roept uw ​​code aan via een verzoek-antwoordmodel.

Dit wordt ook wel inversion of control genoemd – plotseling beslist het framework wanneer en hoe je code moet worden uitgevoerd in plaats van andersom, zoals bij bibliotheken. Dit betekent dat een framework ook een veel grotere impact heeft op hoe je je code moet structureren.


Antwoord 9, autoriteit 8%

Ik ben vergeten waar ik deze definitie heb gezien, maar ik vind hem best aardig.

Een bibliotheek is een module die je aanroept vanuit je code, en een framework is een module die je code aanroept.


Antwoord 10, autoriteit 6%

Een raamwerk kan worden gemaakt uit verschillende bibliotheken. Laten we een voorbeeld nemen.

Stel dat je een viscurry wilt koken. Dan heb je ingrediënten nodig zoals olie, kruiden en andere hulpmiddelen. Je hebt ook vis nodig, dat is je basis om je gerecht op te bereiden (dit zijn gegevens van je aanvraag). alle ingrediënten samen noemen we een raamwerk. Nu ga je ze één voor één of in combinatie gebruiken om je viscurry te maken, wat je eindproduct is. Vergelijk dat eens met een webframework dat is gemaakt van underscore.js, bootstrap.css, bootstrap.js , fontawesome, AngularJS enz. Bijvoorbeeld Twitter Bootstrap v.35.

Als je nu maar naar één ingrediënt kijkt, zoals bijvoorbeeld olie. Je kunt geen olie gebruiken die je wilt omdat het je vis (data) bederft. U kunt alleen Olijfolie gebruiken. Vergelijk dat eens met underscore.js. Welk merk olie u wilt gebruiken, is aan u. Sommige gerechten zijn gemaakt met Amerikaanse olijfolie (underscore.js) of Indiase olijfolie (lodash.js). Dit verandert alleen de smaak van uw toepassing. Omdat ze bijna hetzelfde doel dienen, hangt het gebruik ervan af van de voorkeur van de ontwikkelaar en zijn ze gemakkelijk vervangbaar.

voer hier de afbeeldingsbeschrijving in


Framework : een verzameling bibliotheken die unieke eigenschappen en gedrag voor uw toepassing bieden. (Alle ingrediënten)

Bibliotheek: een goed gedefinieerde set instructies die uw gegevens unieke eigenschappen en gedrag bieden. (Olie op Vis)

Plugin : een hulpprogramma dat is gebouwd voor een bibliotheek (ui-router -> AngularJS) of veel bibliotheken in combinatie (date-picker -> bootstrap.css + jQuery) zonder welke uw plug-in zou kunnen werk nu zoals verwacht.


P.S. AngularJS is een MVC-framework maar een JavaScript-bibliotheek. Omdat ik geloof dat Library het standaardgedrag van native technologie (JavaScript in dit geval) uitbreidt.


Antwoord 11, autoriteit 4%

Dit is hoe ik er over denk (en door anderen gerationaliseerd heb gezien):

Een bibliotheek is iets in je code. En een framework is een container voor je applicatie.


Antwoord 12, autoriteit 3%

hier is een bitter artikel van Joel Spolsky gelinkt, maar bevat een goed onderscheid tussen toolboxen, bibliotheken, frameworks en dergelijke


Antwoord 13, autoriteit 2%

Een bibliotheek implementeert functionaliteit voor een beperkt doel, terwijl een raamwerk meestal een verzameling bibliotheken is die ondersteuning biedt voor een breder scala aan functies. De bibliotheek System.Drawing.dll verwerkt bijvoorbeeld de tekenfunctionaliteit, maar is slechts een onderdeel van het algemene .NET-framework.


Antwoord 14, autoriteit 2%

Ik denk dat bibliotheek een set hulpprogramma’s is om een ​​doel te bereiken (bijvoorbeeld sockets, cryptografie, enz.).
Framework is bibliotheek + RUNTIME EINVIRONNEMENT. ASP.NET is bijvoorbeeld een framework: het accepteert HTTP-verzoeken, maakt een pagina-object, roept lyfe cicle-gebeurtenissen op, enz. Framework doet dit allemaal, je schrijft een stukje code dat op een specifiek moment van de levenscyclus van huidig ​​verzoek!

Hoe dan ook, een zeer interessante vraag!


Antwoord 15, autoriteit 2%

Bibliotheken zijn voor gebruiksgemak en efficiëntie. Je kunt bijvoorbeeld zeggen dat de Zend-bibliotheek ons ​​helpt verschillende taken uit te voeren met zijn goed gedefinieerde klassen en functies. Terwijl een raamwerk iets is dat meestal een bepaalde manier van implementeren van een oplossing afdwingt, zoals MVC(Model-view-controller)(referentie). Het is een goed gedefinieerd systeem voor de verdeling van taken zoals in MVC.Model bevat databasezijde, Views zijn voor UI-interface en controllers zijn voor bedrijfslogica.


Antwoord 16

Uw interpretatie klinkt redelijk goed voor mij… Een bibliotheek kan alles zijn dat is gecompileerd en op zichzelf staat voor hergebruik in andere code, er is letterlijk geen beperking op de inhoud ervan.

>

Aan de andere kant wordt verwacht dat een framework een scala aan faciliteiten heeft voor gebruik in een specifieke arena van applicatie-ontwikkeling, net als uw voorbeeld, MVC.


Antwoord 17

Ik denk dat je het verschil goed hebt aangegeven: het raamwerk biedt een kader waarin we ons werk doen… Op de een of andere manier is het meer “beperkend” dan een eenvoudige bibliotheek.
Het raamwerk zou ook consistentie moeten toevoegen aan een reeks bibliotheken.


Antwoord 18

Bibliotheek – Elke reeks klassen of componenten die naar eigen goeddunken kunnen worden gebruikt om een ​​bepaalde taak uit te voeren.
Kader – verplicht bepaalde richtlijnen voor u om “in te pluggen” in iets dat groter is dan u. U levert alleen de stukken die specifiek zijn voor uw toepassing/vereisten op een gepubliceerde vereiste manier, zodat ‘het kader uw leven gemakkelijk kan maken’


Antwoord 19

Ik weet de bron van dit antwoord niet meer (ik denk dat ik het in een .ppt op internet heb gevonden), maar het antwoord is vrij eenvoudig.

Een bibliotheek en een Framework zijn een reeks klassen, modules en/of code (afhankelijk van de programmeertaal) die in uw toepassingen kunnen worden gebruikt en u helpen een specifiek “probleem” op te lossen.

Dat probleem kan het loggen of debuggen van informatie in een applicatie zijn, grafieken tekenen, een specifiek bestandsformaat maken (html, pdf, xls), verbinding maken met een database, een deel van een applicatie maken of een volledige applicatie of een code toegepast op een Ontwerppatroon.

Je kunt een raamwerk of een bibliotheek hebben om al deze problemen en nog veel meer op te lossen, normaal gesproken helpen de raamwerken je om complexere of grotere problemen op te lossen, maar dat een gevolg is van hun belangrijkste verschil, geen hoofddefinitie voor beide.

Het belangrijkste verschil tussen een bibliotheek en een Framework is de afhankelijkheid tussen hun eigen code, met andere woorden om een ​​Framework te gebruiken
bijna alle klassen, modules of code in de FW moet gebruiken, maar om
gebruik een bibliotheek je kunt een of enkele klassen, modules of code gebruiken in de
lib in je eigen applicatie

Dit betekent dat als een Framework bijvoorbeeld 50 klassen heeft om het framework in een app te gebruiken, je 10-15 of meer klassen in je code moet gebruiken, want zo is een Framework, sommige klassen (objecten van die klassen) zijn invoer/parameters voor methoden in andere klassen in het raamwerk. Zie het .NET-framework, Spring of een ander MVC-framework.

Maar bijvoorbeeld een logbibliotheek, u kunt gewoon een Log-klasse in uw code gebruiken en u helpen het “logprobleem” op te lossen, dat betekent niet dat de logbibliotheek niet meer klassen in zijn code heeft , zoals klassen om bestanden te verwerken, schermuitvoer te verwerken of zelfs databases, maar je raakt/gebruikt die klassen nooit in je code, en dat is de reden waarom het een bibliotheek is en geen raamwerk.

En er zijn ook meer categorieën dan Frameworks en Bibliotheken, maar dat is off-topic.


Antwoord 20

Ik zal het proberen uit te leggen alsof je vijf bent.

Stel je voor dat je een tijdje geleden een burgerrestaurant in je stad had geopend. Maar je voelt dat het zo moeilijk is om als beginner een burger te maken. Je dacht aan een gemakkelijke manier om hamburgers te maken voor klanten.
Iemand heeft je verteld dat er McDonald Burger Framework en BurgerKing Burger Framework

zijn.

Als je McDonald Burger Framework gebruikt, is het zo gemakkelijk om een ​​Big Mac burger te maken. (maar je kunt Whopper niet maken.)

Als u BurgerKing Burger Framework gebruikt, is het zo gemakkelijk om Whopper Burger te maken (u kunt echter geen Big Mac maken)

p>

Hoe dan ook, uiteindelijk zijn het allemaal hamburgers. Een belangrijk ding hier is dat je de regel van hun raamwerk moet volgen om hamburgers te maken. anders voel je je nog moeilijker om het te halen of zul je het niet kunnen halen.

En je hebt ook gehoord dat er iets is dat Simple Burger-Patty Library heet.

Als je deze bibliotheek gebruikt, kun je zo gemakkelijk elke burgerpasteit maken (X2-snelheid).
Het maakt niet echt uit of je McDonald Burger Framework of BurgerKing Burger Framework gebruikt.
Hoe dan ook, je kunt nog steeds deze Simple Burger-Patty Library gebruiken. (Zelfs jij kunt deze bibliotheek zonder kaders gebruiken.)

Zie je nu het verschil tussen Framework en Bibliotheek?


Toen je eenmaal begon met het gebruik van McDonald Burger Framework. Het zou niet gemakkelijk zijn om over te schakelen naar BurgerKing Burger Framework. Omdat je de hele keuken moet veranderen.

Maar bibliotheek, het zou veel gemakkelijker zijn om van andere te wisselen. of je kunt het gewoon niet gebruiken.


Antwoord 21

Bibliotheek versus Framework

Martin Fowler – InversionOfControl

Bibliotheek en Framework zijn externe code voor uw code. Dit kan bestand zijn (bijv. .jar), systeemcode (onderdeel van besturingssysteem) enz.

Library is een verzameling nuttige code. De focus ligt op uw code. Bibliotheek lost een smalle reeks taken op. Bijvoorbeeld – hulpprogramma’s, sorteren, modularisatie

your code ->(has) Library API

Framework of Inversion of Control(IoC) container[ Over] is iets meer. Framework lost een breed scala aan taken op (domeinspecifiek), u delegeert deze taak aan framework. IoC – uw code is afhankelijk van frameworklogica, gebeurtenissen… Als resultaat roept framework uw code op. Het dwingt je code om zich aan zijn regels te houden (implementeer/verleng protocol/interface/contract), geef lambda’s door… Bijvoorbeeld – Tests, GUI, DI-frameworks…

your code ->(has) and ->(implements) Framework API

[iOS-bibliotheek versus Framework]

[DIP versus DI versus IoC]


Antwoord 22

Op basis van de definities in het boek Ontwerppatronen door Erich Gamma et al.:

  • bibliotheek: een reeks gerelateerde procedures en klassen die samen een herbruikbare implementatie vormen;
  • framework: een reeks samenwerkende klassen met sjabloonmethoden die een herbruikbare specificatie vormen. Het stelt de controlestroom in en maakt het mogelijk om in die stroom in te haken om het raamwerk aan te passen aan een specifiek probleem door in een subklasse de hook-methoden te overschrijven die worden aangeroepen door de template-methoden in de framework-klassen.

Probleemspecifieke code kan bibliotheken gebruiken en frameworks implementeren.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

one + ten =

Other episodes