Struts oder JavaServer Faces WA4

Transcrição

Struts oder JavaServer Faces WA4
Struts oder
JavaServer Faces
WA4
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
Version: 1.0
www.oio.de
[email protected]
Über mich
Papick Garcia Taboada
Software Architekt
Technologie-Scout
Beratung
Projekte
Training
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
2
1
„Orientierung“ in Objekten
) Akademie )
• Schulungen, Coaching,
Weiterbildungsberatung,
Train & Solve-Programme
) Beratung )
• Methoden, Standards und
Tools für die Entwicklung
von offenen, unternehmensweiten Systemen
JAX 2005 / Struts oder JSF?
) Projekte )
• Schlüsselfertige Realisierung
von Software
• Unterstützung laufender
Projekte
• Pilot- und Migrationsprojekte
© 2005 P.G.Taboada
3
Überblick WA4
Hallo, Einführung und Ziele
Eine Webanwendung
Zwiebelsoftware
Mission Impossible I & II
Sun's Spezifikationskeule
Struts und / oder JSF?
JAX 2005 / Struts oder JSF?
Struts
Grundidee Struts
Welche Probleme löst Struts
Welche Probleme löst Struts nicht
Wie löst Struts Probleme
Tiles, die Rettung?
Sackgasse Portale?
Know-how-Kapital Struts
© 2005 P.G.Taboada
4
2
Überblick WA5
Hallo, Einführung und Ziele
Eine Webanwendung
Zwiebelsoftware
Mission Impossible I & II
Sun's Spezifikationskeule
Struts und / oder JSF?
Grundidee JSF
JavaServer Faces
Welche Probleme löst JSF
Welche Probleme löst JSF nicht
Wie löst JSF Probleme
Tiles, die Rettung?
Tiles oder Portales?
Knowhowkapital JSF
Zukunft: Struts Shale?
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
5
© 2005 P.G.Taboada
6
Ziele
• Einblick in die WAFs aus Architektursicht vermitteln
– Einstieg in die Thematik
– Problemkreise identifizieren
– Lösungsansätze
– Entscheidungshilfe
JAX 2005 / Struts oder JSF?
3
Eine Webanwendung
• Webanwendung := Web + Anwendung
– Web
• Client / Server Architektur
• HTTP, HTML, CSS, JavaScript, Browser, TCP/ IP, Firewall, VPN, …
– Anwendung
• Sitzungen
– Anwender
– Berechtigungen
– Sicherheit
• Anwendugsfälle
– CRUD Operationen (Create, Retrieve, Update and Delete)
– Workflows, Dialoge
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
7
Zwiebelsoftware
• Java 2 Platform, Enterprise
Edition (J2EE) defines the
standard for developing
component-based multitier
enterprise applications.
– Web Tier
– Business Tier
– EIS-Tier
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
8
4
Wo ist mein MVC?
• Model-View-Controller in der
Vogelperspektive
• Gesamtes System wird
Betrachtet
Web Server
Servlet Engine
Servlet
JSP
Bean
Präsentation
Application Server
EJB
RMI
Corba
EJB
Logik
EIS
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
9
„Wo ist mein MVC“ Reloaded
Webapplication
Controler
GlobalNavigationsController
NavigationsController
ProcessController
Action
Action
LayoutController
Action
FormBeans
UIComponent
AppContext
UIComponent
ProcessContext
UIComponent
Model
JAX 2005 / Struts oder JSF?
• MVC-Perspektive wird auf
die Architektur der
Webanwendung
verschoben
• In einer Webanwendung zu
finden:
– Navigation
– Anzeige
– Zustände
View
© 2005 P.G.Taboada
10
5
Mission Impossible I
pid=2
Index.jsp
editperson.jsp
ED
ED
Person A
Person B
•
•
Name
Lastname
New Person
Save
Cancel/ Go Back
•
newperson.jsp
Name
Lastname
•
Create
reallysaveperson.jsp
Cancel
–
–
Really Save?
reallydeleteperson.jsp
Yes
No
Really Delete?
•
Person B
Yes
aka Model-1 Architektur
Globale Navigation und
Prozesse sind durch
HTML-Links abgebildet
Sehr einfach zu
implementieren
Besondere Erschwernisse
Bei Wartungarbeiten
Bei Änderungswünschen
„Broken Link Melden“Anwendungen
No
createperson.jsp
saveperson.jsp
Person was
created!
Click HERE to
continue…
Person saved,
Click HERE
to continue!
deleteperson.jsp
Person deleted,
Click HERE to continue!
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
11
Mission Impossible II
action=(edit|delete|create)&pid=X
•
homeServlet
•
param action=?
Null Edit Create Delete Save Message
•
listServlet
editServlet
deleteServlet
persistSerlvet
messageServlet
•
aka Model-2
Architektur
Navigation und
Prozesse in Objekte
festgehalten
Nur „logische“
Navigation in den
JSPs
JSP Fragemente
wiederverwendbar
action=message&pid=X&message=savedOK
list.jspf
ED
ED
form.jspf
message.jspf
Person
Firstname
A
Person
Lastname
B
Message:
Yes | No | Cancel
New Person
Save Cancel
action=save&pid=X
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
12
6
No comments
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
13
Sun‘s Spezifikationskeule
JAX 2005 / Struts oder JSF?
•
Zu viele Frameworks
– Schwer zu entscheiden
– Qual der Wahl
– Kein Standard
•
Fehlende „offizielle“ Alternative zu
Microsofts ASP .net WebForms
•
Die Keule:
JavaServer Faces
– Standard Webframework für
J2EE Anwendung
– Annerkennung durch SoftwareIndustrie
© 2005 P.G.Taboada
14
7
Struts und / oder JSF?
•
„Struts“-Anwendung
„JSF“-Anwendung
Struts
•
Einfach dargestellt hört Struts
da auf wo JSF anfängt
Eigentlich klingt das gut, nur
das Struts und JSF ganz
unterschiedlich funktionieren
Struts
JSF
?
JSF
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
15
Überblick WA4
Hallo, Einführung und Ziele
Eine Webanwendung
Zwiebelsoftware
Mission Impossible I & II
Sun's Spezifikationskeule
Struts und / oder JSF?
JAX 2005 / Struts oder JSF?
Struts
Grundidee Struts
Welche Probleme löst Struts
Welche Probleme löst Struts nicht
Wie löst Struts Probleme
Tiles, die Rettung?
Sackgasse Portale?
Knowhowkapital Struts
© 2005 P.G.Taboada
16
8
Struts
• http://jakarta.apache.org/struts
Welcome to Struts! The goal of this project is to provide an open
source framework for building Java web applications.
The core of the Struts framework is a flexible control layer based
on standard technologies like Java Servlets, JavaBeans,
ResourceBundles, and XML, as well as various Jakarta Commons
packages. Struts encourages application architectures based on
the Model 2 approach, a variation of the classic Model-ViewController (MVC) design paradigm.
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
17
© 2005 P.G.Taboada
18
Struts - behind the scenes
• Viele Projekte scheiterten an der Komplexität von
Webanwendungen
– Architektur von Webanwendungen ist nicht trivial
– Qualitätsprobleme
• “Broken Link Melden” – Websites
• J2EE Core Patterns von Sun
– Presentation-Tier Patterns
•
•
•
•
Front Controller
View Helper
Context Object
Composite View
• Model 2 Webanwendungen werden bekannt
JAX 2005 / Struts oder JSF?
9
Grundidee Struts
Servlet Container
*.do Request
Controller
ActionServlet
Model
EJB, Beans,..
Action
Business Logik
XML Config
Bean
Bean
Bean
FormBean
Response
View
JSP
Struts Taglibs
Bean
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
19
Welche Probleme löst Struts?
•
Webapplication
– Prozesse
– Zustände
– User Interface
Controler
GlobalNavigationsController
NavigationsController
NavigationsController
NavigationsController
LayoutController
ProcessController
Action
Automatische Validierung
•
I18N
Action
UIComponent
AppContext
UIComponent
ProcessContext
UIComponent
JAX 2005 / Struts oder JSF?
•
Action
FormBeans
Model
Struts vereinfacht die Trennung
View
© 2005 P.G.Taboada
20
10
Wie löst Struts Probleme?
Struts ActionServlet
•
„Eingangs-Action“
showFormular.do
formular.jsp
submitFormular.do
showMessage.jsp
Eine „einfache“
Strutsanwendung definiert viele
verschiedene „Actions“, die
jeweils kleinste Funktionalität
implementieren:
– Daten werden verarbeitet
– Daten werden bereitgestellt
• Request scope
• Session scope
•
Die JSP-Seiten „rendern“ die
bereitgestellten Daten
Der Struts-Frontend-Controller
bietet Dienste an, insbesondere
•
„Ausgangs-Action“
– automatische Validierung
„Automatische Validierung“
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
21
Welche Probleme löst Struts nicht?
•
Webapplication
– Sehr allgemeines, sehr
flexibles Framework
Controler
•
GlobalNavigationsController
NavigationsController
NavigationsController
NavigationsController
LayoutController
ProcessController
Action
•
Action
Action
FormBeans
UIComponent
AppContext
UIComponent
ProcessContext
UIComponent
Model
JAX 2005 / Struts oder JSF?
Struts löst alles und nichts…
•
Entwickler müssen selbst
entscheiden, wie die
Strutsanwendung gebaut
werden soll
UI Componenten sind sehr
einfach gehalten
Bietet keine Unterstützung für
komplexe Dialoge und
Navigationsstrukturen
View
© 2005 P.G.Taboada
22
11
Tiles, die Rettung?
•
•
header
Tiles wurde ab der Version 1.1
in Struts aufgenommen
Tiles „teilt“ eine
Webanwendung in kleinere
„Views“, so wie es von HTML
und Framesets bekannt ist
– Serverseitige Framesets
•
navigation
content
Realisiert Composite Pattern für
Webanwendungen!
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
23
Webanwendung mit Struts und Tiles
Index.jsp
GlobalNavigationsController
tiles
layout.jsp
sets content
showFormular.do
formular.jsp
menueContext
header.jsp
„content“
formData
menue.jsp
tiles.xml
struts.xml
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
24
12
Beispiel: JaxStruts
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
25
© 2005 P.G.Taboada
26
Projektübersicht
JAX 2005 / Struts oder JSF?
13
Pimp my StrutsApp
•
•
•
•
•
Dynabeans
Modularisierung
Validation Framework
Tiles Framework
Erweiterte Actionmappings
– default actions
– Wildcard „/doSomething*“ actions
• Kommerzielle Erweiterungen
– Common Controls
• Open Source Erweiterungen
– http://struts.sourceforge.net/
• Workflow
• Spring
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
27
© 2005 P.G.Taboada
28
Der Weg ist das Ziel?
JAX 2005 / Struts oder JSF?
14
Sackgasse Portale?
•
Viele Unternehmen wollen früher oder später das eigene Portfolio
an Webanwendungen unter ein Dach bringen…
– Einheitliches Layout
– Single-Sign-On
– usw.
•
Struts basierte Anwendungen lösen das Problem komplexer
Navigationstrukturen auf verschiedene Arten:
– Model 1 Anwendungen „hüpfen“ von Seite zu Seite
– Model 2 Anwendungen haben einen oder mehrere
Navigationscontroller
•
Portale hingegen definieren eine eigene
Navigationsstruktur!
Wie und ob diese mit der eigenen kompatibel ist,
muss geprüft werden…
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
29
Know-how-Kapital Struts
• Unternehmen haben Zeit und Geld in die Ausbildung der
Mitarbeiter gesteckt…
… und das ist gar nicht lange her
… die Anwendungen funktionieren doch…
… es wurde ein eigenes „mini-Framework“ um Struts herum gebaut!
• Kapital
–
–
–
–
MVC Konzepte, OO, Komponenten, Entwurfsmuster
Fähigkeit, Probleme in Java und nicht in JSPs zu lösen
Umgang mit Taglibs
Trennung zwischen Logik und User Interface!
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
30
15
Verlorenes Kapital?
• Nein!
– Know-how geht nicht verloren!
– Viele Entwurfsprinzipien werden auch bei anderen Technologien
verwendet
• Ja!
– Eine Portierung auf andere Frameworks wird nicht ohne Aufwand
stattfinden
– Einige der moderneren Frameworks stellen ein neues Paradigma
in der Entwicklung von Webanwendungen dar
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
31
Struts verschwindet nicht…
•
•
•
•
Sehr große Community
Breite Toolunterstützung
Erprobt
Verbreitetes Know-how
• Aber
– Das Struts von morgen (evtl. Struts Shale) ist nicht mit Struts
kompatibel!
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
32
16
? ? ?
?
?
Fragen ?
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
[email protected]
„OIO-JAX Scrabble“ Gewinnspiel
• Spielen Sie mit uns eine Runde OIO-JAX Scrabble und gewinnen
Sie ein OIO Seminar aus dem Bereich
O P E N
S O U R C E
• „Scrabble-Felder“ bekommen Sie an unserem Konferenzstand.
• Abgabe bis Donnerstag, 12.05.05 - 11.45 Uhr
• Gewinnbekanntgabe: 12.05.05 - 14.10 Uhr
O I O @
J A X
• Wir freuen uns über Ihren Besuch.
Viel Spass beim Scrabbeln!
JAX 2005 / Struts oder JSF?
© 2005 P.G.Taboada
34
17
Vielen Dank für Ihre
Aufmerksamkeit !
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
[email protected]
18

Documentos relacionados