Was ist der Unterschied zwischen einem Framework und einer Bibliothek? [geschlossen]

865

Was ist der Unterschied zwischen einem Framework und einer Bibliothek ?

Ich habe mir eine Bibliothek immer als eine Reihe von Objekten und Funktionen vorgestellt, die sich auf die Lösung eines bestimmten Problems oder eines bestimmten Bereichs der Anwendungsentwicklung (dh Datenbankzugriff) konzentrieren. und ein Framework andererseits als eine Sammlung von Bibliotheken, die sich auf eine bestimmte Methodik (dh MVC) konzentrieren und alle Bereiche der Anwendungsentwicklung abdecken.

Anbanm
quelle
18
@ vba4all: Wie kann dies ein Duplikat sein, als es zuerst gefragt wurde?
Noob Saibot
5
Nur weil es zuerst erstellt wurde, heißt das nicht, dass es kein Duplikat ist;) Es geht nur darum, doppelte / sehr ähnliche Fragen zu identifizieren und sicherzustellen, dass Ressourcen / Antworten gemeinsam genutzt werden (und die aktivste / am besten beantwortete Frage offen ist)
GrayedFox
2
Mögliches Duplikat von Framework vs. Toolkit vs. Library
Emlai
3
@tuple_cat tatsächlich scheint Ihr Link das Duplikat zu sein: es wurde nach diesem gefragt
chharvey
1
Wir brauchen einige Funktionen, wir nennen Bibliothek. Wir benötigen einige Funktionen, die wir mithilfe von Framework verwenden können, und Framework ruft unseren Code auf (z. B. UIKit).
Kamleshwar

Antworten:

350

Tatsächlich können diese Begriffe je nach verwendetem Kontext viele verschiedene Bedeutungen haben.

Unter Mac OS X sind Frameworks beispielsweise nur Bibliotheken, die in einem Bundle zusammengefasst sind. Innerhalb des Bundles finden Sie eine aktuelle dynamische Bibliothek (libWhatever.dylib). Der Unterschied zwischen einer leeren Bibliothek und dem Framework auf dem Mac besteht darin, dass ein Framework mehrere verschiedene Versionen der Bibliothek enthalten kann. Es kann zusätzliche Ressourcen enthalten (Bilder, lokalisierte Zeichenfolgen, XML-Datendateien, UI-Objekte usw.). Sofern das Framework nicht für die Öffentlichkeit freigegeben wird, enthält es normalerweise die erforderlichen .h-Dateien, die Sie zur Verwendung der Bibliothek benötigen.

Somit haben Sie alles in einem einzigen Paket, was Sie benötigen, um die Bibliothek in Ihrer Anwendung zu verwenden (eine C / C ++ / Objective-C-Bibliothek ohne .h-Dateien ist ziemlich nutzlos, es sei denn, Sie schreiben sie selbst gemäß einer Bibliotheksdokumentation), anstatt a Eine Reihe von Dateien, die verschoben werden müssen (ein Mac-Bundle ist nur ein Verzeichnis auf Unix-Ebene, aber die Benutzeroberfläche behandelt es wie eine einzelne Datei, so als hätten Sie JAR-Dateien in Java, und wenn Sie darauf klicken, wird dies normalerweise nicht angezeigt was drin ist, es sei denn, Sie wählen explizit aus, um den Inhalt anzuzeigen).

Wikipedia nennt Framework ein "Schlagwort". Es definiert ein Software-Framework als

Ein Software-Framework ist ein wiederverwendbares Design für ein Softwaresystem (oder Subsystem). Ein Software-Framework kann Unterstützungsprogramme, Codebibliotheken, eine Skriptsprache oder andere Software enthalten, um die Entwicklung und Zusammenkleben der verschiedenen Komponenten eines Softwareprojekts zu unterstützen. Verschiedene Teile des Frameworks können über eine API verfügbar gemacht werden.

