A b s c h l u s s p r ä s e n t a t i o n d e s P r o j e k t e s
Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r...
-
Upload
reimund-leder -
Category
Documents
-
view
107 -
download
0
Transcript of Lukas Neitsch Silvan Golega Gero Decker Uwe Kylau HASSO - PLATTNER – INSTITUT f ü r S o f t w a r...
Lukas NeitschSilvan GolegaGero DeckerUwe Kylau
HASSO - PLATTNER – INSTITUTf ü r S o f t w a r e s y s t e m t e c h n i k
erasm platform Bild- / Galerieverwaltung
Komponentenprogrammierungmit J2EE, WebServices, .NET
HPI, SS2004: Middleware und Komponentenprogrammierung / 2 HASSO - PLATTNER - INSTITUT
Inhalt
Anforderungen, verwendete Systeme
Projektplanung / -management
Architektur
Vorführung WebGUI / Komponentendeployment
Test, Bewertung J2EE
Vorführung .NET Client
Vergleich WebServices: jboss vs. .NET
Erweiterungen
Literatur
HPI, SS2004: Middleware und Komponentenprogrammierung / 3 HASSO - PLATTNER - INSTITUT
Anforderungen – Use Cases
erasm platformWeb-Portal
Zentrale Weitergabe / Archivierung von Informationen / Medien
Bild- / Galerieverwaltung
Bild- / Galerieverwaltung erasm Kernsystem
Erweiterungen
Eigene Bilder verwalten
Authentifizierung / Autorisierung
Bildergalerie anschauen <<uses>>
Kommentar schreiben
Kommentare lesen
Bewertung abgeben
<<uses>>
<<uses>>
<<uses>>
<<uses>>
User[.NET client]
User[Web Browser]
HPI, SS2004: Middleware und Komponentenprogrammierung / 4 HASSO - PLATTNER - INSTITUT
Verwendete Produkte und Technologien
Ziel: Möglichst Verwendung von Open Source Systemen
HPI, SS2004: Middleware und Komponentenprogrammierung / 5 HASSO - PLATTNER - INSTITUT
Grober Aufbau
J2EE Application Server (jboss)
jboss .NET
era
sm c
ore
comments
votes
picture / gallery
web log
SAP MaxDB
R
web browser
.NET client
R
HTMLHTTP
R
SOAP
core datapicture data
comments
votes
JDBC Treiber
HPI, SS2004: Middleware und Komponentenprogrammierung / 6 HASSO - PLATTNER - INSTITUT
Projektplanung / -management
Entwurf ProjektplanVersionsmanagement mittelsSubversion Repository und TortoiseSVN
ID
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Projektstart
Erstellung Lastenheft
Erstellung FMC Modelle
Experiment WebServices
Erstellung der Client GUI
Erstellung der Web GUI
Definition der Interfaces
Erst. UML Modelle für Beans
Implementierung des Clients
Implementierung des HTML Renderes
Implementierung der Beans
Implementierung des Datenbank Loaders
Evaluierung Junit (EE)
Modultest je Bean
Integrationstest Server
Vergleich mit anderen Komponentensys.
Erstellung Diagramme für Vortrag
Erstellung Konzept und Folien für Vortrag
Vortrag fertig vorbereitet
Ausarbeitung fertig
16 19 22 25 28 01 04 07 10 13 16 19 22 25 28 31 03 06 09 12 15 18 21 24 27 30 03 06 09 12 15 18 21 24April 2004 May 2004 June 2004 July 2004
Microsoft Project Professional 2002
HPI, SS2004: Middleware und Komponentenprogrammierung / 7 HASSO - PLATTNER - INSTITUT
Architektur – Aufbau
jboss
jboss .NET
erasm core picture / gallery
authentication
authorization
gallery item renderer
Fol
derB
ean
WebService ProviderBean
Pic
ture
Bea
n
Ga
llery
Bea
n
Ga
llery
Item
B.
UserBean
GroupBean
SessionBean
R
R
R
core GUI logic
R
R comments
CommentPluginBeanR
Comment Renderer
Data Bean
R
votes
VotePluginBean
Vote Renderer
Data Bean
R
eclip
se d
eplo
ytoo
l
Re
sizi
ngB
ean
CMP Entity Bean BMP Entity Bean Stateful Session Bean Stateless Session Bean
HPI, SS2004: Middleware und Komponentenprogrammierung / 8 HASSO - PLATTNER - INSTITUT
Architektur – Verwendete Design Patterns
Model – View – ControllerDurchgängig durch Servlets / Renderer vs. EJBs
Singleton und FactoryUniqueIDFactory, SessionManagerund DBConnectionManager
BuilderLoaderTask mit LoaderServlet als Director
ProxyPicture für PictureData
FaçadeWebServiceProvider
HPI, SS2004: Middleware und Komponentenprogrammierung / 9 HASSO - PLATTNER - INSTITUT
Architektur – Plugin Interface
+getName() : string+getDescription() : string+getRenderer(in item : Item) : PluginRenderer+isAvailable(in session : Session) : bool+performAction(in session : Session, in item : Item, in PluginParams : string) : bool
Plugin
+render(in session : Session, in servlet : AppPluginServlet, in out : PrintWriter) : void+getCaption(in session : Session) : string+doesRender() : bool+getServletURL() : string
PluginRenderer
VoteResultHTMLRenderer
VotePlugin
«extends»
CommentPluginCommentHTMLRenderer
Vote
Comment
VoteChoiceHTMLRenderer
HPI, SS2004: Middleware und Komponentenprogrammierung / 10 HASSO - PLATTNER - INSTITUT
Suchen von Plugins
Suche aller verfügbaren Plugins erfolgt pro Anfrage
HPI, SS2004: Middleware und Komponentenprogrammierung / 11 HASSO - PLATTNER - INSTITUT
Vorführung Web GUI / Komponentendeployment
:EJBViewServlet(AdminConsole)
doGet()
:ShowGalleryItemServlet
(GalleryViewer)
doGet()
:VoteHTMLRenderer(Plugin)
render()
:CommentHTMLRenderer(Plugin)
deploy
doGet()
doGet()
render()
render()
HPI, SS2004: Middleware und Komponentenprogrammierung / 12 HASSO - PLATTNER - INSTITUT
Test
JUnit als Framework für Testcases
Nicht ausreichend für das Testen von J2EE-Applikationen
JUnitEE als Testrunner
Performanztests mit Delphi-Client
WinInetAPI / HTTP
HPI, SS2004: Middleware und Komponentenprogrammierung / 13 HASSO - PLATTNER - INSTITUT
Bewertung J2EE / jboss
Nachteile
Typprüfung für EJBs erst zur Deployzeit
Performanzprobleme
Keine Versionierung von EJBs
Vorteile
J2EE: Nützliches Programmiermodell
Container-Managed-Persistence ist hilfreich
Gute Werkzeugunterstützung: Integration mit eclipse, XDoclet
HPI, SS2004: Middleware und Komponentenprogrammierung / 14 HASSO - PLATTNER - INSTITUT
Vorführung .NET Client
Demo-Verlauf
C# Client:Provider
Bean
login()
SessionID
:FolderHome
getSubfolders()findByPrimaryKey()
FolderObjectsFolderIDs
insertPicture()
PictureID
:PictureBean
create()
:PictureDataBean
create()PictureObject
:GalleryItemHome
showGalleryItems()findByPrimaryKey()
GalleryItemObjectsGalleryItemIDs
:SessionManager
getSession()
SessionObject
HPI, SS2004: Middleware und Komponentenprogrammierung / 15 HASSO - PLATTNER - INSTITUT
Frameworkvergleich WebServices: jboss vs. .NET
Web Services mit JBoss
Web Services mit .NET
/**
*@jboss-net web-service urn=„ProviderWS“
*/
public class ProviderBean implements SessionBean {
[System.Web.Services.WebServiceBindingAttribute(Name="ProviderWSSoapBinding", Namespace="http://localhost:8080/jboss-net/services/ProviderWS")]
public abstract class ProviderLocalService : System.Web.Services.WebService {
[System.Web.Services.WebMethodAttribute()]
[System.Web.Services.Protocols.SoapRpcMethodAttribute("ProviderWS", RequestNamespace="http://webservices.picture.erasm.de", ResponseNamespace="http://localhost:8080/jboss-net/services/ProviderWS")]
[return: System.Xml.Serialization.SoapElementAttribute("loginReturn")]
public abstract long login(string in0, string in1);
/**
*@ejb.interface-method view-type="local"
*@jboss-net.web-method
*/
public long login(String userName,
String password) {
HPI, SS2004: Middleware und Komponentenprogrammierung / 16 HASSO - PLATTNER - INSTITUT
Erweiterungen
Was man noch verbessern kannBessere Testabdeckung (z.B. Zweigüberdeckung, GUI-Tests)
Erhöhung der Robustheit
Performanzoptimierung
SicherheitVerwendung von ACLs für jedes erasm-Item
Physische Verteilung des Applikationsserversystemsz.B. alle Bildoperationen auf separatem Rechner
GUI-Verbesserungen
Erweiterung der erasm-PlatformWeitere Funktionen (Weblog, etc.)
Mehrsprachigkeit
Verwendung eines Portalservers (z.B. JetSpeed, Pluto)
HPI, SS2004: Middleware und Komponentenprogrammierung / 17 HASSO - PLATTNER - INSTITUT
QuellennachweiseJ2EE
Flanagan, D., Fareley, J., Crawford, W.: Java Enterprise in a Nutshell, 2nd Edition,O‘Reilly & Associates, 2002JBoss Inc.: JBOSS 3.2 Getting Started, http://www.jboss.org/modules/html/docs/jbossj2ee.pdfSUN Micros., J2EE 2.1 API Specification, http://java.sun.com/j2ee/1.4/docs/api/SUN Micros., J2SE 1.4.2 API Specification, http://java.sun.com/j2se/1.4.2/docs/api/SUN Micros., J2EE 1.4 Tutorial, http://java.sun.com/j2ee/1.4/docs/tutorial/doc/XDoclet Dokumentation, http://xdoclet.sourceforge.net/xdoclet/development/
DatenbankanbindungSAP MaxDB Dokumentation, http://www.sapdb.org/7.4/sap_db_documentation.htm
.NETLiberty, J.: Learning C#, O‘Reilly & Associates, 1. November 2002Liberty, J.: Programming C#, O‘Reilly & Associates, 1. Juni 2003
WebServicesJBoss .NET Info, http://www.nsdev.org/jboss/stories/jboss-net.htmlMicrosoft Developer Network, http://msdn.microsoft.com/webservices/understanding/specs/
Alle URLs beziehen sich auf Juni 2004