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