Ich würde also sagen, eine Bibliothek ist genau das, "eine Bibliothek". Es ist eine Sammlung von Objekten / Funktionen / Methoden (abhängig von Ihrer Sprache) und Ihre Anwendung "verlinkt" dagegen und kann somit die Objekte / Funktionen / Methoden verwenden. Es handelt sich im Grunde genommen um eine Datei mit wiederverwendbarem Code, die normalerweise von mehreren Anwendungen gemeinsam genutzt werden kann (Sie müssen nicht immer wieder denselben Code schreiben).

Ein Framework kann alles sein, was Sie in der Anwendungsentwicklung verwenden. Dies kann eine Bibliothek, eine Sammlung vieler Bibliotheken, eine Sammlung von Skripten oder eine beliebige Software sein, die Sie zum Erstellen Ihrer Anwendung benötigen. Framework ist nur ein sehr vager Begriff.

Hier ist ein Artikel über jemanden zum Thema " Library vs. Framework ". Ich persönlich halte diesen Artikel für sehr umstritten. Es ist nicht falsch, was er dort sagt, aber er wählt nur eine der vielen Definitionen des Frameworks aus und vergleicht diese mit der klassischen Definition der Bibliothek. Zum Beispiel sagt er, dass Sie einen Rahmen für die Unterklassifizierung benötigen. "Ja wirklich?" Ich kann ein Objekt in einer Bibliothek definieren lassen, es verknüpfen und in meinem Code unterordnen. Ich sehe nicht ein, wie ich dafür einen "Rahmen" brauche. In gewisser Weise erklärt er eher, wie der Begriff Framework heutzutage verwendet wird. Es ist nur ein gehyptes Wort, wie ich schon sagte. Einige Unternehmen veröffentlichen nur eine normale Bibliothek (im Sinne einer klassischen Bibliothek) und nennen sie ein "Framework", weil es ausgefallener klingt.

Mecki
quelle
2
Interessant, dass der Wikipedia-Artikel 2008 "Framework" als "Schlagwort" bezeichnete.
Zebrafisch
2
IMO, ein Framework ist die "leere" Projektumgebung.
Kulvar
514

Eine Bibliothek führt bestimmte, genau definierte Operationen aus.

Ein Framework ist ein Skelett, bei dem die Anwendung das "Fleisch" der Operation durch Ausfüllen des Skeletts definiert. Das Skelett verfügt weiterhin über Code zum Verknüpfen der Teile, die wichtigste Arbeit wird jedoch von der Anwendung ausgeführt.

Beispiele für Bibliotheken: Netzwerkprotokolle, Komprimierung, Bildmanipulation, Zeichenfolgen-Dienstprogramme, Auswertung regulärer Ausdrücke, Mathematik. Operationen sind in sich geschlossen.

Beispiele für Frameworks: Webanwendungssystem, Plug-in-Manager, GUI-System. Das Framework definiert das Konzept, aber die Anwendung definiert die grundlegenden Funktionen, die Endbenutzer interessieren.

Jason Cohen
quelle
10
+1 für echte Beispiele. Übrigens, macht es Ihnen etwas aus zu klären, was Sie unter einem "Webanwendungssystem" verstehen?
Pacerier
3
@Pacerier ist wahrscheinlich etwas, mit dem Sie eine vollständige Webanwendung erstellen können, z. B. Rails for Ruby oder Sails for Node.js.
Gustavohenke
Gute Antwort. Können Sie weitere Beispiele für iOS-Frameworks und -Bibliotheken nennen?
NSPratik
oder Django, das Webframework für Perfektionisten mit Fristen.
Luftangriff
2
Ich würde daran denken, das Skelett eher mit "Muskeln" als mit "Fleisch" zu füllen. Ich denke, es ist eine genauere Analogie, weil 'Muskeln' das Skelett in Bewegung setzen.
altgov3en
290

Ich denke, der Hauptunterschied besteht darin, dass Frameworks dem " Hollywood-Prinzip " folgen , dh "Rufen Sie uns nicht an, wir rufen Sie an".

