1031 Stimmen

Was ist der Unterschied zwischen einem Framework und einer Bibliothek?

Was ist der Unterschied zwischen einer Rahmenwerk und eine Bibliothek ?

Ich habe mir eine Bibliothek immer als einen Satz von Objekten und Funktionen vorgestellt, der sich auf die Lösung eines bestimmten Problems oder eines bestimmten Bereichs der Anwendungsentwicklung (z. B. Datenbankzugriff) konzentriert; ein Framework hingegen ist eine Sammlung von Bibliotheken, die sich auf eine bestimmte Methodik (z. B. MVC) konzentriert und alle Bereiche der Anwendungsentwicklung abdeckt.

609voto

Jason Cohen Punkte 78227

A Bibliothek führt bestimmte, genau definierte Operationen durch.

A Rahmenwerk ist ein Skelett, bei dem die Anwendung das "Fleisch" des Vorgangs durch Ausfüllen des Skeletts definiert. Das Skelett enthält noch Code zur Verknüpfung der Teile, aber die wichtigste Arbeit wird von der Anwendung erledigt.

Beispiele für Bibliotheken: Netzwerkprotokolle, Komprimierung, Bildmanipulation, String-Utilities, Auswertung regulärer Ausdrücke, Mathematik. Die Operationen sind in sich abgeschlossen.

Beispiele für Rahmenwerke: Web-Anwendungssystem, Plug-in-Manager, GUI-System. Der Rahmen definiert das Konzept, aber die Anwendung definiert die grundlegende Funktionalität, die für die Endnutzer wichtig ist.

401voto

Mecki Punkte 113876

Tatsächlich können diese Begriffe je nach dem Kontext, in dem sie verwendet werden, eine Menge unterschiedlicher Dinge bedeuten.

Unter Mac OS X zum Beispiel sind Frameworks nur Bibliotheken, die in ein Paket gepackt sind. Innerhalb des Pakets finden Sie eine tatsächliche dynamische Bibliothek (libWhatever.dylib). Der Unterschied zwischen einer bloßen Bibliothek und einem Framework auf dem Mac ist, dass ein Framework mehrere verschiedene Versionen der Bibliothek enthalten kann. Es kann zusätzliche Ressourcen enthalten (Bilder, lokalisierte Strings, XML-Datendateien, UI-Objekte usw.), und sofern das Framework nicht für die Öffentlichkeit freigegeben ist, enthält es in der Regel die notwendigen .h-Dateien, die Sie zur Verwendung der Bibliothek benötigen.

So haben Sie alles in einem einzigen Paket, was Sie brauchen, 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), anstelle eines Haufens von Dateien, die Sie hin- und herschieben müssen (ein Mac-Bundle ist nur ein Verzeichnis auf Unix-Ebene, aber die Benutzeroberfläche behandelt es wie eine einzelne Datei, ähnlich wie Sie JAR-Dateien in Java haben, und wenn Sie darauf klicken, sehen Sie normalerweise nicht, was sich darin befindet, es sei denn, Sie wählen explizit aus, den Inhalt anzuzeigen).

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

Ein Software-Framework ist eine wiederverwendbare Entwurf für ein Softwaresystem (oder Teilsystem). Ein Software-Framework kann Unterstützungsprogramme, Code Bibliotheken, eine Skriptsprache oder andere Software, die bei der Entwicklung und Zusammenfügen der verschiedenen Komponenten eines Softwareprojekts. Verschiedene Teile des Frameworks können durch eine API.

Ich würde also sagen, eine Bibliothek ist genau das: eine Bibliothek. Es handelt sich um eine Sammlung von Objekten/Funktionen/Methoden (je nach Sprache), und Ihre Anwendung "verknüpft" sich mit ihr und kann so die Objekte/Funktionen/Methoden verwenden. Im Grunde handelt es sich um eine Datei mit wiederverwendbarem Code, der in der Regel von mehreren Anwendungen gemeinsam genutzt werden kann (Sie müssen also nicht immer wieder denselben Code schreiben).

Ein Framework kann alles sein, was Sie bei der Anwendungsentwicklung verwenden. Es kann eine Bibliothek, eine Sammlung vieler Bibliotheken, eine Sammlung von Skripten oder jedes Stück Software sein, das Sie zur Erstellung Ihrer Anwendung benötigen. Framework ist nur ein sehr vager Begriff.

