330 likes | 697 Views
Frameworks. Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion. Frameworks – Definition.
E N D
Frameworks • Allgemeines zu Frameworks • MVC-Pattern • Einordnung der MVC-Frameworks • Andere Frameworks • Diskussion Remo Bergmann
Frameworks – Definition „Ein Framework(Rahmenwerk) ist ein durch einen Software-Entwickler anpassbaresoder erweiterbares System kooperierender Klassen, die einen wiederverwendbarenEntwurf für einen bestimmten Anwendungsbereich implementieren.“(Balzert) Remo Bergmann
Frameworks – Definition Vergleich: • Autos haben oft gleiches Fahrwerk, Motor, Getriebe • Dennoch: eigenständiges Design, Marketing, ... Remo Bergmann
Frameworks – „White-Box“ • Wiederverwendung durch Vererbung - Programmieren statt Konfigurieren • Statisch - Konfiguration des Systems wird zur Übersetzungszeit bestimmt • Einfaches Design - Vererbung sehr flexibel - Unvorhergesehenes Remo Bergmann
Frameworks – „White-Box“ • Hot Spots - Vorgesehene Eingriffspunkte • Aufwendige Wartung - Abhängigkeiten von Subklassen - Aufwärtskompatibilität sichern Remo Bergmann
Frameworks – „Black-Box“ • Wiederverwendung durch Komposition - Konfigurieren statt Programmieren • Dynamisch - Konfiguration des Systems wird zur Laufzeit bestimmt • Einfache Wartung- weniger Abhängigkeiten • Komplexes Design - Konfiguration wenig flexibel- Gutes abschätzen der Änderbarkeiten notwendig Remo Bergmann
Frameworks – „White vs. Black“ • White-Box und Black-Box kaum noch in Reinform heut, meist Mischform aus beiden (Grey-Box) • White-Box Frameworks werden im Laufe der Zeit immer mehr zu Black-Box Frameworks-> je reifer ein Framework umso mehr Black-Box Komponenten sind enthalten Remo Bergmann
Frameworks – Vorteile • Höchsten Grad von Wiederverwendung • Kodifiziertes Wissen erfahrender Entwickler • Bessere Aufteilungen der Aufgaben im Team • Verbesserte Wartung • Höhere Produktivität • Kleinere Applikationen • Für viele Probleme schon Lösungen Remo Bergmann
Frameworks – Nachteile • Unüberschaubar viele Frameworks • Erfordern meist lange Einarbeitungszeit • Geringere Freiheiten • Frameworks später nicht oder schwer austauschbar und oft nicht ineinander integrierbar • Einsatz von Externen schlecht möglich Fazit: -> Diskussion Remo Bergmann
Frameworks – MVC-Pattern • MVC : „Model-View-Controller“ • Verbindung zwischen Anwendung und graphischer Oberfläche in Smalltalk80 • Trennung Präsentation/Programmierlogik Remo Bergmann
Frameworks – MVC im Internet Problem: HTTP • View kann nicht nach Bedarf aktualisiert werden • Client ist nicht wie gewohnt kontrollierbar View: HTML, JSP aber auch Scriptsprachen möglich Model: JavaBeans, EJBs (empfohlen) aber auch „normale“ Java Klassen möglich Remo Bergmann
Frameworks – MVC im Internet Controller: als Servlet organisiert, Controller kann hier allerdings nicht den View über Änderungen informieren • Einzige Möglichkeit für Benutzer: Refreshbutton des Browsers Fazit: Es geht Funktionalität des klassischen MVC‘s durch die Gegebenheiten des HTTP verloren! Remo Bergmann
Frameworks(MVC) – Einordnung Eigenschaften: • Anwendungssteuerung (aktions- und ereignisgesteuert) • View-Technologie • Komponenten • Behandlung des serverseitigen Zustand Remo Bergmann
Frameworks(MVC) – Aktionsgesteuert • Stärkere Orientierung an Besonderheiten von HTTP • Anwendungssteuerung durch Web-typisches Request/Response (Sun-Model 2) • Keine Aufteilung in Widgets, Methoden global definiert, Ursprung des Request betrifft immer ganze Seite Remo Bergmann
Beispiel (Model): public class UserDaten extends Bean { private String firstname = ""; public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } ... } Frameworks(MVC) – Aktionsgesteuert Remo Bergmann
Frameworks(MVC) – Aktionsgesteuert Beispiel (View): <jsp:useBean id=„User.Daten" scope="session„ class="user.Daten" /> <table border="0" cellpadding="4"> <tr> <td>Vorname:</td> <td><%= user.Daten.getFirstname() %></td> </tr> <tr> <td>Nachname:</td> <td><%= user.Daten.getSurname() %></td> </tr> </table> Remo Bergmann
Frameworks(MVC) – Aktionsgesteuert Beispiel (Controller): final class ActionDoEditierenPassword implements ActionHandler{ public void handleAction(String action, StateBean s, HttpServletRequest request, HttpServletResponse response) { UserState state = (UserState) s; state.setNavigation("editPassword"); } } Remo Bergmann
Frameworks(MVC) – Aktionsgesteuert Aktionsgesteuerte Frameworks: • Struts – fast schon Standard-Framework, Vortrag anschließend an diesen • Turbine – Votrag nächste Woche • WebWork – ähnlich zu Struts, dennoch distanziert in einigen Punkten, leider nicht so intensiv weiterenwickelt • Maverick – angeblich soll es die Besten Fähigkeiten von Struts, Webwork, Cocoon2 verbinden Remo Bergmann
Frameworks(MVC) – Ereignisgesteuert • Bestes Beispiel für Ereignissteuerung: Swing • Benutzeraktionen erzeugen Ereignisse (Mausclicks, Tastaturanschläge, ...) • Ereignisse lösen Methodenaufrufe aus • Webseite wird aus einzelnen Komponenten zusammengesetzt • Webseiten als Java-Klassen Remo Bergmann
Frameworks(MVC) – Ereignisgesteuert Beispiel: „Millstone – Hello World“ publicclass HelloWorld extends org.millstone.base.Application { publicvoid init() { Window main = new Window("Hello window"); setMainWindow(main); main.addComponent(new Label("Hello World!")); } } JavaScript und HTML wird vom Framework erzeugt! Remo Bergmann
Exkurs: MVC in Swing • Nutzt modifiziertes MVC • View und Controller wurden zusammengefasst, da Kommunikation zwischen View- und Controller-teil einer Komponente oft zu komplex war • Model-Delegate-Prinzip oder auch Model-View-Presenter • Programmieren wird übersichtlicher Remo Bergmann
Frameworks(MVC) – Ereignisgesteuert class CalculatorPanel extends SPanel implements ActionListener{ public CalculatorPanel(){ super(new SGridLayout(4)); f1=new STextField(); f2=new STextField(); f3=new STextField(); f3.setEnabled(false); add(f1);add(f2);add(f3); SButton but=new SButton("Add!"); add(but); but.addActionListener(this); } class CalculatorPanel extends JPanel implements ActionListener{ public CalculatorPanel(){ super(new GridLayout()); f1=new JTextField(); f2=new JTextField(); f3=new JTextField(); f3.setEnabled(false); add(f1);add(f2);add(f3); JButton but=new JButton("Add!"); add(but); but.addActionListener(this); } Swing Variante WingS Variante Remo Bergmann
Frameworks(MVC) – Ereignisgesteuert Andere ereignisgesteuerte Frameworks: • WebObjects Mitte 90ziger Jahre von Apple veröffentlicht • Echo keine Kenntnisse von JavaScript und HTML nötig • Tapestry => Vortrag nächste Woche Remo Bergmann
Frameworks(MVC) – View-Technologie • Generierung von HTML aus dem Framework Echo, WingS, Millstone (ereignisgesteuerte) • Templating-Technologie Tapestry, WebObjects... bei vielen lässt sich Templateframework verwenden (Struts, Turbine...) • Generierung von HTML durch Transformation Framework generiert XML unterstützt z.B. durch Struts, Millstone... • JSP (aktionsgesteuerte Frameworks) Remo Bergmann
Frameworks(MVC) – Komponenten • Meist nur in ereignisgesteuerten Framework zu finden • Struts Erweiterung „Tiles“ erlaubt Zusammenstellung von Seiten aus View-Komponenten • Grund: hohe Individualisierung von Webanwendungen, Unterstützung von Web- Technologien schlecht Remo Bergmann
Frameworks(MVC) – Serverseitiger Zustand • Optimal: Zustand nicht halten bevor User sich einloggt und dann möglichst gering! Frage an alle: Warum nicht vorher? • Ereignisgesteuerte Frameworks haben hier große Probleme, da sie meist ein Management erzwingen • Aktionsgesteuerte Frameworks überlassen alles weitgehend Programmierer Remo Bergmann
Frameworks – Einordnung: Features • www.waferproject.org Remo Bergmann
Frameworks – andere Frameworks Oftmals macht es Sinn mehrere Frameworks zu verwenden: z.B. Turbine mit Jetspeed • Templating Frameworks (Velocity) • XML Frameworks (Cocoon) • Portalframeworks (Jetspeed) • ... Remo Bergmann
Frameworks – andere: Velocity • Erzeugt Output: HTML, SQL, Postscript, Mails... • Vereinfacht Entwicklung des „Look and Feel“ der Anwendung • Benutzt einfache Scriptsprache • Als Komponente in MVC-Frameworks oder als Stand-alone-System Remo Bergmann
Frameworks – andere: Cocoon • Publishing Framework, wandelt je nach anfragenden Client ein XML-Formular ins entsprechende Format • Vortrag in 2 Wochen Remo Bergmann
Frameworks – andere: Jetspeed • Portale ähneln sich sehr, aber: Erstellung von Portalen enorm aufwendig -> darauf setzt Jetspeed • Im Idealfall Portale ohne eigentliche Programmierarbeit (Konfiguration von Inhalt) • Portalseite setzt sich aus Portlets (kleine Webbausteine) zusammen Remo Bergmann
Frameworks – Literaturhinweise • http://www.oio.de • http://www.waferproject.org • http://www.dynabean.de • Software&Support Verlag: Portale und Webappl. mit Apache FrameworksStruts Java Framework für Webanwendungen • Howard M. Lewis Ship: Tapestry in Action • diverse wissenschaftliche Arbeiten Remo Bergmann
Frameworks – Diskussion • Wann ist der Einsatz von Frameworks sinnvoll? • Ereignis- oder aktionsorientierte MVC-Frameworks? Pro‘s? Contra‘s? Remo Bergmann