CSA week 5 CSA, week 5 1 Applets Applet is Java programma dat afgeleid is van klasse Applet Heeft geen methode main, wel methode init Bedoeld om binnen een browser te runnen Wordt gespecificeerd in HTML-tag APPLET CSA, week 5 2 Applet-tag In HTML: <APPLET CODE=.. WIDTH=..> <PARAM NAME = ..> .. </APPLET> Er kunnen attributen opgegeven worden: CODE=... WIDTH=... HEIGHT=... Er kunnen parameters opgegeven worden: <PARAM NAME=SVCnameroot VALUE=“CSA”> CSA, week 5 3 Browser Taken van de browser m.b.t applets applet laden vanaf server Java Virtual Machine opstarten attributen leveren vanuit HTML-script methode main implementeren; deze roept init uit het applet aan life cycle applet controleren lokale computer beschermen tegen het applet CSA, week 5 4 Web Server Is proces dat draait op een computer Levert HTML-code en bytecode van het applet Applet kan alleen TCP connectie maken met het IP-adres van de computer waar de Web Server draait CSA, week 5 5 Gatekeeper Onderdeel van Visibroker Functies onder meer: server/client proxy (week 6) primitieve Web Server Luistert naar poort 8088 i.p.v. 80 Als Web Server en browser op hetzelfde systeem draaien: localhost:8088 CSA, week 5 6 Practicumopdracht (1) Werkt met applet en InterBase Vijf processen: Webservers (= gatekeeper) (2*) serveren HTML-pagina en applet bytecode Browser, met het applet InterBase InterServer CSA, week 5 7 Fysieke distributie van de processen InterServer, InterBase en de database moeten op één systeem staan Op het systeem met het html-script is een Webserver nodig voor het laden van het HTML-script Op het systeem met de applet bytecode is een Webserver nodig voor het laden van de applet bytecode Een browser op één systeem Vanwege security moet de applet bytecode op hetzelfde systeem staan als InterServer etc. Beide Webservers kunnen gecombineerd worden op één systeem, met dus zowel het html-script als de applet bytecode CSA, week 5 8 Practicumopdracht (2) Met browser wordt applet geladen (eventueel inclusief InterClient klassen) Applet maakt d.m.v. InterClient contact met InterServer en dus met InterBase (zie opdracht 4) CSA, week 5 9 Practicumopdracht (3) CSA, week 5 10 Practicumopdracht (4) Applet gesplitst in GUI en DB-acties (program logic) GUI in klasse LedenApplet DB-acties in klasse Gegevensbank (connectie maken/verbreken, ophalen gegevens, boete voldoen) LedenApplet bevat object gb van klasse Gegevensbank CSA, week 5 11 Practicumopdracht (5) Database bevat 2 tabellen: lid met ledengegevens boete met boetebedragen Gegevens lezen met methodes haalisLid, haaltotaalBedrag, haalheeftBoetes, haalBoetenrs, haalBedrag Slechts 1 mutatie: voldoeBedrag CSA, week 5 12 Practicumopdracht (6) Maak methode haal_boetenummer eventafhandeling bij knop aanvullen HTML-script aanvullen InterBase en InterServer op ander systeem Twee users op dezelfde gegevens laten werken CSA, week 5 13 2-tier architectuur (1) 2-tier architectuur model: eerste tier: GUI en applicatielogica tweede tier: Database server en database CSA, week 5 14 2-tier architectuur (2) Opdracht is voorbeeld van 2-tier model: GUI en JDBC-calls (= program logic) in applet DBMS (InterBase) in ander proces CSA, week 5 15 3-tier architectuur (1) 3-tier architectuur model: GUI in eerste tier Applicatielogica in tweede tier Database server en database in derde tier CSA, week 5 16 3-tier architectuur (2) Voorbeeld 3-tier architectuur model: GUI in applet (Web server) JDBC-calls in CORBA objecten in separaat proces (Application server) DBMS in eigen proces (Database server) CSA, week 5 17 Applet downloading Performance Schaalbaarheid Applicatie hergebruik 2-tier langzaam ("fat"client) laag (behalve voor JDBC) Slecht Slecht (monolithische programma's op de client) Inkapseling van data Laag (toegang tot data via tabellen) Eenvoud van Hoog ontwikkeling Server-to-Server Nee Infrastructuur 3-tier snel ("thin" client) hoog (behalve voor JDBC) Goed (load-balance over verschillende systemen) Goed (server objecten kunnen worden hergebruikt) Hoog (toegang tot data via methoden) Wordt beter Ja (met behulp van CORBA Object-bus)