48 Stimmen

Rahmenwerk vs. API

Dies mag eine dumme Frage sein, aber manchmal werden die Begriffe Framework und API synonym verwendet. So wie ich es sehe, ist ein Framework eine größere, allgemeinere Sache, die viele APIs enthält und für verschiedene Programmieraufgaben verwendet werden kann (z. B. das .NET Framework). Eine API ist kleiner und spezieller (z. B. die Facebook-API).

Und nehmen wir zum Beispiel an, dass Microsoft .NET als Framework bezeichnet, während Sun seine als Plattform bezeichnet ... könnte es also auch eine Geschäfts-/Marketingentscheidung sein, wie man eine "Sammlung von Bibliotheken" bezeichnet?

38voto

Stefano Ricciardi Punkte 2873

Entwurfsmuster die folgenden Definitionen vor:

  • Toolkits: "Häufig enthält eine Anwendung Klassen aus einer oder mehreren Bibliotheken mit vordefinierten Klassen, die Toolkits genannt werden. Ein Toolkit ist ein Satz zusammengehöriger und wiederverwendbarer Klassen, die nützliche, allgemein einsetzbare Funktionen bieten sollen.
  • Rahmenwerke: "Ein Framework ist ein Satz von zusammenarbeitenden Klassen, die ein wiederverwendbares Design für eine bestimmte Softwareklasse bilden".

Der Schlüssel dazu ist, dass Toolkits (APIs) zwar in vielen Bereichen nützlich sein können, Frameworks aber darauf ausgerichtet sind, Probleme zu lösen für spezifisch Klassen von Problemen, die "durch die Schaffung anwendungsspezifischer Unterklassen von abstrakten Klassen des Rahmens" angepasst werden können.

Außerdem, und das ist vielleicht noch wichtiger, "diktiert der Rahmen die Architektur Ihrer Anwendung": Inversion of Control ist eines der Merkmale von Frameworks (siehe Martin Fowler hierzu ); anstatt dass Ihre Anwendung bestimmte APIs aufruft, um ein bestimmtes Verhalten zu implementieren, ruft das Framework Ihren Code auf.

22voto

paxdiablo Punkte 809679

Ich habe immer gedacht, der Rahmen sei das Ganze, der interne Code, die APIs, usw.

Die API ist nur der Teil, den Sie verwenden, wenn Sie den Rahmen nutzen wollen.

Mit anderen Worten, das .NET-Framework besteht aus den .NET-Bibliotheken, allen Sprachen und so weiter. Die API ist nur die Art und Weise, wie Sie die Funktionen aufrufen.

16voto

VonC Punkte 1117238

Ein Rahmen führt den Begriff der Umkehrung der Steuerschuldnerschaft
(d.h. der gesamte Kontrollfluss des Programms wird nicht durch den Aufrufer, sondern durch den Rahmen vorgegeben)

Wenn Sie sich auf Folgendes beziehen Sprache Frameworks (wie z.B. Java Framework oder .Net Framework) mehr als nur Bibliotheken und deren APIs einbeziehen (was eine begrenzte Anzahl von Software-Rahmenwerk wenn diese Bibliotheken eine Umkehrung der Kontrolle ermöglichen).

Ein Language Framework umfasst die Entwicklungs- und Ausführungsumgebungen, die wird Ihren Code aufrufen (um sie zu kompilieren oder auszuführen).
Deshalb ist .Net Framework auch ein "Framework".


Java kann sich auf seine Frameworks (JDK, JRE) als eine " Java-Plattform ", um die Eigenschaft der "plattformunabhängigen" Programmiersprache zu betonen.

Von Über die Java-Technologie

Eine Plattform ist die Hardware- oder Softwareumgebung, in der ein Programm läuft. (einschließlich Microsoft Windows, Linux, Solaris OS und Mac OS).
Die meisten Plattformen lassen sich als eine Kombination aus Betriebssystem und zugrunde liegender Hardware beschreiben.
Die Java-Plattform unterscheidet sich von den meisten anderen Plattformen dadurch, dass es sich um eine reine Software-Plattform handelt, die auf anderen hardwarebasierten Plattformen läuft.

Die Java-Plattform besteht aus zwei Komponenten:

  • Die virtuelle Java-Maschine
  • Die Java-Anwendungsprogrammierschnittstelle (API)

Java Platform

9voto

mouviciel Punkte 64583

Wie der Name schon sagt (Application Programming Interface), ist die API nur die Schnittstelle des Frameworks.

6voto

mpen Punkte 253762

Nach meinem Verständnis ist eine API im Grunde eine Möglichkeit, eine Schnittstelle zu einer bestehenden Anwendung (wie Facebook) herzustellen, während ein Framework im Grunde ein Werkzeug ist, mit dem man seine eigene Anwendung von Grund auf aufbauen kann.

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