Welche Vor- und Nachteile hat die Verwendung eines Web-Frameworks? [geschlossen]

16

Diese Frage konzentriert sich auf die Ermittlung der Vor- und Nachteile der Verwendung von webbasierten Frameworks (z. B. Cake PHP, Zend, jQuery, ASP.NET). Diese Frage ist völlig sprachunabhängig . Lassen Sie mich mit dem Begriff "Auf den Schultern der Riesen stehen " beginnen.

Vorteile:

  • Ermöglicht Entwicklern die Integration komplexerer Funktionen in ihre Websites, indem Funktionen verwendet werden, für die zuvor Hunderte von Codezeilen erforderlich waren, und diese in einem einfachen Funktionsaufruf komprimiert werden.
  • Ermöglichen Sie eine schnellere Entwicklung von Anwendungen - dies ist sehr relevant für Personen, die Websites benötigen, die in einem sehr kleinen Fenster erstellt wurden (hat jemand Beispiele dafür?)
  • Niedrigere Kosten - ermöglicht es Programmierern, Kosteneinsparungen an den Kunden weiterzugeben. Dies ist eine völlig neue Gruppe von Kunden, die eine Website wünschten, sich jedoch zuvor die höheren Entwicklungskosten nicht leisten konnten.

Nachteile:

  • Lost Understanding - Wenn sich ein Entwickler auf die Funktionen eines Frameworks verlässt, besteht die Gefahr, dass er das Verständnis für die Funktionsweise (unter der Haube) verliert.
  • Die Konfigurationsklippe - Sobald Sie die Konfiguration Ihres Frameworks überschreiten, sinkt Ihre Produktivität sofort. Es kann schwierig sein, Funktionen außerhalb einer Framework-Konfiguration zu implementieren.
  • Entwickler-Fahrgassen - Sie (der Entwickler) müssen die Dinge so tun, wie der Entwickler möchte, dass Sie die Dinge tun.

Ich frage mich, was die Leute von meinen Punkten halten und ob jemand mit ihnen nicht einverstanden ist. Auch wenn Leute zusätzliche Punkte haben wäre ich dankbar.

JHarley1
quelle

Antworten:

12

Hier ist das Fazit: Es kann schwierig sein, Funktionen außerhalb einer Framework-Konfiguration zu implementieren.

Lassen Sie uns diese Annahme nach der anderen durchgehen.

Lost Understanding - Wenn sich ein Entwickler auf die Funktionen eines Frameworks verlässt, besteht die Gefahr, dass er das Verständnis für die Funktionsweise (unter der Haube) verliert.

Falsch. Sie werden nie das Verständnis verlieren, wie Dinge funktionieren. Frameworks sind nicht magisch. Es handelt sich nur um handlichen Code, den Sie nicht selbst schreiben müssen.

Ob Sie es glauben oder nicht, mit dem Framework werden Sie Fehler machen. Sie müssen das Debuggen bis auf die unterste Ebene von HTTP durchführen, um zu verstehen, was Sie falsch gemacht haben.

Sie werden nie aus den Augen verlieren, was unter der Haube vor sich geht. Es sei denn, Ihr Framework ist so episch und perfekt, dass Sie nie ein Problem haben.

Die Konfigurationsklippe - Sobald Sie die Konfiguration Ihres Frameworks überschreiten, sinkt Ihre Produktivität sofort. Es kann schwierig sein, Funktionen außerhalb einer Framework-Konfiguration zu implementieren.

Das macht wenig Sinn.

Zuerst. Das Bauen ohne Framework kann eine einfache Aufgabe in eine große Programmieraufgabe verwandeln, die Unit-Test, Debugging, Diagnose, Konfigurationskontrolle und all die anderen wertlosen Arbeiten zur Neuerfindung der im Framework enthaltenen Elemente umfasst. Wie ist das "Produktivität"?

Zweite. Das Implementieren von Dingen außerhalb des Frameworks ist immer eine Menge Arbeit, weil das Implementieren von Dingen außerhalb eines Frameworks immer eine Menge Arbeit ist. Es hat nichts mit dem Zeitaufwand für das Lernen und Konfigurieren des Frameworks zu tun. Die Implementierung außerhalb des Frameworks ist von Natur aus schwierig.