Laut Martin Fowler :

Eine Bibliothek besteht im Wesentlichen aus einer Reihe von Funktionen, die Sie aufrufen können. Diese sind heutzutage normalerweise in Klassen unterteilt. Jeder Aufruf erledigt einige Arbeiten und gibt die Kontrolle an den Client zurück.

Ein Framework verkörpert ein abstraktes Design mit mehr integriertem Verhalten. Um es zu verwenden, müssen Sie Ihr Verhalten an verschiedenen Stellen im Framework einfügen, entweder durch Unterklassen oder durch Einfügen Ihrer eigenen Klassen. Der Code des Frameworks ruft dann an diesen Stellen Ihren Code auf.

Panos
quelle
2
@Panos Danke für die Erklärung, aber kannst du das näher erläutern. Zum Beispiel verwende ich das FacebookSDK-Framework und rufe Klassenmethoden aus diesem Framework auf. Das FacebookSDK-Framework ruft in meinem Code nichts auf, was Ihrer Definition entgegengesetzt ist, dh "Rufen Sie uns nicht an, wir rufen Sie an".
Charles Robertson
4
@CharlesRobertson AFAIK FacebookSDK ist eine Client-Bibliothek. Es kann nicht als Framework klassifiziert werden und der Grund liegt auf der Hand (wie Sie bereits bemerkt haben): Das FacebookSDK ruft im Client-Code nichts auf. Darüber hinaus definiert Facebook das SDK wie folgt: "Eine Vielzahl von clientseitigen Funktionen zum Hinzufügen von Social Plugins, Facebook Login und Graph API-Aufrufen." Keine Angabe für Rahmen ...
Panos
1
@ Panos Danke. Ich denke, das Koffersymbol, das das FacebookSDK darstellt, ist dann etwas irreführend. Und der Name 'FacebookSDK.framework'. Facebook sollte es in so etwas wie "FacebookSDK.dylib" umbenennen? Aber danke für die Klarstellung. Es ist gut zu wissen, was die richtige Definition ist ...
Charles Robertson
Das ist eine interessante Definition. Ich habe kürzlich begonnen, d3.js zu verwenden, und festgestellt, dass es allgemein als Framework betrachtet wird. Aber welcher D3-Code, den ich geschrieben habe, auch in einem üblichen Javascript-Code enthalten ist, daher kann ich diese Definition nicht auf D3 erweitern.
Dileep Kumar Patchigolla
1
@Dileep Auf der Homepage von d3.js heißt es im ersten Satz: "D3.js ist eine JavaScript-Bibliothek zum Bearbeiten von Dokumenten basierend auf Daten". Ich denke, dass es falsch ist, als Rahmen betrachtet zu werden.
Panos
243

Sie rufen Library an.

Framework ruft Sie an.


図 書館 助 け
足 場 が 痛 痛
多 く く の

Ian Boyd
quelle
12
Könnten Sie dies als Haiku umgestalten?
Derek Tomes
18
@DerekTomes BTW: Ich habe Haiku- Form hinzugefügt .
Ian Boyd
56
Ihre Antwort wird in META diskutiert . Möchten Sie das Haiku übersetzen? Ich denke, einige von uns fragen sich, ob es wirklich bedeutet, der Bibliothek zu helfen, das Gerüst tut weh, viele Tränen, wie der Google-Übersetzer es ganz liebevoll ausdrückt :)
Bugs
27
Gut zu sehen, dass ein Mod die ersten beiden Kommentare gelöscht hat. Jetzt macht es Sinn, warum der japanische Text hinzugefügt wurde (er wurde als Scherz angefordert) und dass es nur ein Übersetzungsversuch war und kein wirklich populäres japanisches Gedicht.
Zanon
9
In Sowjetrussland nennt Sie Framework.
Robert Moore
242

Bibliothek:

Es ist nur eine Sammlung von Routinen (funktionale Programmierung) oder Klassendefinitionen (objektorientierte Programmierung). Der Grund dafür ist einfach die Wiederverwendung von Code , dh der Code, der bereits von anderen Entwicklern geschrieben wurde. Die Klassen oder Routinen definieren normalerweise bestimmte Operationen in einem domänenspezifischen Bereich . Zum Beispiel gibt es einige mathematische Bibliotheken, mit denen Entwickler die Funktion einfach aufrufen können, ohne die Implementierung der Funktionsweise eines Algorithmus zu wiederholen.

Rahmen:

Im Framework ist der gesamte Kontrollfluss bereits vorhanden, und es gibt eine Reihe vordefinierter weißer Punkte , die wir mit unserem Code ausfüllen sollten . Ein Framework ist normalerweise komplexer. Es definiert ein Skelett, in dem die Anwendung ihre eigenen Funktionen definiert, um das Skelett auszufüllen. Auf diese Weise wird Ihr Code vom Framework bei Bedarf aufgerufen. Der Vorteil ist, dass Entwickler sich nicht darum kümmern müssen, ob ein Design gut ist oder nicht, sondern nur um die Implementierung domänenspezifischer Funktionen.

Bibliothek, Framework und Ihre Codebilddarstellung:

Bibliothek, Framework und Ihre Codebildbeziehung

KeyDifference:

Der Hauptunterschied zwischen einer Bibliothek und einem Framework ist „Inversion of Control“ . Wenn Sie eine Methode aus einer Bibliothek aufrufen, haben Sie die Kontrolle. Bei einem Framework ist die Steuerung jedoch umgekehrt: Das Framework ruft Sie an . Quelle.

Beziehung:

Beide haben eine API definiert, die von Programmierern verwendet wird. Um diese zusammenzustellen, können wir uns eine Bibliothek als eine bestimmte Funktion einer Anwendung vorstellen, ein Framework als Grundgerüst der Anwendung, und eine API ist ein Konnektor, um diese zusammenzustellen. Ein typischer Entwicklungsprozess beginnt normalerweise mit einem Framework und füllt Funktionen aus, die in Bibliotheken über die API definiert sind.

Durai Amuthan.H
quelle
14
Umkehrung der Kontrolle Tolle ausführliche Erklärung!
Patricia
3
Fasst es wie das Bild gut zusammen und zeigt auch, warum Menschen manchmal verwirrt sind, weil Frameworks häufig auch Bibliotheken bündeln.
Didier A.
1
@didibus Wenn Sie der Meinung sind, dass die Antwort eine gute Erklärung liefert, können Sie die Antwort positiv bewerten, damit die Post-Viewer die fruchtbare Antwort leicht finden können.
Durai Amuthan.H
FFmpeg (nicht das Programm, sondern hauptsächlich LibAVUtil aus dem Projekt) ist also ein Framework, und libavcodec usw. sind Bibliotheken?
MarcusJ
1
@MarcusJ - Sowohl LibAVUtil als auch libavcodec sind Bibliotheken
Durai Amuthan.H
110

Wie ich es immer beschrieben habe:

Eine Bibliothek ist ein Werkzeug.

Ein Framework ist eine Lebensweise.

Eine Bibliothek, in der Sie jeden winzigen Teil verwenden können, der Ihnen hilft. Ein Framework, für das Sie Ihr gesamtes Projekt festlegen müssen.

James Curran
quelle
9
Diese Antwort ist viel sinnvoller, nachdem beide Begriffe vollständig verstanden wurden.
weiterer
45

Aus Sicht der Webentwickler:

  1. Die Bibliothek kann leicht durch eine andere Bibliothek ersetzt werden. Aber Rahmen kann nicht.

    Wenn Sie die jquery Date Picker-Bibliothek nicht mögen, können Sie sie durch eine andere Datumsauswahl wie Bootstrap Date Picker oder Pickadate ersetzen.

    Wenn Sie AngularJS nicht mögen, auf dem Sie Ihr Produkt aufgebaut haben, können Sie es nicht einfach durch andere Frameworks ersetzen. Sie müssen Ihre gesamte Codebasis neu schreiben.

  2. Meistens benötigt die Bibliothek im Vergleich zu Frameworks weniger Lernaufwand. Beispiel: underscore.js ist eine Bibliothek, Ember.js ist ein Framework.

