Erasm Picture Viewer

Werbung
erasm platform
Bild- / Galerieverwaltung
Komponentenprogrammierung
mit J2EE, WebServices, .NET
Lukas Neitsch
Silvan Golega
Gero Decker
Uwe Kylau
HASSO - PLATTNER
– INSTITUT
für Softwaresystemtechnik
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 / 2
HASSO - PLATTNER - INSTITUT
Anforderungen – Use Cases
erasm platform
Web-Portal
Zentrale Weitergabe / Archivierung von Informationen / Medien
Bild- / Galerieverwaltung
Bild- / Galerieverwaltung
erasm Kernsystem
Eigene Bilder
verwalten
User
[.NET client]
Bildergalerie
anschauen
<<
u
<<
u
Kommentar
schreiben
Kommentare
lesen
User
[Web Browser]
se
s>
>
se s
>>
<<uses
>>
<<uses>>
e
<<us
Authentifizierung /
Autorisierung
s>>
Bewertung
abgeben
Erweiterungen
HPI, SS2004: Middleware und Komponentenprogrammierung / 3
HASSO - PLATTNER - INSTITUT
Verwendete Produkte und Technologien
Ziel: Möglichst Verwendung von Open Source Systemen
HPI, SS2004: Middleware und Komponentenprogrammierung / 4
HASSO - PLATTNER - INSTITUT
Grober Aufbau
R
web
browser
J2EE Application Server (jboss)
.NET
client
R
erasm core
HTML
HTTP
picture /
gallery
comments
votes
web log
jboss
.NET
SOAP
JDBC Treiber
R
SAP MaxDB
HPI, SS2004: Middleware und Komponentenprogrammierung / 5
core data
picture
data
comments
votes
HASSO - PLATTNER - INSTITUT
Projektplanung / -management
Entwurf Projektplan
Versionsmanagement mittels
Subversion Repository und TortoiseSVN
Microsoft Project Professional 2002
HPI, SS2004: Middleware und Komponentenprogrammierung / 6
HASSO - PLATTNER - INSTITUT
Architektur – Aufbau
jboss
picture / gallery
R
core GUI logic
comments
gallery item renderer
R
R
GalleryItemB.
GroupBean
GalleryBean
UserBean
ResizingBean
FolderBean
authentication
PictureBean
R
CommentPluginBean
Comment
Renderer
R
Data
Bean
votes
VotePluginBean
SessionBean
R
WebService
ProviderBean
authorization
Vote
Renderer
R
Data
Bean
R
jboss .NET
CMP Entity Bean
BMP Entity Bean
HPI, SS2004: Middleware und Komponentenprogrammierung / 7
Stateful Session Bean
Stateless Session Bean
HASSO - PLATTNER - INSTITUT
eclipse deploytool
erasm core
Architektur – Verwendete Design Patterns
Model – View – Controller
Durchgängig durch Servlets / Renderer vs. EJBs
Singleton und Factory
UniqueIDFactory, SessionManager
und DBConnectionManager
Builder
LoaderTask mit LoaderServlet als Director
Proxy
Picture für PictureData
Façade
WebServiceProvider
HPI, SS2004: Middleware und Komponentenprogrammierung / 8
HASSO - PLATTNER - INSTITUT
Architektur – Plugin Interface
Plugin
+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
PluginRenderer
+render(in session : Session, in servlet : AppPluginServlet, in out : PrintWriter) : void
+getCaption(in session : Session) : string
+doesRender() : bool
+getServletURL() : string
«extends»
VoteChoiceHTMLRenderer
VotePlugin
VoteResultHTMLRenderer
Vote
CommentPlugin
CommentHTMLRenderer
Comment
HPI, SS2004: Middleware und Komponentenprogrammierung / 9
HASSO - PLATTNER - INSTITUT
Suchen von Plugins
Suche aller verfügbaren Plugins erfolgt pro Anfrage
HPI, SS2004: Middleware und Komponentenprogrammierung / 10
HASSO - PLATTNER - INSTITUT
Vorführung Web GUI / Komponentendeployment
:EJBViewServlet
(AdminConsole)
:ShowGalleryItem
Servlet
(GalleryViewer)
:VoteHTML
Renderer
(Plugin)
doGet()
doGet()
render()
deploy
:CommentHTML
Renderer
(Plugin)
doGet()
doGet()
render()
render()
HPI, SS2004: Middleware und Komponentenprogrammierung / 11
HASSO - PLATTNER - INSTITUT
Test
JUnit als Framework für
Testcases
Nicht ausreichend für das
Testen von J2EEApplikationen
 JUnitEE als
Testrunner
Performanztests mit
Delphi-Client
WinInetAPI / HTTP
HPI, SS2004: Middleware und Komponentenprogrammierung / 12
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 / 13
HASSO - PLATTNER - INSTITUT
Vorführung .NET Client
Demo-Verlauf
:Provider
Bean
C# Client
:Session
Manager
:Folder
Home
:GalleryItem
Home
login()
getSession()
SessionObject
SessionID
getSubfolders()
findByPrimaryKey()
FolderObjects
FolderIDs
insertPicture()
create()
PictureObject
PictureID
:Picture
Bean
create()
:PictureData
Bean
showGalleryItems()
findByPrimaryKey()
GalleryItemObjects
GalleryItemIDs
HPI, SS2004: Middleware und Komponentenprogrammierung / 14
HASSO - PLATTNER - INSTITUT
Frameworkvergleich WebServices: jboss vs. .NET
Web Services mit JBoss
/**
*@jboss-net web-service urn=„ProviderWS“
*/
public class ProviderBean implements
SessionBean {
/**
*@ejb.interface-method view-type="local"
*@jboss-net.web-method
*/
public long login(String userName,
String password) {
Web Services mit .NET
[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);
HPI, SS2004: Middleware und Komponentenprogrammierung / 15
HASSO - PLATTNER - INSTITUT
Erweiterungen
Was man noch verbessern kann
Bessere Testabdeckung (z.B. Zweigüberdeckung, GUI-Tests)
Erhöhung der Robustheit
Performanzoptimierung
Sicherheit
Verwendung von ACLs für jedes erasm-Item
Physische Verteilung des Applikationsserversystems
z.B. alle Bildoperationen auf separatem Rechner
GUI-Verbesserungen
Erweiterung der erasm-Platform
Weitere Funktionen (Weblog, etc.)
Mehrsprachigkeit
Verwendung eines Portalservers (z.B. JetSpeed, Pluto)
HPI, SS2004: Middleware und Komponentenprogrammierung / 16
HASSO - PLATTNER - INSTITUT
Quellennachweise
J2EE
Flanagan, D., Fareley, J., Crawford, W.: Java Enterprise in a Nutshell, 2nd Edition,
O‘Reilly & Associates, 2002
JBoss Inc.: JBOSS 3.2 Getting Started,
http://www.jboss.org/modules/html/docs/jbossj2ee.pdf
SUN 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/
Datenbankanbindung
SAP MaxDB Dokumentation, http://www.sapdb.org/7.4/sap_db_documentation.htm
.NET
Liberty, J.: Learning C#, O‘Reilly & Associates, 1. November 2002
Liberty, J.: Programming C#, O‘Reilly & Associates, 1. Juni 2003
WebServices
JBoss .NET Info, http://www.nsdev.org/jboss/stories/jboss-net.html
Microsoft Developer Network,
http://msdn.microsoft.com/webservices/understanding/specs/
Alle URLs beziehen sich auf Juni 2004
HPI, SS2004: Middleware und Komponentenprogrammierung / 17
HASSO - PLATTNER - INSTITUT
Herunterladen