Antworten:
Ich bin sehr spät, um es zu beantworten. Aber ich möchte ein Beispiel nennen, an das ich heute nur gedacht habe. Wenn ich dir sagen würde, du sollst ein Stück Papier mit den Maßen 5 x 5 m schneiden, dann würdest du das sicherlich tun. Angenommen, ich bitte Sie, 1000 gleich große Papierstücke zu schneiden. In diesem Fall werden Sie die Messung nicht 1000 Mal durchführen. Natürlich würden Sie einen Rahmen von 5 x 5 m erstellen und dann mit dessen Hilfe 1000 Stück Papier in kürzerer Zeit schneiden können. Sie haben also ein Framework erstellt, das eine bestimmte Art von Aufgabe erledigt. Anstatt immer wieder denselben Aufgabentyp für denselben Anwendungstyp auszuführen, erstellen Sie ein Framework, das alle diese Funktionen in einem schönen Paket zusammenfasst und somit die Abstraktion für Ihre Anwendung und vor allem für viele Anwendungen bereitstellt.
Technisch brauchen Sie kein Framework. Wenn Sie eine wirklich sehr einfache Website erstellen (denken Sie an das Web von 1992), können Sie dies alles mit fest codiertem HTML und etwas CSS tun.
Und wenn Sie ein modernes Webapp machen wollen, müssen Sie nicht wirklich brauchen einen Rahmen dafür zu verwenden, auch nicht .
Sie können stattdessen jedes Mal die gesamte Logik schreiben, die Sie selbst benötigen. Sie können Ihre eigene Datenpersistenz- / Speicherschicht schreiben oder - wenn Sie zu beschäftigt sind - einfach benutzerdefiniertes SQL für jeden einzelnen Datenbankzugriff schreiben. Sie können Ihre eigenen Authentifizierungs- und Sitzungsbehandlungsschichten schreiben. Und Ihre eigene Template-Rending-Logik. Und Ihre eigene Ausnahmehandlungslogik. Und Ihre eigenen Sicherheitsfunktionen. Und Ihr eigenes Unit-Test-Framework, um sicherzustellen, dass alles einwandfrei funktioniert. Und deine eigene ... [geht ziemlich lange weiter]
Wenn Sie jedoch ein Framework verwenden , können Sie von der guten, normalerweise von Experten geprüften und sehr gut getesteten Arbeit von Dutzenden, wenn nicht Hunderten anderer Entwickler profitieren, die möglicherweise besser sind als Sie. Sie können schnell das erstellen, was Sie möchten, ohne Zeit damit verbringen zu müssen, sich um die oben aufgeführten Infrastrukturelemente zu kümmern.
Sie können in kürzerer Zeit mehr erledigen und wissen, dass der von Ihnen verwendete oder erweiterte Framework-Code sehr wahrscheinlich besser ausgeführt wird als alles selbst.
Und die Kosten dafür? Zeit investieren, um das Framework zu lernen. Aber - wie praktisch jeder Webentwickler da draußen bezeugen wird - es lohnt sich auf jeden Fall, zu lernen, um massive (wirklich, massive) Vorteile aus der Verwendung eines beliebigen Frameworks zu ziehen.
Die Zusammenfassung bei Wikipedia (Software Framework) (erster Google-Hit übrigens) erklärt es ganz gut:
Ein Software-Framework in der Computerprogrammierung ist eine Abstraktion, bei der allgemeiner Code, der allgemeine Funktionen bereitstellt, durch Benutzercode, der bestimmte Funktionen bereitstellt, selektiv überschrieben oder spezialisiert werden kann. Frameworks sind insofern ein Sonderfall von Softwarebibliotheken, als sie wiederverwendbare Abstraktionen von Code sind, die in eine genau definierte API (Application Programming Interface) eingebunden sind. Sie enthalten jedoch einige wichtige Unterscheidungsmerkmale, die sie von normalen Bibliotheken trennen.
Software-Frameworks verfügen über folgende Unterscheidungsmerkmale, die sie von Bibliotheken oder normalen Benutzeranwendungen trennen:
- Umkehrung der Kontrolle - In einem Framework wird der Kontrollfluss des gesamten Programms im Gegensatz zu Bibliotheken oder normalen Benutzeranwendungen nicht vom Aufrufer, sondern vom Framework vorgegeben. [1]
- Standardverhalten - Ein Framework hat ein Standardverhalten. Dieses Standardverhalten muss tatsächlich ein nützliches Verhalten sein und darf keine Reihe von No-Ops sein.
- Erweiterbarkeit - Ein Framework kann vom Benutzer in der Regel durch selektives Überschreiben erweitert oder durch Benutzercode spezialisiert werden, der bestimmte Funktionen bereitstellt.
- Nicht modifizierbarer Framework-Code - Der Framework-Code darf im Allgemeinen nicht geändert werden. Benutzer können das Framework erweitern, aber seinen Code nicht ändern.
Sie "brauchen" es möglicherweise, weil es Ihnen eine großartige Verknüpfung bei der Entwicklung von Anwendungen bietet, da es viele bereits geschriebene und getestete Funktionen enthält. Der Grund ist dem Grund ziemlich ähnlich, warum wir Softwarebibliotheken verwenden.
Viele gute Antworten bereits, aber lassen Sie mich sehen, ob ich Ihnen einen anderen Standpunkt geben kann.
Wenn Sie die Dinge ein wenig vereinfachen, können Sie ein Framework als eine Anwendung anzeigen, die bis auf die eigentliche Funktionalität vollständig ist. Sie schließen die Funktionalität und PRESTO! Sie haben eine Bewerbung.
Stellen Sie sich beispielsweise ein GUI-Framework vor. Das Framework enthält alles, was Sie zum Erstellen einer Anwendung benötigen. In der Tat können Sie oft trivial eine minimale Anwendung mit sehr wenigen Quellzeilen erstellen, die absolut nichts bewirkt - aber Sie erhalten Fensterverwaltung, Unterfensterverwaltung, Menüs, Schaltflächenleisten usw. Das ist die Framework-Seite der Dinge. Indem Sie Ihre Anwendungsfunktionalität hinzufügen und an den richtigen Stellen im Framework "einstecken", verwandeln Sie diese leere App, die nur Fensterverwaltung usw. ausführt, in eine echte, vollständige Anwendung.
Es gibt ähnliche Arten von Frameworks für Web-Apps, für serverseitige Apps usw. In jedem Fall stellt das Framework (hoffentlich) den Großteil des langwierigen, sich wiederholenden Codes bereit, während Sie die eigentliche Problemdomänenfunktionalität bereitstellen. (Dies ist das Ideal. In Wirklichkeit ist der Erfolg des Frameworks natürlich sehr unterschiedlich.)
Ich betone noch einmal, dass dies die vereinfachte Sichtweise eines Frameworks ist. Ich verwende keine beängstigenden Begriffe wie "Inversion of Control" und dergleichen, obwohl in den meisten Frameworks solche beängstigenden Konzepte integriert sind. Da Sie ein Anfänger sind, dachte ich, ich würde Ihnen den Jargon ersparen und mit einem einfachen Gleichnis gehen.
Ich bin mir nicht sicher, ob es eine eindeutige Definition von "Framework" gibt. Manchmal wird eine große Anzahl von Bibliotheken als Framework bezeichnet, aber ich denke, die typische Verwendung des Wortes kommt der Definition von aioobe näher.
Dieser sehr schöne Artikel fasst den Unterschied zwischen nur einer Reihe von Bibliotheken und einem Framework zusammen:
Ein Framework kann als eine Reihe von Bibliotheken definiert werden, die sagen: "Rufen Sie uns nicht an, wir rufen Sie an."
Wie hilft Ihnen ein Framework? Denn anstatt etwas von Grund auf neu zu schreiben, erweitern Sie einfach eine bestimmte, funktionierende Anwendung. Auf diese Weise erhalten Sie viel Produktivität - manchmal kann die resultierende Anwendung weitaus aufwändiger sein, als Sie es im gleichen Zeitraum alleine hätten tun können -, aber Sie handeln normalerweise mit viel Flexibilität.
Eine einfache Erklärung lautet: Ein Framework ist ein Gerüst, um das Sie Anwendungen erstellen können.
Ein Framework bietet im Allgemeinen einige Basisfunktionen, die Sie verwenden und erweitern können, um komplexere Anwendungen zu erstellen. Es gibt Frameworks für alle möglichen Dinge. Das Microsoft MVC Framework ist ein gutes Beispiel dafür. Es bietet alles, was Sie benötigen, um mithilfe des MVC-Musters von der Website des Bodenbaus zu gelangen. Es verarbeitet Webanfragen, Routen und dergleichen. Sie müssen lediglich "Controller" implementieren und "Ansichten" bereitstellen, zwei Konstrukte, die vom MVC-Framework definiert werden. Das MVC-Framework übernimmt dann das Aufrufen Ihrer Controller und das Rendern Ihrer Ansichten.
Vielleicht nicht die beste Formulierung, aber ich hoffe, es hilft
Auf der untersten Ebene ist ein Framework eine Umgebung, in der Sie eine Reihe von Tools erhalten, mit denen Sie arbeiten können
Diese Tools werden in Form von Bibliotheken, Konfigurationsdateien usw. geliefert.
Diese sogenannte "Umgebung" bietet Ihnen die Grundeinstellungen (Fehlerberichte, Protokolldateien, Spracheinstellungen usw.), die geändert, erweitert und erweitert werden können.
Die Menschen brauchen eigentlich keine Frameworks, es geht nur darum, Zeit zu sparen, und andere sind nur eine Frage der persönlichen Vorlieben.
Die Leute werden rechtfertigen, dass Sie mit einem Framework nicht von Grund auf neu codieren müssen. Aber das sind nur Leute, die Bibliotheken mit Frameworks verwechseln.
Ich bin hier nicht voreingenommen, ich benutze gerade ein Framework.
Ein Framework bietet Funktionen / Lösungen für den jeweiligen Problembereich.
Definition aus dem Wiki :
Ein Software-Framework in der Computerprogrammierung ist eine Abstraktion, bei der allgemeiner Code, der allgemeine Funktionen bereitstellt, durch Benutzercode, der bestimmte Funktionen bereitstellt, selektiv überschrieben oder spezialisiert werden kann. Frameworks sind insofern ein Sonderfall von Softwarebibliotheken, als sie wiederverwendbare Abstraktionen von Code sind, die in eine genau definierte API (Application Programming Interface) eingebunden sind. Sie enthalten jedoch einige wichtige Unterscheidungsmerkmale, die sie von normalen Bibliotheken trennen.
Ein Framework hilft uns bei der Verwendung des "bereits erstellten", eine Metapher kann sein wie:
denke, dass Erdmaterial die Programmiersprache ist,
und zum Beispiel ist "eine Kamera" das Programm, und Sie haben beschlossen, ein Notizbuch zu erstellen. Sie müssen die Kamera nicht jedes Mal neu erstellen, sondern verwenden einfach das Erdgerüst (z. B. für einen Technologieladen). Nehmen Sie die Kamera und integrieren Sie sie in Ihr Notebook.
Ein Framework verfügt über einige Funktionen, die Sie möglicherweise benötigen. Möglicherweise benötigen Sie Arrays mit integrierten Sortiermechanismen. Oder Sie benötigen ein Fenster, in dem Sie einige Steuerelemente platzieren möchten, alles, was Sie in einem Framework finden können. Es ist eine Art ARBEIT, die einen RAHMEN um Ihre eigene Arbeit umfasst.
EDIT: OK, ich bin dabei zu graben, was ihr mir sagen wollt;) ihr habt vielleicht die Informationen zwischen den Zeilen "ARBEIT, die einen RAHMEN umspannt ..." nicht bemerkt, bevor dies tiefer und tiefer fällt. Ich versuche, ihm ein Wort zu geben, in der Hoffnung, dass Sie freundlich sind:
eine gute Erklärung für die Frage "Unterschied zwischen einer Bibliothek und einem Framework", die ich hier gefunden habe
http://ifacethoughts.net/2007/06/04/difference-between- a-Bibliothek-und-ein-Framework /
Über Definitionen hinaus, die manchmal nur verständlich sind, wenn Sie sie bereits verstehen, hat mir ein Beispiel geholfen.
Ich glaube, ich habe einen Anflug von Verständnis bekommen, als ich versucht habe, eine Liste in .Net zu sortieren. Ein Beispiel für ein Framework, das eine Funktionalität bereitstellt, die auf Benutzercode zugeschnitten ist und bestimmte Funktionen bietet. Nehmen Sie List.Sort (IComparer). Der Sortieralgorithmus, der sich in der Sortiermethode im .NET-Framework befindet, muss eine Reihe von Vergleichen durchführen. Kommt Objekt A vor oder nach Objekt B? Aber Sort selbst hat keine Ahnung, wie der Vergleich durchgeführt werden soll. das weiß nur der zu sortierende Typ. Sie konnten keinen Vergleichssortieralgorithmus schreiben, der von vielen Benutzern wiederverwendet werden kann, und alle verschiedenen Typen vorwegnehmen, zu deren Sortierung Sie aufgefordert werden. Sie müssen diese Arbeit dem Benutzer selbst überlassen. Hier ruft sort, auch bekannt als Framework, eine Methode im Benutzercode auf, wobei der Typ sortiert wird, damit der Vergleich durchgeführt werden kann. (Oder ein Delegat kann verwendet werden;
Habe ich das richtig verstanden?