Frage

Was ist der Unterschied zwischen einem Rahmen und Bibliothek ?

Ich dachte immer, einer Bibliothek als eine Reihe von Objekten und Funktionen, die ein bestimmtes Problem konzentriert sich oder einen bestimmten Bereich der Anwendungsentwicklung (das heißt Datenbankzugriff) auf die Lösung; und einen Rahmen auf der anderen Seite als eine Sammlung von Bibliotheken auf einer bestimmten Methodik zentriert (das heißt MVC) und die deckt alle Bereiche der Anwendungsentwicklung.

War es hilfreich?

Lösung

Eigentlich können diese Begriffe eine Menge verschiedenen Dinge bedeuten je den Kontext sie verwendet werden.

Zum Beispiel auf Mac OS X-Frameworks sind nur Bibliotheken, zu einem Bündel verpackt. Im Bundle erhalten Sie eine tatsächliche dynamische Bibliothek (libWhatever.dylib) finden. Der Unterschied zwischen einer bloßen Bibliothek und Rahmen auf dem Mac ist, dass ein Rahmen mehr verschiedene Versionen der Bibliothek enthält. Es kann zusätzliche Ressourcen enthalten (Bilder, lokalisierten Strings, XML-Datendateien, UI-Objekte, etc.) und es sei denn, der Rahmen Öffentlichkeit freigegeben wird, enthält in der Regel die notwendigen H-Dateien Sie die Bibliothek verwenden müssen.

So haben Sie alles in einem einzigen Paket, das Sie die Bibliothek in Ihrer Anwendung verwenden müssen (eine C / C ++ / Objective-C-Bibliothek ohne H-Dateien ziemlich nutzlos ist, wenn man sie nicht selbst schreibt nach einiger Bibliothek Dokumentation), statt einer Reihe von Dateien zu bewegen, um (a Mac Bundle ist nur ein Verzeichnis auf der Unix-Ebene, aber die UI behandelt sie wie eine einzige Datei, ziemlich genau wie Sie JAR-Dateien in Java haben und wenn Sie darauf klicken, können Sie in der Regel don ‚t sehen, was drin ist, wenn Sie nicht ausdrücklich den Inhalt anzuzeigen) wählen.

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

  

Ein Software-Framework ist ein wiederverwendbarer   Entwurf für ein Software-System (oder   Teilsystem). Eine Software-Framework kann   Unterstützung Programme, Code   Bibliotheken, eine Skriptsprache, oder   andere Software, um die Entwicklung und   kleben, die verschiedenen Komponenten zusammen   ein Software-Projekt. Verschiedene Teile   des Rahmens ausgesetzt sein können,   über eine API ..

So würde ich sagen, eine Bibliothek ist nur, dass „eine Bibliothek“. Es ist eine Sammlung von Objekten / Funktionen / Methoden (je nach Sprache) und die Anwendung „Links“ dagegen und damit die Objekte / Funktionen / Methoden verwenden kann. Es ist im Grunde eine Datei wiederverwendbaren Code enthält, der in der Regel von mehreren Anwendungen gemeinsam genutzt werden kann (Sie müssen nicht den gleichen Code über schreiben und immer wieder).

kann ein Rahmen alles, was Sie in der Anwendungsentwicklung verwenden sein. Es kann eine Bibliothek, eine Sammlung von vielen Bibliotheken, eine Sammlung von Skripten, oder jede Software, die Sie benötigen, um Ihre Anwendung zu erstellen. Rahmen ist nur ein sehr vager Begriff.

Hier ist ein Artikel über einen Typen in Bezug auf das Thema „ Bibliothek vs. Rahmen ". Ich persönlich denke, dieser Artikel sehr fraglich ist. Es ist nicht falsch, was er dort zu sagen, aber er ist nur einer der vielen Definitionen von Rahmen Kommissionierung und vergleicht diese mit der klassischen Definition der Bibliothek. Z.B. er sagt, dass Sie einen Rahmen für die Unter classing müssen. "Ja wirklich?" Ich kann ein Objekt in einer Bibliothek definiert haben, kann ich dagegen verknüpfen und Unterklasse es in meinem Code. Ich sehe nicht, wie ich einen „Rahmen“ dafür brauchen. In gewisser Weise eher erklärt er, wie der Begriff Rahmen heutzutage verwendet wird. Es ist nur ein hyped Wort, wie ich schon sagte. Einige Unternehmen lassen Sie einfach eine normale Bibliothek (in jedem Sinne einer klassischen Bibliothek) und nennen es einen „Rahmen“, weil es mehr Phantasie klingt.

Andere Tipps

Bibliothek führt bestimmte, genau definierte Operationen.