Fizer Khan
quelle
Beste Antwort. Einfach, direkt und klar.
Felipe Santiago
41

Ich mag Cohens Antwort, aber eine technischere Definition ist: Ihr Code ruft eine Bibliothek auf. Ein Framework ruft Ihren Code auf . Beispielsweise ruft ein GUI-Framework Ihren Code über Ereignishandler auf. Ein Webframework ruft Ihren Code über ein Request-Response-Modell auf.

Dies wird auch als Umkehrung der Steuerung bezeichnet. Plötzlich entscheidet das Framework, wann und wie Sie Code ausführen, und nicht umgekehrt wie bei Bibliotheken. Dies bedeutet, dass ein Framework auch einen viel größeren Einfluss darauf hat, wie Sie Ihren Code strukturieren müssen.

JacquesB
quelle
30

Ich habe vergessen, wo ich diese Definition gesehen habe, aber ich finde sie ziemlich schön.

Eine Bibliothek ist ein Modul, das Sie aus Ihrem Code aufrufen, und ein Framework ist ein Modul, das Ihren Code aufruft.

Moe
quelle
6
Aber libc enthält qsort (), das Ihren Code aufruft. Ich denke nicht, dass libc ein Framework ist.
Mark Baker
Was ist mit Modul gemeint?
NattyC
18

Ein Framework kann aus verschiedenen Bibliotheken bestehen. Nehmen wir ein Beispiel.

Angenommen, Sie möchten ein Fischcurry kochen. Dann brauchen Sie Zutaten wie Öl , Gewürze und andere Hilfsmittel . Sie benötigen auch Fisch, auf dem Sie Ihr Gericht zubereiten können (dies sind Daten Ihrer Anwendung). Alle Zutaten zusammen werden als Rahmen bezeichnet . Jetzt werden Sie sie einzeln oder in Kombination verwenden, um Ihr Fischcurry zuzubereiten, das Ihr Endprodukt ist . Vergleichen Sie dies mit einem Webframework, das aus underscore.js , bootstrap.css , bootstrap.js , fontawesome , AngularJS usw. besteht. Ein Beispiel ist Twitter Bootstrap v.35.

Wenn Sie nur eine Zutat in Betracht ziehen, wie zum Beispiel Öl . Sie können kein Öl verwenden, das Sie wollen, da es dann Ihren Fisch ruiniert (Daten). Sie können nur Olivenöl verwenden . Vergleichen Sie das mit underscore.js . Nun liegt es an Ihnen, welche Ölmarke Sie verwenden möchten. Einige Gerichte wurden mit amerikanischem Olivenöl (underscore.js) oder indischem Olivenöl (lodash.js) zubereitet. Dies ändert nur den Geschmack Ihrer Anwendung. Da sie fast dem gleichen Zweck dienen, hängt ihre Verwendung von den Vorlieben des Entwicklers ab und sie sind leicht austauschbar.

Geben Sie hier die Bildbeschreibung ein


Framework : Eine Sammlung von Bibliotheken, die Ihrer Anwendung einzigartige Eigenschaften und Verhaltensweisen bieten. (Alle Zutaten)

Bibliothek : Eine genau definierte Reihe von Anweisungen, die Ihren Daten einzigartige Eigenschaften und Verhaltensweisen verleihen. (Öl auf Fisch)

Plugin : Ein Dienstprogramm für eine Bibliothek (UI-Router -> AngularJS) oder mehrere Bibliotheken in Kombination (Datumsauswahl -> bootstrap.css + jQuery), ohne das Ihr Plugin jetzt möglicherweise wie erwartet funktioniert.