Entwickler-Fahrgassen - Sie (der Entwickler) müssen die Dinge so tun, wie der [Framework] -Entwickler möchte, dass Sie die Dinge tun.

Richtig. Und das ist oft gut so. Eine konsequente Vorgehensweise ist wertvoller als eine persönliche Vorgehensweise. Es kann "Lernen" und "Verstehen" erfordern, aber diese haben Wert.

Sicherheitsprobleme - Die Bereitstellung dieser Tools für die schnelle Entwicklung professionell aussehender Websites ist ein potenzielles Risiko. Benutzer können schnell professionell aussehende Websites für betrügerische Unternehmen erstellen.

Was? Das hat nichts mit dem Framework zu tun. Betrug ist Betrug, unabhängig von den verwendeten Tools.

S.Lott
quelle
3
In Bezug auf "Lost Understanding" stimme ich Ihnen nicht zu. Wenn Sie sich jQuery als Beispiel nehmen, müssen Sie sich nur die Dutzenden von Fragen zu Stack Overflow ansehen, bei denen es offensichtlich ist, dass der Fragesteller nicht zwischen jQuery, JavaScript und dem DOM unterscheiden kann.
RoToRa
5
@RoToRa: Wenn Sie sich ein bestimmtes Thema zu SO (dh C-Programmierung) ansehen, werden Sie eine große Anzahl von Leuten sehen, die nicht herausfinden können, was los ist. In der Tat verstehen manche Menschen nicht einmal, was eine Gleitkommazahl ist. Ich denke nicht, dass es der Rahmen ist. Ich denke, es gibt einige Leute, die nur begrenzte Fähigkeiten haben, die Technologie zu verstehen.
S.Lott
Wirklich gute Punkte, Scott. Sie haben eine Reihe von Problemen hervorgehoben. Mein Punkt war mit Frameworks und Betrug war es, eine professionell aussehende Website schnell zu entwickeln, aber es war meilenweit vom Thema entfernt (guter Punkt).
JHarley1
@ JHarley1: "aber es war meilenweit vom Thema entfernt". Sie können die Frage aktualisieren, um das zu beheben.
S.Lott
1
"Lost Understanding" setzt voraus, dass die Leute verstehen, was passiert, wenn sie zB einfaches Java verwenden. Aber Java selbst macht viele Dinge unter der Haube, und tatsächlich können Sie nicht genau wissen, was auf einer niedrigen Ebene passiert, es sei denn, Sie wissen genau, welche JVM auf welcher Plattform verwendet wird. Aber sich nicht mit solchen Details zu befassen, ist einer der Vorteile solcher Sprachen, und dasselbe kann über Frameworks gesagt werden.
user281377
3

Con: Eventuell möglicher Rückgang der Unterstützung / Verlust der Popularität

  • Wenn es zwei Web-Frameworks gibt, die im Grunde genommen dasselbe tun und Ihr Framework nicht gewinnt, besteht die Möglichkeit, dass das Projekt abstirbt. In dieser Situation bleibt es Ihnen überlassen, das Framework selbst zu verwalten (Open Source), die Anwendung neu zu schreiben oder ohne Updates fortzufahren (Closed Source).
  • Je nach Framework müssen Sie möglicherweise ein Upgrade Ihrer Anwendung mit dem Release-Zeitplan des Frameworks durchführen. Wenn Sie zu weit zurückfallen, haben Sie möglicherweise keinen Anspruch auf Unterstützung. Ohne Rahmen können Sie nach Ihrem Zeitplan arbeiten. (Dies hängt davon ab, ob Sie Unterstützung benötigen oder nicht).

Pro: Code für das Geschäft

  • Mit Frameworks können Sie sich keine Gedanken über die Arbeit machen und sich auf Code konzentrieren, der dem Unternehmen einen direkten Mehrwert bringt.
  • Manchmal können Sie Framework-Upgrades (die nur funktionieren) so einrichten, dass Sie Ihren Benutzern praktisch "kostenlos" neue Funktionen zur Verfügung stellen. Insbesondere bei Frameworks mit benutzerdefinierten Steuerelementen (z. B. einem Raster, das in der neuen Version möglicherweise eine Art Such- / Filterfunktion bietet).