A Rahmen ist ein Skelett in dem die Anwendung das „Fleisch“ der Operation definiert, durch das Skelett ausfüllen. Das Skelett noch Code hat die Teile zu verbinden, aber die wichtigste Arbeit wird durch die Anwendung durchgeführt.

Beispiele für Bibliotheken: Netzwerkprotokolle, Komprimierung, Bildmanipulation, string Dienstprogramme, regelmäßige Auswertung von Ausdrücken, math. Die Operationen sind in sich abgeschlossen.

Beispiele für Gerüste: Web-Anwendungssystem, Plug-in-Manager, GUI-System. Der Rahmen definiert den Begriff, aber die Anwendung definiert die grundlegende Funktionalität, die Endnutzern interessieren.

Ich denke, dass der Hauptunterschied besteht darin, dass die Rahmenbedingungen „ Hollywood Prinzip “, das heißt "folgen nicht rufen Sie uns an, wir rufen Sie an. "

Nach Martin Fowler :

  

Bibliothek ist im Wesentlichen eine Reihe von   Funktionen, die Sie anrufen können, diese   Tage in der Regel in Klassen organisiert.   Jeder Anruf hat einige Arbeit und kehrt   Kontrolle an den Client.

     

Rahmen verkörpert etwas abstrakt   Design, mit mehr Verhalten eingebaut.   Um es zu benutzen Sie müssen einfügen   Ihr Verhalten in verschiedenen Orten in   der Rahmen entweder durch Unterklassenbildung oder   indem Sie in Ihrer eigenen Klasse anschließen. Das   Rahmen des Code ruft dann den Code   an diesen Punkten.

Bibliothek:

Es ist nur ein Sammlung von Routinen (funktionalen Programmierung) oder Klassendefinitionen (objektorientierte Programmierung). Der Grund ist einfach Wiederverwendung von Code , das heißt, den Code bekommen, die von anderen Entwicklern bereits geschrieben wurde. Die Klassen oder Routinen normalerweise definieren bestimmte Operationen in einem domänenspezifischen Bereich . Zum Beispiel gibt es einige Bibliotheken der Mathematik, die Entwickler rufen Sie einfach die Funktion ohne Redo die Umsetzung, wie ein Algorithmus arbeitet lassen kann.

Framework:

Im Rahmen all Kontrollfluss ist schon da, und gibt es eine Reihe von vordefinierten weißen Flecken , wir sollten füllen Sie mit unserem Code . Ein Rahmen ist in der Regel komplexer. Es definiert ein Skelett, wo die Anwendung ihre eigenen Merkmale definiert das Skelett auszufüllen. Auf diese Weise wird Ihr Code durch den Rahmen, wenn in geeigneter Weise aufgerufen werden. Der Vorteil ist, dass die Entwickler brauchen nicht zu befürchten, wenn ein Design gut ist oder nicht, sondern nur um domänenspezifische Funktionen zu implementieren.

Bibliothek, Rahmen und Ihre Code Bilddarstellung:

Bibliothek, Framework und Ihr-Code Bild Beziehung

KeyDifference:

Der wesentliche Unterschied zwischen einer Bibliothek und einem Rahmen ist „Inversion of Control“ . Wenn Sie eine Methode aus einer Bibliothek aufrufen, haben Sie die Kontrolle. Aber mit einem Rahmen, wird die Steuerung umgekehrt: das Framework ruft Sie . Quelle.

Relation:

Beide definiert API, die verwendet wird, für Programmierer zu verwenden. Die zusammen zu setzen, können wir denken, eine Bibliothek als eine bestimmte Funktion einer Anwendung, ein Rahmen als das Gerüst der Anwendung und eine API ist Anschluss an denjenigen zusammen. Ein typisches Entwicklungsprozess beginnt in der Regel mit einem Rahmen, und die Funktionen in den Bibliotheken durch API definiert ausfüllen.

Sie rufen Bibliothek.

Rahmen ruft Sie.


  

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

Wie ich habe es immer beschrieben:

Eine Bibliothek ist ein Werkzeug.

Ein Framework ist eine Art und Weise des Lebens.

Eine Bibliothek können Sie verwenden, was winziger Teil Ihnen hilft. Ein Rahmen müssen Sie Ihr gesamtes Projekt zu übernehmen.

Ich mag Cohens Antwort, aber eine technische Definition ist: Ihr Code eine Bibliothek aufruft. Ein Framework ruft der Code . Zum Beispiel kann ein GUI-Framework ruft der Code durch ereignis Handler. Ein Web-Framework ruft der Code durch einige Request-Response-Modell.