Hier ist ein Artikel über einen Mann zum Thema " Bibliothek vs. Rahmenwerk ". Ich persönlich halte diesen Artikel für höchst fragwürdig. Es ist nicht falsch, was er dort sagt, aber er wählt nur eine der vielen Definitionen von Framework aus und vergleicht diese mit der klassischen Definition von Bibliothek. Er sagt z.B., dass man ein Framework für Sub-Classing braucht. Wirklich? Ich kann ein Objekt in einer Bibliothek definieren, ich kann es mit ihr verknüpfen und es in meinem Code unterklassifizieren. Ich wüsste nicht, wieso ich dafür ein "Framework" bräuchte. In gewisser Weise erklärt er, wie der Begriff "Framework" heutzutage verwendet wird. Wie ich schon sagte, ist es nur ein gehyptes Wort. Manche Firmen veröffentlichen einfach eine normale Bibliothek (im Sinne einer klassischen Bibliothek) und nennen sie "Framework", weil es schicker klingt.

330voto

Panos Punkte 18703

Ich denke, der Hauptunterschied besteht darin, dass die Rahmenwerke dem " Hollywood-Prinzip ", d.h. "Rufen Sie uns nicht an, wir rufen Sie an".

Nach Angaben von Martin Fowler :

A Bibliothek ist im Wesentlichen eine Reihe von Funktionen, die Sie aufrufen können, diese heute meist in Klassen organisiert. Jeder Aufruf erledigt etwas Arbeit und gibt Kontrolle an den Client zurück.

A Rahmenwerk verkörpert eine abstrakte Design, wobei mehr Verhalten eingebaut ist. Um es zu verwenden, müssen Sie Ihr Verhalten an verschiedenen Stellen im in das Framework einfügen, entweder durch Unterklassifizierung oder indem Sie Ihre eigenen Klassen einfügen. Die Code des Frameworks ruft dann Ihren Code an diesen Stellen auf.

291voto

Durai Amuthan.H Punkte 30175

Bibliothek:

Es ist nur ein Sammlung de Routinen (funktionale Programmierung) oder Klassendefinitionen (objektorientierte Programmierung). Der Grund dafür ist einfach Code-Wiederverwendung , d.h. den Code, der bereits von anderen Entwicklern geschrieben wurde. Die Klassen oder Routinen definieren normalerweise spezifische Operationen in einem domänenspezifischen Bereich . Zum Beispiel gibt es einige Mathematikbibliotheken, die es dem Entwickler ermöglichen, die Funktion einfach aufzurufen, ohne die Implementierung eines Algorithmus neu zu erstellen.

Rahmen:

Im Rahmen, alle die Kontrollfluss ist bereits vorhanden, und es gibt eine Reihe von vordefinierten weißen Flecken dass wir mit unserem Code ausfüllen . Ein Rahmenwerk ist normalerweise komplexer. Es definiert ein Skelett, bei dem die Anwendung definiert ihre eigenen Merkmale, um das Gerüst zu vervollständigen. Auf diese Weise wird Ihr Code vom Framework aufgerufen, wenn es angemessen ist. Der Vorteil ist, dass sich die Entwickler keine Gedanken darüber machen müssen, ob ein Entwurf gut ist oder nicht, sondern sich nur um die Implementierung domänenspezifischer Funktionen kümmern müssen.

Bibliothek, Framework und Ihre Code-Darstellung:

Library,Framework and your Code image relation

KeyDifference:

Der Hauptunterschied zwischen einer Bibliothek und einem Framework ist "Umkehrung der Kontrolle" . Wenn Sie eine Methode aus einer Bibliothek aufrufen, haben Sie die Kontrolle. Bei einem Framework ist die Kontrolle jedoch umgekehrt: der Rahmen ruft Sie auf . Quelle.

Verwandtschaft:

In beiden Fällen wurde eine API definiert, die von Programmierern verwendet werden kann. Man kann sich eine Bibliothek als eine bestimmte Funktion einer Anwendung vorstellen, ein Framework als das Skelett der Anwendung, und eine API ist das Verbindungsglied, das diese beiden Komponenten zusammenfügt. Ein typischer Entwicklungsprozess beginnt in der Regel mit einem Framework, und die in den Bibliotheken definierten Funktionen werden über die API ausgefüllt.

276voto

Ian Boyd Punkte 232380

Sie rufen die Bibliothek an.

Framework ruft Sie an.


CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X