33
27.05.04 Remo Bergmann 1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

Embed Size (px)

Citation preview

Page 1: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 1

Frameworks

Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

Page 2: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 2

Frameworks – Definition

„Ein Framework (Rahmenwerk) ist ein durch einen Software-Entwickler anpassbares oder erweiterbares System kooperierender Klassen, die einen wiederverwendbaren Entwurf für einen bestimmten Anwendungsbereich implementieren.“ (Balzert)

Page 3: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 3

Frameworks – Definition

Vergleich: Autos haben oft gleiches Fahrwerk, Motor, Getriebe Dennoch: eigenständiges Design, Marketing, ...

Page 4: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 5: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 5

Frameworks – „White-Box“

Hot Spots - Vorgesehene Eingriffspunkte Aufwendige Wartung - Abhängigkeiten von Subklassen - Aufwärtskompatibilität sichern

Page 6: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 7: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 8: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 9: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 10: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 10

Frameworks – MVC-Pattern

MVC : „Model-View-Controller“ Verbindung zwischen Anwendung und

graphischer Oberfläche in Smalltalk80 Trennung Präsentation/Programmierlogik

Page 11: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 12: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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!

Page 13: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 13

Frameworks(MVC) – Einordnung

Eigenschaften:

Anwendungssteuerung (aktions- und ereignisgesteuert)

View-Technologie Komponenten Behandlung des serverseitigen Zustand

Page 14: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 15: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 15

Frameworks(MVC) – Aktionsgesteuert

Beispiel (Model):

public class UserDaten extends Bean {private String firstname = "";public String getFirstname() {

return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; }...}

Page 16: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

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

Page 17: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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");

}

}

Page 18: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 19: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 20: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 20

Frameworks(MVC) – Ereignisgesteuert

Beispiel: „Millstone – Hello World“

public class HelloWorld extends org.millstone.base.Application {public void init() {

Window main = new Window("Hello window"); setMainWindow(main); main.addComponent(new Label("Hello World!"));

} }

JavaScript und HTML wird vom Framework erzeugt!

Page 21: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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 oderauch Model-View-Presenter

Programmieren wird übersichtlicher

Page 22: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 22

Frameworks(MVC) – Ereignisgesteuertclass 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);

}

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); }

Swing Variante WingS Variante

Page 23: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 23

Frameworks(MVC) – Ereignisgesteuert

Andere ereignisgesteuerte Frameworks:

WebObjectsMitte 90ziger Jahre von Apple veröffentlicht

Echokeine Kenntnisse von JavaScript und HTML nötig

Tapestry => Vortrag nächste Woche

Page 24: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 24

Frameworks(MVC) – View-Technologie

Generierung von HTML aus dem FrameworkEcho, WingS, Millstone (ereignisgesteuerte)

Templating-TechnologieTapestry, WebObjects...bei vielen lässt sich Templateframework verwenden (Struts, Turbine...)

Generierung von HTML durch TransformationFramework generiert XMLunterstützt z.B. durch Struts, Millstone...

JSP (aktionsgesteuerte Frameworks)

Page 25: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 26: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 27: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 27

Frameworks – Einordnung: Features

www.waferproject.org

Page 28: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

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

Page 29: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 30: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 30

Frameworks – andere: Cocoon

Publishing Framework, wandelt je nach anfragenden Client ein XML-Formular ins entsprechende Format

Vortrag in 2 Wochen

Page 31: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 32: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 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

Page 33: 27.05.04Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion

27.05.04 Remo Bergmann 33

Frameworks – Diskussion

Wann ist der Einsatz von Frameworks sinnvoll?

Ereignis- oder aktionsorientierte MVC-Frameworks? Pro‘s? Contra‘s?