Dies wird auch als Inversion of Control - plötzlich der Rahmen entscheidet, wann und wie Sie Code ausführen, anstatt umgekehrt wie bei Bibliotheken. Dies bedeutet, dass ein Rahmen auch einen viel größeren Einfluss darauf hat, wie Sie Ihren Code strukturieren müssen.

Von Web-Entwickler Perspektive:

  1. In der Bibliothek kann durch eine andere Bibliothek leicht austauschbar sein. Aber Rahmen kann es nicht.

    Wenn Sie nicht jquery Datumsauswahl Bibliothek mögen, können Sie mit anderen Datumsauswahl wie Bootstrap Datumsauswahl oder pickadate ersetzen kann.

    Wenn Sie nicht AngularJS mögen, auf dem Sie Ihr Produkt gebaut, können Sie nicht nur mit anderen Frameworks ersetzen. Sie haben Ihre gesamte Codebasis neu zu schreiben.

  2. Meistens Bibliothek dauert sehr weniger Lernkurve Frameworks verglichen. ZB: Underscore.js ist eine Bibliothek, ist Ember.js ein Framework

  3. .

ich vergessen, wo ich diese Definition sah, aber ich denke, es ist sehr schön.

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

kann ein Rahmen aus verschiedenen Bibliotheken hergestellt werden. Nehmen wir ein Beispiel nehmen.

Angenommen, Sie haben einen Fisch Curry kochen wollen. Dann brauchen Sie Zutaten wie Öl , Gewürze und andere Utilities . Sie müssen auch Fisch , die Ihre Basis ist Ihr Gericht vorzubereiten auf (Dies ist Daten Ihrer Anwendung). Alle Zutaten zusammen ein Rahmen genannt. Jetzt wirst du sie einzeln oder in Kombination verwenden, um Ihren Fisch-Curry zu machen, das ist die Endprodukt . Vergleichen Sie das mit einem Web-Framework , die aus gemacht wird Underscore.js , bootstrap.css , bootstrap.js fontawesome , AngularJS usw. ein Beispiel Twitter Bootstrap v.35 .

Nun, wenn man bedenkt, nur eine Zutat, wie sagen Öl . Sie können kein Öl Sie verwenden, weil dann wird es Ihre Fische (Daten) ruinieren. Sie können nur Olivenöl verwenden . Vergleichen Sie das mit Underscore.js . Nun, was Marke von Öl Sie verwenden möchten, bleibt Ihnen überlassen. Einige Schale wurde gemacht mit American Olivenöl (Underscore.js) oder Indian Olivenöl (lodash.js). Dies wird nur Geschmack Ihrer Anwendung ändern. Da sie fast gleichen Zweck dienen, hängt ihre Verwendung auf der Präferenz des Entwicklers und sie sind leicht austauschbar.

 image description hier


  

Rahmen : Eine Sammlung von Bibliotheken, die einzigartigen Eigenschaften und das Verhalten Ihrer Anwendung zur Verfügung stellen. (Alle Zutaten)

     

Bibliothek : Eine gut definierte Gruppe von Anweisungen, die einzigartigen Eigenschaften und das Verhalten auf Ihre Daten zur Verfügung stellen. (Öl auf Fisch)

     

Plugin : Ein Dienstprogramm baut für eine Bibliothek (ui-Router -> AngularJS) oder viele Bibliotheken in Kombination (Datumsauswahl -> bootstrap.css + jQuery), ohne das Plugin jetzt funktionieren könnte wie erwartet.


P. S. AngularJS ist ein MVC-Framework, sondern eine Bibliothek JavaScript. Weil ich glaube, Bibliothek erweitert Standardverhalten von nativen Technologie (JavaScript in diesem Fall).

Dies ist, wie ich daran denke (und haben von anderen gesehen rationalisiert):

Eine Bibliothek ist etwas im Code enthalten ist. Und ein Framework ist ein Container für Ihre Anwendung.

Hier ist ein , enthält aber eine gute Unterscheidung zwischen Werkzeugkästen, Bibliotheken, Frameworks und so

Eine Bibliothek implementiert Funktionalität für einen eng-scoped Zweck während eines Rahmen Unterstützung für ein breiteres Spektrum von Funktionen bieten eine Sammlung von Bibliotheken zu sein scheint. Zum Beispiel übernimmt die Bibliothek System.Drawing.dll Funktionalität zeichnet, ist aber nur ein Teil des gesamten .NET-Framework.

In der Bibliothek - Jeder Satz von Klassen oder Komponenten, die verwendet werden können, wie der Kunde hält fit eine bestimmte Aufgabe zu erfüllen
. Rahmen - Mandate bestimmte Richtlinien für Sie „Plug-in“ in etwas größer als Sie. Sie stellen lediglich die Stücke speziell für Ihre Anwendung / Anforderungen in einer veröffentlichten-erforderlichen Weise, so dass

