27.05.04remo bergmann1 frameworks allgemeines zu frameworks mvc-pattern einordnung der...
Post on 05-Apr-2015
131 Views
Preview:
TRANSCRIPT
27.05.04 Remo Bergmann 1
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)
27.05.04 Remo Bergmann 3
Frameworks – Definition
Vergleich: Autos haben oft gleiches Fahrwerk, Motor, Getriebe Dennoch: eigenständiges Design, Marketing, ...
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
27.05.04 Remo Bergmann 5
Frameworks – „White-Box“
Hot Spots - Vorgesehene Eingriffspunkte Aufwendige Wartung - Abhängigkeiten von Subklassen - Aufwärtskompatibilität sichern
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
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
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
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
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
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
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!
27.05.04 Remo Bergmann 13
Frameworks(MVC) – Einordnung
Eigenschaften:
Anwendungssteuerung (aktions- und ereignisgesteuert)
View-Technologie Komponenten Behandlung des serverseitigen Zustand
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
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; }...}
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>
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");
}
}
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
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
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!
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
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
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
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)
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
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
27.05.04 Remo Bergmann 27
Frameworks – Einordnung: Features
www.waferproject.org
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) ...
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
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
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
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
27.05.04 Remo Bergmann 33
Frameworks – Diskussion
Wann ist der Einsatz von Frameworks sinnvoll?
Ereignis- oder aktionsorientierte MVC-Frameworks? Pro‘s? Contra‘s?
top related