Applicatie-Architecturen
[email protected]
http://www.cs.kuleuven.be/~joost/DN/
Onderwerp • Programming in the large! • (<> programming in the small)! • Bijvoorbeeld: KU Leuven Veel verschillende functionaliteit
met gemeenschappelijke kern
Structuur vak • Theorielessen: ! • grote lijnen! • beperkt (6/12), aangevuld met zelfstudie (cursustekst en online)! • http://www.cs.kuleuven.be/~joost/DN/! • Practicum: ! • inoefenen “in the small”
Project • In groepjes van 2! • Tijdens practicumsessies en daarbuiten! • Deadline: begin examenperiode! • Op NetBeans 7.4! • Wekelijks verslag (wie, wat, hoe lang) volgens template
Evaluatie • Op basis van! • Project: werkt het en is het volgens de richtlijnen?! • Verslagen! • Werk tijdens practica! • Mondelinge ondervraging over project
ECTS-fiche
Inhoud • Java Entreprise Edition (JEE) raamwerk! • Glassfish Server! • NetBeans IDE! • + inleiding .NET
Doel Eenheid in verscheidenheid
Doel Eenheid in verscheidenheid • Zelfde look!
• Verschillende GUI!
• Zelfde login!
• Verschillende functionaliteit!
• Gedeelde gegevens! • Zelfde URLs
• Verschillende gegevens
Nog meer verscheidenheid • Verschillende programmeurs! • Verschillende omgevingen, machines, databanken, legacy software! • Web UI, native UI, webservices
Applicatiearchitectuur • Brengt daar eenheid in! • Portaalfunctie! • Web UI, native UI, webservices! • Centraliseren van gedeelte functionaliteit! • Security, logging, lokalisatie, configuratie, …! • Focussen op eigen “business logica”
Traditionele webserver http request
Client
http response
Server
internet Client
Server
html
HD
Dynamische webserver http request
Client
http response
Server
html
PHP
internet Client
Server
HD
AA http request
Client
http response
proc proc
Server
proc
internet Client
Server
HD
Voorbeeldje • BierExpert! • Termen:! • Web container, EJB container! • Java Server Pages! • Servlets! • Web Deployment Descriptor
Servlet http request
Client
http response
proc proc
Server
• Idee: Servlet is code die response genereert op basis van request! • Formeel: klasse die javax.servlet.Servlet implementeert
proc
HD
javax.servlet.Servlet
Servlet http request
Client
http response
JEE
servlet Server
servlet
proc
webcontainer
• Levenscyclus wordt beheerd door server (webcontainer)! • Zorgt dat er (hoogstens 1) instantie is ! • Kunnen samenwerken in ketting
HD
HttpServlet • javax.servlet.http.HttpServlet implementeert javax.servlet.Servlet
Voorbeeldje
• BierKeuze1.java
Java Server Pages HTML + scriptlets + JSP tags
• Makkelijker om HTML uitvoer te genereren! • Voorbeeldje: resul.jsp! • Wordt on-demand vertaald naar servlet
JSP Tags • Scriptlets zijn nogal ongebruiksvriendelijk! • (voor webdesigners)! • Oplossing: complexiteit verbergen in HTML tags! • JSP Standard Tag Library
Web deployment descriptor • Voorbeeldje: web.xml! • Configureert o.a.! • Servlet mappings! • Foutenboodschappen! • Koppeling met DBen
Gedeelde geheugen http request
Client
http response
servle JEE
Server
t
servlet
proc
webcontainer
• Informatie delen tussen processen! • Informatie onthouden doorheen verschillende oproepen
HD
Gedeelde geheugen • Webpagina! servlet-code om een object uit het gedeelde geheugen te halen of erin te zetten:
• Request!
//Op Request - niveau List l i j s t ;
• Sessie!
l i j s t = ( L i s t ) re qu e st . ge tAttrib u te ( ” naam van object ” ) ; re qu e st . s e t A t t r i b u t e ( ” naam van object ” , l i j s t ) ; //Op Sessie - niveau
• Applicatie
H t t p S e s s i o n s e s s i o n = r e q u e s t . g e t S e s s i o n ( true ) ; l i j s t = ( L i s t ) s e s s i o n . ge tAttrib u te ( ” naam van object ” ) ; s e s s i o n . s e t A t t r i b u t e ( ” naam van object ” , l i j s t ) ; //Op Context - niveau l i j s t = ( L i s t ) getServletContext ( ) . ge tAttrib u te ( ” naam van object ” getServletContext ( ) . s e t A t t r i b u t e ( ” naam van object ” , l i j s t ) ;
MVC patroon Model-View-Controller design pattern de business logica wordt uit de servlet verplaatst naar het Model CONTROLLER gebruikersinput uit de request naar Model nieuwe toestand van Model naar View
servlet
VIEW Verantwoordelijk voor de presentatie. deel met gebruikersinput, die dan doorgestuurd wordt naar de Controller.
<% POJO
%> JSP
DB
MODEL re¨ele toestand en business logica (regels die op deze data werken). in contact met de databank, (via een ander object)
Voorbeeld Voorbeeld
De gebruiker kan via een formulier informatie opvragen omtrent biersoorten. Web Server web browser
1/4
Container Container logic
3/11 2
10 <%
keuze.html
5 servlet 8 7
%> resul.jsp
6
9
request
BierExpert