1 / 33

Frameworks

Frameworks. Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion. Frameworks – Definition.

zuzana
Download Presentation

Frameworks

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Frameworks • Allgemeines zu Frameworks • MVC-Pattern • Einordnung der MVC-Frameworks • Andere Frameworks • Diskussion Remo Bergmann

  2. 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

  3. Frameworks – Definition Vergleich: • Autos haben oft gleiches Fahrwerk, Motor, Getriebe • Dennoch: eigenständiges Design, Marketing, ... Remo Bergmann

  4. 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

  5. Frameworks – „White-Box“ • Hot Spots - Vorgesehene Eingriffspunkte • Aufwendige Wartung - Abhängigkeiten von Subklassen - Aufwärtskompatibilität sichern Remo Bergmann

  6. 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

  7. 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

  8. 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

  9. 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

  10. Frameworks – MVC-Pattern • MVC : „Model-View-Controller“ • Verbindung zwischen Anwendung und graphischer Oberfläche in Smalltalk80 • Trennung Präsentation/Programmierlogik Remo Bergmann

  11. 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

  12. 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

  13. Frameworks(MVC) – Einordnung Eigenschaften: • Anwendungssteuerung (aktions- und ereignisgesteuert) • View-Technologie • Komponenten • Behandlung des serverseitigen Zustand Remo Bergmann

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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

  27. Frameworks – Einordnung: Features • www.waferproject.org Remo Bergmann

  28. 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

  29. 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

  30. Frameworks – andere: Cocoon • Publishing Framework, wandelt je nach anfragenden Client ein XML-Formular ins entsprechende Format • Vortrag in 2 Wochen Remo Bergmann

  31. 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

  32. 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

  33. Frameworks – Diskussion • Wann ist der Einsatz von Frameworks sinnvoll? • Ereignis- oder aktionsorientierte MVC-Frameworks? Pro‘s? Contra‘s? Remo Bergmann

More Related