‚die framwework kann Ihr Leben einfach machen‘

Bibliotheken sind für einfache Bedienung und efficiency.You kann zum Beispiel sagen, dass Zend Bibliothek hilft uns, verschiedene Aufgaben mit seinen gut definierten Klassen zu erreichen und functions.While ein Rahmen ist etwas, das in der Regel erzwingt eine bestimmte Art und Weise, eine Lösung zu implementieren, wie MVC (Model-view-Controller) (Referenz) . Es ist ein gut definiertes System für die Verteilung von Aufgaben wie in MVC.Model enthält Datenbankseite, Ansichten sind für UI-Schnittstelle und Controller sind für Business-Logik.

Ich glaube, Sie recht gut, den Unterschied festgenagelt: der Rahmen einen Rahmen bietet, in dem wir unsere Arbeit tun ... Irgendwie es mehr „Zwang“ als eine einfache Bibliothek ist
. Der Rahmen soll auch die Konsistenz zu einem Satz von Bibliotheken hinzuzufügen.

Ich denke, Bibliothek eine Reihe von Dienstprogrammen ist ein Ziel (zum Beispiel Steckdosen, Kryptographie, usw.) zu erreichen. Framework ist Bibliothek + RUNTIME EINVIRONNEMENT. Zum Beispiel ist ASP.NET ein Framework: es HTTP-Anfragen akzeptiert, Seite Objekt erstellen, rufen Sie lyfe cicle Veranstaltungen usw. Rahmen hat das alles, schreiben Sie ein wenig Code, der zu einem bestimmten Zeitpunkt des Lebenszyklus ausgeführt werden soll von aktuelle Anfrage!

Wie auch immer, sehr interestering Frage!

Ich erinnere mich, dont die Quelle dieser Antwort (Ich glaube, ich fand es in einem .ppt im Internet), aber die Antwort ist ganz einfach.

Eine Bibliothek und ein Rahmen ist eine Reihe von Klassen, Module und / oder Code (abhängig von der Programmiersprache), die in Anwendungen verwendet werden kann, und helfen Ihnen, ein especific „Problem“ zu lösen.

kann Dieses Problem werden einloggen oder debug Informationen in einer Anwendung, zeichnen Diagramme erstellen zu einer Datenbank, erstellen Sie einen Teil einer Anwendung oder einer vollständigen Anwendung oder ein Code, um eine bestimmte Datei-Format (html, pdf, xls), verbinden Angewandt auf ein Entwurfsmuster rel="nofollow">

Sie können ein Framework oder eine Bibliothek all diese Probleme und vieles mehr, normaly die Rahmenbedingungen zu lösen hilft Ihnen, komplexere oder größere Probleme zu lösen, sondern dass ein consecuence ihrer Hauptunterschied, kein Haupt Definition für beide.

  

Der Hauptunterschied betwen eine Bibliothek und ein Framework ist die Abhängigkeit betwen ihren eigenen Code, in oder Worte einen Rahmen verwenden Sie   müssen fast alle Klassen, Module oder Code in der FW verwenden, aber zu   verwenden, um eine Bibliothek Sie eine oder wenige Klassen, Module oder Code in das verwenden können,   in Ihrer eigenen Anwendung lib

Das bedeutet, dass, wenn ein Rahmen hat, zum Beispiel gibt es insgesamt 50 Klassen, um den Rahmen in einer Anwendung, die Sie verwenden müssen, verwenden, lassen Sie sagten, 10-15 oder mehr Klassen in Ihrem Code, weil das ist, wie ein ausgelegt ist Rahmen, einige Klassen (Objekte dieser Klassen) sind Eingänge / Parameter für Methoden in anderen Klassen im Rahmen. Siehe das .NET Framework, Spring, oder einen MVC-Framework.

Aber zum Beispiel einer Protokollbibliothek können Sie nur eine Log-Klasse in Ihrem Code verwenden, und helfen Ihnen, das „Protokollierung Problem“ zu lösen, das bedeutet nicht, dass die Log-Bibliothek nicht mehr Klassen in seinem Code hat , wie Klassen-Dateien zu verarbeiten, handhaben Bildschirmausgaben oder sogar Datenbanken, aber man kann nie touch / Einsatz, die Klassen in Ihrem Code, und das ist der Grund, warum eine Bibliothek und keinen Rahmen.

Und auch gibt es mehr Kategorien als Frameworks und Bibliotheken, aber das ist off topic.

Ihre Interpretation klingt für mich ziemlich gut ... A Bibliothek könnte alles sein, das und kompiliert für die Wiederverwendung in anderen Code in sich geschlossene, gibt es buchstäblich keine Beschränkung auf den Inhalt.

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.

scroll top