Ryan Hayes
quelle
Prost Ryan, hier gibt es einige gute Punkte. Ich habe nie gedacht, dass das Framework fallen gelassen wird.
JHarley1
Kann ich bitte ein Feedback zu der Ablehnung bekommen?
Ryan Hayes
Ich fand es nützlich - ich habe abgestimmt.
JHarley1
3

Vorteile

  • Schnellere Entwicklungszeit
  • Weniger Bugs
  • Schnellere gemeinsame Entwicklung
  • Bibliotheksunterstützung
  • Einfache DB-Interaktion

Nachteile

  • "Eingepackt" in das Framework
  • Oft unflexibel, wenn das Kernverhalten erweitert oder geändert werden soll
  • "Errors of Doom" - Fehler, die sich aus dem Kern oder der zugrunde liegenden Architektur ergeben, ohne dass eine Rückverfolgung möglich ist, woher sie stammen. Ein perfektes Beispiel sind Frühlingsfehler bei der Verwendung von Grails.

Ich befürworte die Verwendung von Frameworks für alle außer den einfachsten Projekten. Wenn Sie einer vorhandenen HTML-Site ein Kontaktformular hinzufügen möchten, können Sie eine PHP-Datei verwenden, anstatt in ein Framework zu wechseln.

Josh K
quelle
2

Ein paar Dinge, die mir einfallen, sind ...

Vorteile

  • Wiederverwendung von Code - Durch die Verwendung eines Frameworks wird Code wiederverwendet, der getestet und wahr ist.
  • Schnelle Entwicklung / Prototyping.
  • (oft) integrierte Eingabevalidierung, von der angenommen werden kann, dass sie sicher ist (vorausgesetzt, der Entwickler verwendet sie richtig)

Nachteile

  • Verlust der Unterstützung. Ich denke hier an Symfony 1.4. Ich stelle mir vor, dass Symfony 1.4 für einige Zeit unterstützt, aber da 2.0 nicht abwärtskompatibel ist, scheint 1.4 in den kommenden Jahren eine Sackgasse für die Unterstützung zu sein.
  • Overhead; Durch die Verwendung eines Frameworks führen Sie Tausende von Zeilen aus, die möglicherweise nicht für Ihre spezifische Anwendung, sondern für andere gelten. Einige halten dies für einen vernünftigen Kompromiss, und andere entscheiden sich dafür, ihren Code von Grund auf für die Leistung zu schreiben.
  • Verwenden Sie das falsche Framework für Ihre spezifischen Anforderungen. Nicht alle Frameworks werden gleichermaßen erstellt.
Craige
quelle
1

Es hängt alles von dem verwendeten Framework ab.

Wenn Sie ASP.NET verwenden, sind Sie im Nachteil: Es ist im besten Fall eine undichte Abstraktion , und im schlimmsten Fall ist es schwierig, Dinge zu tun, die in anderen Frameworks trivial sind, die die Tatsache, dass Sie es sind, nicht verbergen Arbeiten im Web.

ASP.NET MVC versucht, dieses Problem zu beheben, und das funktioniert auch.

Es gibt Frameworks, mit denen wir mehr Zeit für die Erledigung von Arbeiten und weniger für den Gerüstbau aufwenden können. In dieser Hinsicht sehe ich keine Nachteile, es sei denn, Sie möchten wirklich Zeit damit verbringen, Gerüste zu bauen.

George Stocker
quelle
Sie sehen, mein Problem mit ASP.NET MVC war, dass ich einige Konzepte verlernen und Dinge tun musste, die mir die ASP.NET MVC Zeit gekostet hat. Vielleicht könnte man sagen, ein Nachteil eines Frameworks wäre ein Rückgang der Produktivität, während Sie sich damit auseinandersetzen.
JHarley1
1