PS AngularJS ist ein MVC-Framework, aber eine JavaScript-Bibliothek. Weil ich glaube, dass Library das Standardverhalten der nativen Technologie (in diesem Fall JavaScript) erweitert.

Uday Hiwarale
quelle
Schöne Erklärung :)
Mano
14

So denke ich darüber (und habe es von anderen rationalisiert gesehen):

Eine Bibliothek ist etwas, das in Ihrem Code enthalten ist. Und ein Framework ist ein Container für Ihre Anwendung.

Kon
quelle
10

Hier ist ein bitterer Artikel von Joel Spolsky verlinkt , der jedoch eine gute Unterscheidung zwischen Toolboxen, Bibliotheken, Frameworks und dergleichen enthält

Lorenzo Boccaccia
quelle
8

Eine Bibliothek implementiert Funktionen für einen eng begrenzten Zweck, während ein Framework in der Regel eine Sammlung von Bibliotheken ist, die Unterstützung für ein breiteres Spektrum von Funktionen bieten. Beispielsweise behandelt die Bibliothek System.Drawing.dll die Zeichenfunktionen, ist jedoch nur ein Teil des gesamten .NET-Frameworks.

Jeff Yates
quelle
3
Guter Punkt, dass ein Framework Bibliotheken enthalten kann . Es kann also sowohl ein Framework in der ersten als auch eine Bibliothek in der zweiten Instanz sein. Wie dies bei vielen Web-Frameworks wie Apache Wicket der Fall ist, die den Verarbeitungszyklus definieren, aber auch eine große Anzahl von Klassen bereitstellen, die konkrete UI-Komponenten implementieren.
OneWorld
Ich glaube, .NET ist eine sehr große Bibliothek. Eine Bibliothek, die zu groß ist, um als Bibliothek bezeichnet zu werden, aber dennoch eine Bibliothek. Frameworks erzwingen ein bestimmtes Design, entscheiden über den Kontrollfluss usw. mit wenig Spielraum zum Basteln. .NET als solches macht das nicht. Ich glaube, .NET ist eine Bibliothek, während ASP.NET MVC ein Framework ist. Aber MS braucht gute Worte, um zu vermarkten.
Nawfal
6

Bibliothek - Alle Klassen oder Komponenten, die nach Ansicht des Clients zur Erfüllung einer bestimmten Aufgabe verwendet werden können.
Framework - schreibt bestimmte Richtlinien vor, damit Sie sich in etwas Größeres als Sie "einstecken" können. Sie stellen lediglich die Teile, die für Ihre Anwendung / Anforderungen spezifisch sind, in einer veröffentlichten, erforderlichen Weise zur Verfügung, damit "das Rahmenwerk Ihnen das Leben leichter machen kann".

Gishu
quelle
6

Bibliotheken dienen der Benutzerfreundlichkeit und Effizienz. Sie können beispielsweise sagen, dass die Zend-Bibliothek uns mit ihren genau definierten Klassen und Funktionen hilft, verschiedene Aufgaben zu erledigen. Während ein Framework normalerweise eine bestimmte Art der Implementierung einer Lösung wie MVC (Model) erzwingt -view-controller) (Referenz) . Es ist ein genau definiertes System für die Verteilung von Aufgaben wie in MVC.Model enthält die Datenbankseite, Ansichten sind für die Benutzeroberfläche und Controller sind für die Geschäftslogik.

Ravi shah
quelle
5

Ihre Interpretation klingt für mich ziemlich gut ... Eine Bibliothek kann alles sein, was für die Wiederverwendung in anderem Code kompiliert und in sich geschlossen ist. Der Inhalt ist buchstäblich nicht eingeschränkt.

Ein Rahmen auf der anderen Seite wird erwartet , dass eine Reihe von Einrichtungen für den Einsatz in einer spezifischen Arena der Anwendungsentwicklung haben, wie Ihr Beispiel MVC.