Ich möchte einige Punkte hinzufügen.

  • Eines der größten Probleme mit Frameworks, die ich finde, ist, dass die Leute aufhören zu denken. Sie möchten das Framework nur verwenden, weil es cool ist oder weil sie das Framework immer verwenden. Sie hören nicht auf zu überlegen, ob der Gebrauch gerechtfertigt ist.
  • Lizenzierung, Leute scheinen nur Frameworks zu verwenden, ohne sich wirklich mit der Lizenzierung zu befassen. Dies könnte Auswirkungen haben, die sie nicht wahrnehmen. Oder überlegen Sie, was passiert, wenn sich die Lizenz ändert.
  • Zu viel von der gleichen Art von Frameworks verwenden. Manchmal kann es eine Menge Frameworks geben, die genau dasselbe tun. Als Unternehmen treffen Sie fundierte Entscheidungen und haben nicht für jedes Projekt einen anderen Rahmen.
  • Mit neuen Versionen Schritt zu halten könnte eine Herausforderung sein

Dennoch denke ich, dass es sich lohnt, ein wenig mehr Aufwand zu betreiben, um Frameworks zu bewerten, die Lizenzen zu bewerten, eine saubere Liste der Frameworks pro Verwendung zu führen und eine intelligente Versionsstrategie zu haben, wenn Sie die Vorteile in Betracht ziehen.

Vorteile:

  • Wenn Sie konsequent Frameworks verwenden, verkürzt sich die Lernzeit für Projekte für Personen, die bereits an Ihren Projekten gearbeitet haben.
  • Ihre eigene schnellere Entwicklung
  • Ihre eigenen Entwickler befähigen
KeesDijk
quelle
@Keedijk: Ich habe noch nie über Lizenzen nachgedacht. Gibt es Beispiele für kostenpflichtige Frameworks?
JHarley1
@ JHarley1 oakleafsd.com Ich weiß nicht, dass ich es als "Web-Framework" bezeichnen würde, aber Mere Mortals .NET verfügt über Erweiterungen, mit denen Sie Webanwendungen schneller erstellen können. Das .NET Framework selbst macht den größten Teil dieses Frameworks jedoch überflüssig.
Ryan Hayes
@JHarley Ich habe in meiner Antwort vielleicht ein bisschen zu viel verallgemeinert, aber ich dachte über Dinge wie telerik webcontrols oder itext itextpdf.com/terms-of-use/index.php nach . Ich habe auch bei einem Unternehmen gearbeitet, bei dem die Änderung der ExtJ-Lizenz ein Problem war. Sencha.com/forum/showthread.php?33096-License-Change
KeesDijk
-2

Ich spreche aus eigener Erfahrung in den letzten 13 Jahren. In meiner Firma haben wir Streben verwendet, nach einer kurzen Kurve war es toll. In meinem nächsten haben wir eine Architektur verwendet, die größtenteils undurchsichtig, etwas strebenartig, aber gewachsen war. Wir konnten sie erweitern, aber der Kerncode bestand nur aus Gläsern. Und so weiter. in den letzten 3 jahren haben wir in einer kleinen firma gearbeitet (anzahl der dev <30) und es waren alle unsere eigenen jsps, servlets und ejbs. Mit Blick auf unsere zahlreichen Kunden und die Wiederholung von JSPs sollte 2012 ein J2EE-Filter erstellt werden, der 20% der Struts2 nachahmt. Warum nicht Stuts 2 verwenden? Ich wünschte, wir hätten es aber: unser Chefarchitekt könnte es nicht passieren; nicht genug Erfahrung oder Zeit.

Wir hatten also einige gängige JSPs, die unser Mini-Framework verwendete. Jetzt, wenn ich die Zeit hatte, durch ein Buch von Struts 2 zu gehen, sehe ich, dass wir so viel vermisst haben!

Wir verwenden einige großartige Algorithmen und Caches und die Benutzeroberfläche, haben aber viele Stunden verloren und sind mit viel Code belastet, sodass wir einen 3-Jahres-Plan haben, in den Ruhestand zu treten.

tgkprog
quelle