Adam Bellaire
quelle
5

Ich denke, Sie haben den Unterschied ziemlich gut festgehalten: Das Framework bietet einen Rahmen, in dem wir unsere Arbeit erledigen ... Irgendwie ist es "einschränkender" als eine einfache Bibliothek.
Das Framework soll auch einer Reihe von Bibliotheken Konsistenz verleihen.

PhiLho
quelle
5

Ich denke, Bibliothek ist eine Reihe von Dienstprogrammen, um ein Ziel zu erreichen (z. B. Sockets, Kryptografie usw.). Framework ist Bibliothek + RUNTIME EINVIRONNEMENT. Zum Beispiel ist ASP.NET ein Framework: Es akzeptiert HTTP-Anforderungen, erstellt Seitenobjekte, ruft Lyfe-Cicle-Ereignisse auf usw. Framework erledigt all dies. Sie schreiben ein Stück Code, das zu einem bestimmten Zeitpunkt des Lebenszyklus von ausgeführt wird aktuelle Anfrage!

Wie auch immer, sehr interessante Frage!

stefano m
quelle
5

Ich erinnere mich nicht an die Quelle dieser Antwort (ich glaube, ich habe sie in einer PPT im Internet gefunden), aber die Antwort ist recht einfach.

Eine Bibliothek und ein Framework sind eine Reihe von Klassen, Modulen und / oder Code (abhängig von der Programmiersprache), die in Ihren Anwendungen verwendet werden können und Ihnen bei der Lösung eines bestimmten "Problems" helfen.

Dieses Problem kann das Protokollieren oder Debuggen von Informationen in einer Anwendung, das Zeichnen von Diagrammen, das Erstellen eines bestimmten Dateiformats (HTML, PDF, XLS), das Herstellen einer Verbindung zu einer Datenbank, das Erstellen eines Teils einer Anwendung oder einer vollständigen Anwendung oder eines auf eine Anwendung angewendeten Codes sein Entwurfsmuster .

Sie können ein Framework oder eine Bibliothek haben, um all diese und viele weitere Probleme zu lösen. Normalerweise helfen Ihnen die Frameworks dabei, komplexere oder größere Probleme zu lösen, aber dass eine Folge ihrer Hauptunterschiede keine Hauptdefinition für beide ist.

Der Hauptunterschied zwischen einer Bibliothek und einem Framework besteht in der Abhängigkeit zwischen ihrem eigenen Code. Um ein Framework zu verwenden, müssen Sie fast alle Klassen, Module oder Codes in der FW verwenden. Um eine Bibliothek zu verwenden, können Sie eine oder mehrere verwenden wenige Klassen, Module oder Code in der Bibliothek in Ihrer eigenen Anwendung

Dies bedeutet, dass, wenn ein Framework beispielsweise 50 Klassen hat, um das Framework in einer App zu verwenden, Sie 10-15 oder mehr Klassen in Ihrem Code verwenden müssen, da auf diese Weise ein Framework entworfen wird, einige Klassen (Objekte dieser Klassen) sind Eingaben / Parameter für Methoden in anderen Klassen im Framework. Siehe .NET Framework, Spring oder ein beliebiges MVC-Framework.

Aber zum Beispiel eine Protokollbibliothek, Sie können einfach eine Protokollklasse in Ihrem Code verwenden und helfen Ihnen, das "Protokollierungsproblem" zu lösen. Das bedeutet nicht, dass die Protokollbibliothek nicht mehr Klassen in seinem Code hat, wie Klassen Sie können Dateien, Bildschirmausgaben oder sogar Datenbanken verarbeiten, aber Sie berühren / verwenden diese Klassen niemals in Ihrem Code. Dies ist der Grund, warum es sich um eine Bibliothek und nicht um ein Framework handelt.

Außerdem gibt es mehr Kategorien als Frameworks und Bibliotheken, aber das ist kein Thema.

Junior Garza
quelle