SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
DA LI POSTOJI SAMO JEDNA
"ISPRAVNA" ARHITEKTURA
WEB POSLOVNIH APLIKACIJA
Stranica 1ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Zlatko Sirotić, univ.spec.inf.
Istra informatički inženjering d.o.o.
Pula
Malo marketingaMalo marketinga ☺☺
Stranica 2ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Autor je (bar neko vrijeme) radioAutor je (bar neko vrijeme) radio
s programskim jezicima / alatima:s programskim jezicima / alatima:
- "Assembler" za Texas Instruments TI-58 kalkulator (1981.)
- Fortran, BASIC (1982.)
- Pascal, Assembler za Zilog Z80 (ZX Spectrum) (1983.)
- Cobol, dBASE III, Prolog (1984.)
- ADS (Application Development System (1985. – 1999.)
Stranica 3ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- ADS (Application Development System (1985. – 1999.)
- Oracle Database, Designer, Forms, Reports (1995. - )
- Eiffel, C, C++ (1998. - )
- Java (2003. - )
- Scala (2012. - )
- Oracle ADF (2013. - )
Neki autorovi radovi zadnjih godinaNeki autorovi radovi zadnjih godina
- HrOUG 2013: Transakcije i Oracle - baza, Forms, ADF
- CASE 2013: Što poslije Pascala? Pa … Scala!
- HrOUG 2012: Ima neka loša veza
(priča o in-doubt distribuiranim transakcijama)
- CASE 2012a: Utjecaj razvoja mikroprocesora
Stranica 4ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- CASE 2012a: Utjecaj razvoja mikroprocesora
na programiranje
- CASE 2012b: Konkurentno programiranje u Javi i Eiffelu
- HrOUG 2011: Kriptografija u Oracle bazi
- CASE 2011: SOA i poslovna pravila
- HrOUG 2010: Biometrijski sustavi – greške i ranjivosti
- CASE 2010: Revizija sigurnosti Oracle SUBP-a
TemeTeme
U ovoj prezentaciji razmatraju se (i) sljedeća pitanja:
- Da li je izrada web poslovnih aplikacija postala previše
kompleksna?
Stranica 5ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- Da li pisati programski kod za integritet podataka i kod za
poslovnu logiku samo u bazi, samo na aplikacijskom serveru,
samo na klijentu, ili nekom kombinacijom toga?
- Da li u bazi uvijek imati samo jednog usera
za pristup iz web aplikacije, ili je u redu "stari" način rada:
jedna osoba = jedan user na bazi?
TemeTeme (nastavak)(nastavak)
U ovoj prezentaciji razmatraju se (i) sljedeća pitanja:
- Da li konekcija između baze i aplikacijskog modula treba biti
stalna ili privremena (na primjeru Oracle ADF-a)?
Stranica 6ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- Da li veza između korisničke sesije u web pregledniku i
aplikacijskog modula treba biti stalna ili privremena (ADF)?
- Kako baratati s transakcijama?
HTTP je stateless - želimo li atomarne transakcije?
Ispravno rukovanje transakcijama vrlo je bitno
za poslovne aplikacije.
Da li jeDa li je izrada web poslovnihizrada web poslovnih aplapl..
postalapostala previše kompleksna?previše kompleksna?
Mogućnosti DBMS sustava se stalno povećavaju (plavo).
No, negdje poslije 2000. godine, te se mogućnosti
sve manje koriste (crveno). (Prezentacija Toon Koppelaars-a)
Stranica 7ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Da li je izrada web poslovnihDa li je izrada web poslovnih aplapl..
postala previše kompleksna?postala previše kompleksna?
Prosječan developer nekada je mogao naučiti
alat za izradu poslovnih aplikacija za par tjedana.
Danas mu treba i par godina.
Stranica 8ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Da li je izrada web poslovnihDa li je izrada web poslovnih aplapl..
postala previše kompleksna?postala previše kompleksna?
Gdje se može pisati programski kod
u (standardnoj) JEE arhitekturi:
Stranica 9ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Da li je izrada web poslovnihDa li je izrada web poslovnih aplapl..
postala previše kompleksna?postala previše kompleksna?
Različiti pristupi pisanju tankog ili debelog koda u različitim
arhitekturnim slojevima; 1. varijanta je najčešća
8. varijanta (sve tanko) ne postoji – ipak treba nešto (i)
programirati
Stranica 10ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Kamo stavitiKamo staviti
određeni programski kod?određeni programski kod?
Može se reći da poslovne aplikacije imaju
tri vrste programskog koda:
- Kod za rad s korisničkim sučeljem.
- Kod za poslovnu logiku. On se može podijeliti na kod za
Stranica 11ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- Kod za poslovnu logiku. On se može podijeliti na kod za
čitanje podataka iz baze i kod za ažuriranje podataka u bazi.
Kod za ažuriranje podataka u bazi vrlo često koristi (i) čitanje
podataka iz baze.
- Kod za osiguravanje integriteta podataka u bazi. Često se
ovaj kod brka s kodom za poslovnu logiku, pa nije čudno da
se u praksi često isprepliću kod za poslovnu logiku i kod za
osiguravanje integriteta podataka.
Kamo stavitiKamo staviti
određeni programskiodređeni programski kod?kod?
Programski kod za rad s korisničkim sučeljem,
kod web aplikacija može se nalaziti:
- Na strani aplikacijskog servera, što je najčešće. U JEE
arhitekturi riječ je o Java servletima (ili nadogradnji servleta,
kao štu su JSP, JSF i dr.).
Stranica 12ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
kao štu su JSP, JSF i dr.).
- Na strani klijenta. Najčešće se danas takav kod piše u
JavaScriptu, a relativno rijetko u Javi kao Java applet.
- Na strani baze, što je dosta rijetko. Takvu arhitekturu ima
npr. Oracle APEX alat, kod kojeg se HTML stranice dinamički
generiraju pomoću APEX-ovih PL/SQL paketa na bazi.
Kamo stavitiKamo staviti
određeni programskiodređeni programski kod?kod?
Programski kod za poslovnu logiku,
kod web aplikacija može se nalaziti:
- Na strani aplikacijskog servera, što je vrlo često. U JEE
arhitekturi riječ je o najčešće o EJB-ovima.
Stranica 13ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- Na strani baze. Riječ je o tzv. pohranjenim (stored)
procedurama / funkcijama i paketima na bazi. Vrlo često se
na strani baze sprema programski kod za tzv. batch obradu.
Činjenica je da se najčešće najbrže izvršava upravo kod (za
poslovnu logiku) koji se nalazi na bazi.
- Na strani klijenta gotovo nikad, čak niti kad se na klijent strani
nalaze Java appleti.
Kamo stavitiKamo staviti
određeni programskiodređeni programski kod?kod?
Programski kod za osiguravanje integriteta podataka u
bazi, kod web aplikacija može se nalaziti:
- Na strani baze. Najčešće se koriste deklarativna integritetna
ograničenja baze, kao što su integritetna ograničenja za
jedinstveni ključ (UK), vanjski ključ (FK) i check constraint
(CK).
Stranica 14ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
(CK).
Iako je SQL standard još od 1992. uključio CREATE
ASSERTION naredbu, praktički niti jedan SQL DBMS
sustav ju ne podržava (nedavno su se pojavili ne-SQL
relacijski DBMS sustavi koji ju podržavaju).
Zbog toga, kada se programski kod za osiguravanje
integriteta podataka želi u cijelosti pisati na strani baze, mora
se pribjeći korištenju okidača baze (proceduralni pristup).
Kamo stavitiKamo staviti
određeni programskiodređeni programski kod?kod?
Programski kod za osiguravanje integriteta podataka,
osim na bazi, može se nalaziti:
- Na strani aplikacijskog servera. Ovo je vrlo čest pristup u
praksi. Želja da se izbjegne (dosta mukotrpna) realizacija
integriteta podataka pomoću okidača baze često se navodi
kao dovoljan razlog za ovakav izbor. No, time se omogućava
Stranica 15ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
kao dovoljan razlog za ovakav izbor. No, time se omogućava
da baza bude nezaštićena (u smislu integriteta, ne u smislu
sigurnosti podataka općenito). Naime, jedna aplikacija može
savršeno čuvati integritet podataka u bazi, dok, nažalost,
druga aplikacija može biti tako pisana da to ne osigurava.
- Na strani klijenta. Vrlo često se tako rade samo jednostavnije
provjere integriteta podataka, koje su istovremeno realizirane
i na strani aplikacijskog servera ili/i baze.
KolikoKoliko userausera imati na bazi?imati na bazi?
U klasičnim klijent-server aplikacijama, obično se radilo tako
da je svaki korisnik (osoba) imao svoj vlastiti pristup u bazu,
tj. svoj vlastiti korisnički račun (user, shemu) na bazi. Broj
korisnika (osoba) obično je bio reda par stotina (ili manje), i
svi korisnici su bili poznati (neanonimni).
Vrlo često web aplikacije rade se puno većim brojem
Stranica 16ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Vrlo često web aplikacije rade se puno većim brojem
korisnika (osoba), koji su često i anonimni. Tada izgleda
logično da se napušta nekadašnji pristup: jedan korisnik
(osoba) = jedan korisnički račun (user) na bazi. Najčešće se
uz aplikacijsku shemu (kojih može biti i više, npr. jedna za
tablice, a druga za pakete na bazi) radi samo jedan korisnički
račun (user).
No, time se neminovno smanjuje sigurnost baze.
KolikoKoliko userausera imati na bazi?imati na bazi?
Nije loše koristiti srednji pristup, kod kojeg se odrede različite
vrste korisnika (osoba), a onda se za svaku vrstu korisnika
napravi poseban korisnički račun (korisnička shema) na bazi.
Na taj način, ako netko provali u bazu kroz korisnički račun
koji ima manja prava, ne može raditi ono što bi mogao da je
provalio kroz korisnički račun sa većim pravima.
Stranica 17ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
provalio kroz korisnički račun sa većim pravima.
No, ponekad se i kod web aplikacija može primijeniti "stari
pristup", ako su svi korisnici poznati (neanonimni) i ako ih
nema više od nekoliko stotina. Tada se kao prepreka
pojavljuje činjenica da se kod web aplikacija često koristi pool
konekcija na bazu (connection pool), pa se ne želi da svaki
korisnik ima svoj poseban pool. No, tome se može doskočiti
primjenom tzv. proxy korisničkog računa.
OracleOracle FormsForms alatalat
Oracle Forms je Rapid Application Development (RAD) alat,
koji je Oracle napravio početkom 80-ih, nedugo nakon
nastanka Oracle baze verzije 2 (verzija 1 nije nikada
postojala), i radio je kao znakovno orijentirana (character
mode) aplikacija na serveru.
Sredinom 90-ih napravljena je klijent-server GUI varijanta.
Stranica 18ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Sredinom 90-ih napravljena je klijent-server GUI varijanta.
Klijent-server varijanta pratila je baze 6, 7 i 8, a Forms verzije
bile su 4, 4.5, 5, 6 i 6i. U Forms verziji 6 pojavila se paralelno i
web varijanta - Web Forms.
Nakon verzije 6i, klijent-server varijanta više ne postoji, tj.
verzije od 9i do 11gR2 (verzije 7 i 8 nikad nisu postojale)
rade isključivo kao web Forms aplikacija
(koja nije baš jeftina).
OracleOracle FormsForms
-- klijentklijent--server varijantaserver varijanta
Oracle Forms je izvorno pisan u jeziku C, a i sadašnji kod je
uglavnom C kod, osim Java appleta (koji se izvršava u
pregledniku), te određenih pomoćnih dijelova na AS-u.
Developeri u Forms-ima mogu koristiti jezik
PL/SQL (Forms ima svoj vlastiti PL/SQL engine),
SQL (koji se šalje bazi) i specijalne Forms naredbe (koje
Stranica 19ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
SQL (koji se šalje bazi) i specijalne Forms naredbe (koje
baza nema, uglavnom su to naredbe za korisničko sučelje).
U novijim verzijama može se koristiti i Java.
U klijent server varijanti, Forms aplikacija se u cijelosti
izvršava na klijentu, koji komunicira sa bazom preko
jedne konekcije, a kroz tu konekciju može ići više sesija baze,
tako da svaki Forms aplikacijski modul može imati (ne mora)
vlastitu sesiju baze.
OracleOracle FormsForms –– web varijantaweb varijanta
Stranica 20ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
OracleOracle FormsForms
-- web varijantaweb varijanta
Web varijanta radi tako da Java applet na klijentu
(koji se brine samo za kreiranje korisničkog sučelja)
surađuje sa Forms servisom na aplikacijskom serveru.
Forms servis manje-više čini onaj isti kod (pisan u C-u)
kao i u klijent-server varijanti.
I u ovoj varijanti:
Stranica 21ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
I u ovoj varijanti:
- Forms servis drži stalnu konekciju s bazom;
- korisnik stalno drži Forms module s kojima radi,
sve dok ne završi rad.
U suštini, ovaj način rada nema nekih značajnih razlika
u odnosu na klijent-server rad.
Oracle ADF (Oracle ADF (ApplicationApplication
Development Framework)Development Framework)
6 mjeseci nakon što je Sun izdao verziju Jave 1.0, u Oracleu
su odlučili raditi RAD alat temeljen na jeziku Java. Prvo
izdanje frameworka, koji se tada nije zvao ADF već JBO
(Java Business Objects), uslijedilo je 1999. godine. Ubrzo mu
je ime promijenjeno u BC4J (Business Components for Java).
BC4J je pokrivao onaj dio koji danas pokriva ADF BC.
Stranica 22ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
BC4J je pokrivao onaj dio koji danas pokriva ADF BC.
Uz BC4J, Oracle je počeo razvijati i odgovarajući IDE
JDeveloper, licencirajući 1998. tadašnji Borlandov alat
JBuilder. Oracle je 2001. temeljito preradio JDeveloper, pri
čemu ga je u potpunosti "prepisao" u Java kod.
Ubrzo je termin BC4J zamijenjen sa ADF.
Od 2005. godine Oracle JDeveloper IDE je besplatan.
Verzija ADF Essentials je besplatna od ljeta 2012.
Oracle ADFOracle ADF -- strukturastruktura
Stranica 23ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
OracleOracle ADFADF –– razvoj slojevarazvoj slojeva
Za razliku od "nižeg" dijela, tj. ADF BC-a (bivšeg BC4J-a),
"viši" dio, koji se odnosi na Controller i View dio MVC (Model
View Controller) arhitekture, razvijao se u velikim skokovima,
što je pratilo uobičajena zbivanja u cijeloj softverskoj industriji
vezanoj za Java web aplikacije.
Poznato je da su se dinamičke stranice u JEE arhitekturi prvo
Stranica 24ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Poznato je da su se dinamičke stranice u JEE arhitekturi prvo
radile u servlet tehnologiji. Na temelju nje nastala je JSP
(Java Server Pages) tehnologija. Oracle je ubrzo uvidio da te
tehnologije nisu dovoljno produktivne, jer ne omogućavaju
odgovarajuće module ili komponente, pa je razvio svoju
specijalnu tehnologiju UIX (User Interface XML).
Na neki način, UIX su preteča standardne JSF (Java Server
Faces) tehnologije, čija je (usavršena) varijanta i ADF JSF.
ADF BCADF BC EntityEntity ObjectObject (EO)(EO)
Dvije EO definicije (koje predstavljaju npr. dvije tablice na
bazi) mogu biti povezane asocijacijom, koja je najčešće
nastala iz FK veze među tablicama na bazi.
Stranica 25ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
ADF BCADF BC EOEO
i zaključavanje redakai zaključavanje redaka
Moguća je postavka za određeni AM ili za cijelu aplikaciju.
Moguće vrijednosti:
- None: ništa se ne radi;
- Pessimistic: ne preporuča se za web aplikacije, jer čim netko
pokuša promijeniti bilo koji podatak retka, redak ostaje
Stranica 26ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
pokuša promijeniti bilo koji podatak retka, redak ostaje
zaključan do kraja transakcije;
- Optimistic: optimističko zaključavanje (default); zaključava
redak tek na kraju, pa tada provjerava da li su stare
vrijednosti polja iz retka jednake onima koje su sada na bazi;
može se ubrzati pomoću svojstva Change Indicator;
- Optupdate: slično kao optimističko zaključavanje, ali bez
zaključavanja, pa ne pruža istu sigurnost.
ADF BCADF BC ViewView ObjectObject (VO)(VO)
Stranica 27ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Upit nad BC VOUpit nad BC VO--omom
Kada se izvodi upit (query) nad VO, može se odrediti koji će se
izvor podataka koristiti:
- Scan database tables: čita se baza, što je podrazumijevano
(default) ponašanje; postavlja se programski sa
vo.ViewObject.QUERY_MODE_SCAN_DATABASE_TABLES;
Stranica 28ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- Scan view rows: čita se query collection (kolekcija prvo mora
biti napunjena upitom na bazu); postavlja se programski sa
vo.ViewObject.QUERY_MODE_SCAN_VIEW_ROWS;
- Scan entity cache: čita se entity cache (moguće je samo za
VO temeljene nad EO); postavlja se programski sa
vo.ViewObject.QUERY_MODE_SCAN_ENTITY_ROWS.
Također, VO omogućavaju
sortiranje i filtriranje redaka u memoriji.
ApplicationApplication Module (AM)Module (AM)
Stranica 29ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
DijeljeniDijeljeni ((sharedshared))
aplikacijskiaplikacijski modulimoduli
Često je potrebno dijeliti podatke između više korisničkih
sesija.
Korisnička sesija nije isto što i sesija baze, jer se jedna
korisnička sesija može realizirati kroz više sesija baze, što
je standardno u web aplikacijama.
Stranica 30ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Za potrebe dijeljenja podataka, ADF ima tzv. dijeljene (ili
zajedničke - shared) AM instance.
AM instanca može biti dijeljena na razini aplikacije
(application level shared application module), pa tada svi
korisnici koriste istu AM instancu i vide iste podatke, ili
samo na razini korisničke sesije (session level shared AM),
gdje AM koje se nalaze u istoj aplikacijskoj sesiji, ali unutar
drugog vršnog AM, ne vide podatke iz tako dijeljene AM.
Kako pomiritiKako pomiriti statelessstateless HTTPHTTP
protokol iprotokol i statefulstateful transakcijetransakcije
Stranica 31ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Kako pomiritiKako pomiriti statelessstateless HTTPHTTP
ii statefulstateful transakcijetransakcije -- kolačićimakolačićima
Stranica 32ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
ApplicationApplication ModuleModule poolpool
ii ConnectionConnection poolpool (parametri)(parametri)
Stranica 33ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
ConnectionConnection poolpool
Postoje dvije vrste connection poolova, koje se koriste u
ovisnosti o tome da li se konekcije konfiguriraju kao JDBC
URL konekcije, ili JNDI name for a data source konekcije. Ako
se koriste JDBC URL konekcije, samo tada se koristi ADF
connection pool, a inače se koristi connection pool AS-a.
Osnovno pravilo za ADF connection pool je: po jedan
Stranica 34ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Osnovno pravilo za ADF connection pool je: po jedan
connection pool (dakle, skup konekcija, a ne jedna konekcija)
se kreira za svaki par <JDBCURL, Username> na svakom
JVM-u, pri čemu konekciju dobiva samo root AM instanca
(ugniježđene AM instance koriste tu istu konekciju).
Veza između AM instance i konekcije (iz connection
poola) je po defaultu stalna, ali se može postaviti da nije
(čime se u pravilu narušavaju performanse).
ApplicationApplication ModuleModule poolingpooling
Stranica 35ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
ApplicationApplication ModuleModule poolingpooling
-- stanja AMstanja AM--ovaova
AM pool je kolekcija AM instanci iste vrste. AM pool
omogućava da veći broj korisnika može (kvazi) istovremeno
raditi na manjem broju AM instanci.
AM instanca u poolu može biti u jednom od tri stanja:
- bezuvjetno slobodna za korištenje bilo kom korisniku;
Stranica 36ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
- slobodna za korištenje, ali referencirana na aplikacijsku
sesiju koja ju je prethodno koristila i koja još nije završila; u
ovom slučaju AM instanca može se ipak predati drugom
korisniku, ovisno o tzv. AM State Management Release
Levelu, pri čemu će standardno doći do tzv. pasivizacije
(a kasnije aktivacije) AM instance;
- zauzeta, kad neki korisnik (odnosno, njegova Java dretva
na AS-u) trenutačno koristi tu AM instancu.
ApplicationApplication ModuleModule poolingpooling
-- varijante otpuštanja AMvarijante otpuštanja AM--ovaova
Kod vraćanja AM instance u AM pool, postoje tri varijante
otpuštanja (release levels):
- Managed (default): AM pool preferira zadržati istu AM
instancu za istog korisnika, ako je to moguće; ako nije
moguće, radi se pasivizacija AM instance (podaci se
smještaju u bazu, rjeđe u datoteku), a kasnije se radi
Stranica 37ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
smještaju u bazu, rjeđe u datoteku), a kasnije se radi
aktivacija (druge) AM instance;
- Unmanaged: nikakvo stanje se ne pamti;
- Reserved: veza 1 : 1 između AM instance i korisnika;
podsjeća na Forms način rada; nije preporučljiva za web
aplikacije, iako je najjednostavnija!
- "Reserved AM release level considered harmful,
considered harmful." ☺☺☺☺
ApplicationApplication ModuleModule poolingpooling
-- testiranje pasivizacijetestiranje pasivizacije
Kao dio testiranja aplikacije, vrlo je preporučljiva praksa da se
AM testiraju sa konfiguracijskim parametrom
jbo.ampool.doampooling postavljenim na false.
Takva postavka zapravo forsira pasivizaciju i aktivaciju
kod svakog zahtjeva, čime se mogu naći greške koje bi
se javile tek u malom broju slučajeva normalnog rada.
Stranica 38ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
se javile tek u malom broju slučajeva normalnog rada.
Npr. ako u jednom HTTP request-response paru postavimo
varijablu u paketu na neku vrijednost, u drugom HTTP
request-response paru (iste aplikacijske sesije) očekivali
bismo da se pročita ista vrijednost; no, kod pasivizacije to više
neće biti tako, jer drugi HTTP par može dobiti drugu AM
instancu, što znači i drugu sesiju na bazi.
ZaključakZaključak
Izrada web poslovnih aplikacija postala je previše
kompleksna. No, ponekad je moguće neke stvari
pojednostaviti.
Npr. nije isto da li radimo web aplikaciju za manji broj
poznatih korisnika, ili ogroman broj nepoznatih korisnika.
Barem ponekad, dobro je pisati programski kod za integritet
Stranica 39ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
Barem ponekad, dobro je pisati programski kod za integritet
podataka i kod za poslovnu logiku (uglavnom) u bazi,
a ne (uglavnom) na aplikacijskom serveru (što je uobičajeno).
Zbog (ne)sigurnosti, nije dobro u bazi uvijek imati samo
jednog usera za pristup iz web aplikacije.
Dobro je uvesti više razina usera, pa čak i "stari" način rada
jedna osoba = jedan user na bazi (uz upotrebu proxy usera).
ZaključakZaključak
Ako radimo sa Oracle ADF-om, poželjno je raditi tako da
konekcija između baze i aplikacijskog modula bude stalna
(što je default), ne samo zbog boljih performansi, već i zbog
lakšeg rada s transakcijama.
Po našem mišljenju, veza između korisničke sesije (u web
pregledniku) i aplikacijskog modula treba kod poslovnih
Stranica 40ISTRA INFORMATIČKI INŽENJERING
JavaCro 2014 - Da li postoji samo jedna
"ispravna" arhitektura web poslovnih aplikacija?
pregledniku) i aplikacijskog modula treba kod poslovnih
aplikacija biti Reserved, a ne Managed (što je default), kod
kojega (Managed) može doći do pasivizacije / aktivacije
AM-a, što otežava rad s transakcijama.
Nažalost, često developeri gledaju na DBMS sustav kao na
"crnu kutiju". Nemaju vremena za dublje upoznavanje s
mogućnostima konkretnog DBMS-a, drže da su svi DBMS-ovi
vrlo slični, žele pisati generički kod (neovisan o DBMS-u) itd.

Mais conteúdo relacionado

Mais procurados

Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Nenad Pecanac
 
Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)IT Showoff
 

Mais procurados (11)

JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
 
JavaCro'15 - Microservice architecture - Nenad Pečanac
JavaCro'15 - Microservice architecture - Nenad PečanacJavaCro'15 - Microservice architecture - Nenad Pečanac
JavaCro'15 - Microservice architecture - Nenad Pečanac
 
HUJAK skupština 2014
HUJAK skupština 2014HUJAK skupština 2014
HUJAK skupština 2014
 
JavaCro'15 - Enterprise service bus - Juraj Ćutić
JavaCro'15 - Enterprise service bus - Juraj ĆutićJavaCro'15 - Enterprise service bus - Juraj Ćutić
JavaCro'15 - Enterprise service bus - Juraj Ćutić
 
JavaCro'15 - API as a new architecture - Miroslav Rešetar
JavaCro'15 - API as a new architecture - Miroslav RešetarJavaCro'15 - API as a new architecture - Miroslav Rešetar
JavaCro'15 - API as a new architecture - Miroslav Rešetar
 
JavaCro'15 - Internet of things with RPi and Java - Matija Novak, Dragutin Ke...
JavaCro'15 - Internet of things with RPi and Java - Matija Novak, Dragutin Ke...JavaCro'15 - Internet of things with RPi and Java - Matija Novak, Dragutin Ke...
JavaCro'15 - Internet of things with RPi and Java - Matija Novak, Dragutin Ke...
 
Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Mean Stack JavaCro 2014
Mean Stack JavaCro 2014
 
Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)
 
JavaCro'15 - Java application crashed, now what - Matija Tomašković
JavaCro'15 - Java application crashed, now what - Matija TomaškovićJavaCro'15 - Java application crashed, now what - Matija Tomašković
JavaCro'15 - Java application crashed, now what - Matija Tomašković
 
JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...
JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...
JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...
 
JavaCro'15 - BOOTylicious Spring - Karlo Novak
JavaCro'15 - BOOTylicious Spring - Karlo NovakJavaCro'15 - BOOTylicious Spring - Karlo Novak
JavaCro'15 - BOOTylicious Spring - Karlo Novak
 

Destaque

Destaque (20)

JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...
JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...
JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...
 
JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...
JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...
JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...
 
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir DžaferovićJavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
 
JavaCro'14 - Profile any environment with Java Flight Recorder – Johan Janssen
JavaCro'14 - Profile any environment with Java Flight Recorder – Johan JanssenJavaCro'14 - Profile any environment with Java Flight Recorder – Johan Janssen
JavaCro'14 - Profile any environment with Java Flight Recorder – Johan Janssen
 
JavaCro'14 - JCalc Calculations in Java with open source API – Davor Sauer
JavaCro'14 - JCalc Calculations in Java with open source API – Davor SauerJavaCro'14 - JCalc Calculations in Java with open source API – Davor Sauer
JavaCro'14 - JCalc Calculations in Java with open source API – Davor Sauer
 
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško VukmanovićJavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
 
JavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
JavaCro'14 - ZeroMQ and Java(Script) – Mladen ČikaraJavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
JavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
 
JavaCro'14 - Drools Decision tables – form of human-readable rules – Dragan J...
JavaCro'14 - Drools Decision tables – form of human-readable rules – Dragan J...JavaCro'14 - Drools Decision tables – form of human-readable rules – Dragan J...
JavaCro'14 - Drools Decision tables – form of human-readable rules – Dragan J...
 
JavaCro'14 - How to handle large amounts of data in real time using a cloud e...
JavaCro'14 - How to handle large amounts of data in real time using a cloud e...JavaCro'14 - How to handle large amounts of data in real time using a cloud e...
JavaCro'14 - How to handle large amounts of data in real time using a cloud e...
 
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
 
JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...
JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...
JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...
 
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter PilgrimJavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
 
JavaCro'14 - Log as basis for distributed systems – Vjeran Marčinko
JavaCro'14 - Log as basis for distributed systems – Vjeran MarčinkoJavaCro'14 - Log as basis for distributed systems – Vjeran Marčinko
JavaCro'14 - Log as basis for distributed systems – Vjeran Marčinko
 
JavaCro'14 - Going Digital with Java EE - Peter Pilgrim
JavaCro'14 - Going Digital with Java EE - Peter PilgrimJavaCro'14 - Going Digital with Java EE - Peter Pilgrim
JavaCro'14 - Going Digital with Java EE - Peter Pilgrim
 
JavaCro'14 - Sustainability of business performance and best practices – Zlat...
JavaCro'14 - Sustainability of business performance and best practices – Zlat...JavaCro'14 - Sustainability of business performance and best practices – Zlat...
JavaCro'14 - Sustainability of business performance and best practices – Zlat...
 
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija KranjecJavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
 
JavaCro'14 - Vaadin scalability myth – Gordan Ivanović
JavaCro'14 - Vaadin scalability myth – Gordan IvanovićJavaCro'14 - Vaadin scalability myth – Gordan Ivanović
JavaCro'14 - Vaadin scalability myth – Gordan Ivanović
 
JavaCro'14 - GWT rebooted – Gordan Krešić
JavaCro'14 - GWT rebooted – Gordan KrešićJavaCro'14 - GWT rebooted – Gordan Krešić
JavaCro'14 - GWT rebooted – Gordan Krešić
 
JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...
JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...
JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...
 
JavaCro'14 - Automatic database migrations – Marko Elezović
JavaCro'14 - Automatic database migrations – Marko ElezovićJavaCro'14 - Automatic database migrations – Marko Elezović
JavaCro'14 - Automatic database migrations – Marko Elezović
 

Semelhante a JavaCro'14 - Is there a single “correct” web architecture for business apps – Zlatko Sirotić

WebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeWebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeMatija Šmalcelj
 
Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Denis Kranjčec
 
Oracle information age co croz-neos v2.2.
Oracle information age co croz-neos v2.2.Oracle information age co croz-neos v2.2.
Oracle information age co croz-neos v2.2.Oracle Hrvatska
 
Kako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloudKako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloudDubravko Marak
 
Big Brother Hrvatska 2007 - Case Study - BizBuzz
Big Brother Hrvatska 2007 - Case Study - BizBuzzBig Brother Hrvatska 2007 - Case Study - BizBuzz
Big Brother Hrvatska 2007 - Case Study - BizBuzzwebburza
 
Mob Ellposs - projektna dokumentacija
Mob Ellposs - projektna dokumentacijaMob Ellposs - projektna dokumentacija
Mob Ellposs - projektna dokumentacijaSlaven Brumec
 
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4Mihovil Rister
 
White paper - Migracija IT rješenja u Cloud Hrvatskog Telekoma
White paper - Migracija IT rješenja u Cloud Hrvatskog TelekomaWhite paper - Migracija IT rješenja u Cloud Hrvatskog Telekoma
White paper - Migracija IT rješenja u Cloud Hrvatskog TelekomaHrvatski Telekom
 
Vert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaVert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaFive
 
Silverlight Business Overview
Silverlight Business OverviewSilverlight Business Overview
Silverlight Business OverviewCrowd
 
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeVert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeMihovil Rister
 
Angular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump DayAngular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump DayNETMedia
 
Gordan Orlić: Optimizacija frontenda
Gordan Orlić: Optimizacija frontendaGordan Orlić: Optimizacija frontenda
Gordan Orlić: Optimizacija frontendaInitium
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. Stipe Predanic
 
AngularJS - Ivan Vučičević
AngularJS - Ivan Vučičević AngularJS - Ivan Vučičević
AngularJS - Ivan Vučičević Kruno Ris
 
Microsoft Community sastanak - Vođenje softverske imovine
Microsoft Community sastanak - Vođenje softverske imovineMicrosoft Community sastanak - Vođenje softverske imovine
Microsoft Community sastanak - Vođenje softverske imovineTomislav Lulic
 
Branimir Šloser - Razbor IT (IT Showoff)
Branimir Šloser - Razbor IT (IT Showoff)Branimir Šloser - Razbor IT (IT Showoff)
Branimir Šloser - Razbor IT (IT Showoff)IT Showoff
 
Algoritmi i strukture_podataka_2016-05_v01
Algoritmi i strukture_podataka_2016-05_v01Algoritmi i strukture_podataka_2016-05_v01
Algoritmi i strukture_podataka_2016-05_v01Leonardo Miljko
 
R11 Vadas One Click Clone
R11 Vadas One Click CloneR11 Vadas One Click Clone
R11 Vadas One Click Cloneguest9c64c8c
 

Semelhante a JavaCro'14 - Is there a single “correct” web architecture for business apps – Zlatko Sirotić (20)

WebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeWebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacije
 
Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?
 
Uvod u aplikacije - Luka Mandić
Uvod u aplikacije - Luka MandićUvod u aplikacije - Luka Mandić
Uvod u aplikacije - Luka Mandić
 
Oracle information age co croz-neos v2.2.
Oracle information age co croz-neos v2.2.Oracle information age co croz-neos v2.2.
Oracle information age co croz-neos v2.2.
 
Kako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloudKako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloud
 
Big Brother Hrvatska 2007 - Case Study - BizBuzz
Big Brother Hrvatska 2007 - Case Study - BizBuzzBig Brother Hrvatska 2007 - Case Study - BizBuzz
Big Brother Hrvatska 2007 - Case Study - BizBuzz
 
Mob Ellposs - projektna dokumentacija
Mob Ellposs - projektna dokumentacijaMob Ellposs - projektna dokumentacija
Mob Ellposs - projektna dokumentacija
 
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4
 
White paper - Migracija IT rješenja u Cloud Hrvatskog Telekoma
White paper - Migracija IT rješenja u Cloud Hrvatskog TelekomaWhite paper - Migracija IT rješenja u Cloud Hrvatskog Telekoma
White paper - Migracija IT rješenja u Cloud Hrvatskog Telekoma
 
Vert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaVert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, Javantura
 
Silverlight Business Overview
Silverlight Business OverviewSilverlight Business Overview
Silverlight Business Overview
 
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeVert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
 
Angular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump DayAngular 2 and TypeScript - 2016 Dump Day
Angular 2 and TypeScript - 2016 Dump Day
 
Gordan Orlić: Optimizacija frontenda
Gordan Orlić: Optimizacija frontendaGordan Orlić: Optimizacija frontenda
Gordan Orlić: Optimizacija frontenda
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
 
AngularJS - Ivan Vučičević
AngularJS - Ivan Vučičević AngularJS - Ivan Vučičević
AngularJS - Ivan Vučičević
 
Microsoft Community sastanak - Vođenje softverske imovine
Microsoft Community sastanak - Vođenje softverske imovineMicrosoft Community sastanak - Vođenje softverske imovine
Microsoft Community sastanak - Vođenje softverske imovine
 
Branimir Šloser - Razbor IT (IT Showoff)
Branimir Šloser - Razbor IT (IT Showoff)Branimir Šloser - Razbor IT (IT Showoff)
Branimir Šloser - Razbor IT (IT Showoff)
 
Algoritmi i strukture_podataka_2016-05_v01
Algoritmi i strukture_podataka_2016-05_v01Algoritmi i strukture_podataka_2016-05_v01
Algoritmi i strukture_podataka_2016-05_v01
 
R11 Vadas One Click Clone
R11 Vadas One Click CloneR11 Vadas One Click Clone
R11 Vadas One Click Clone
 

Mais de HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association

Mais de HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association (20)

Java cro'21 the best tools for java developers in 2021 - hujak
Java cro'21   the best tools for java developers in 2021 - hujakJava cro'21   the best tools for java developers in 2021 - hujak
Java cro'21 the best tools for java developers in 2021 - hujak
 
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK KeynoteJavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
 
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan LozićJavantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
 
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
 
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
 
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander RadovanJavantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
 
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
 
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
 
Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...
 
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej VidakovićJavantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
 
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
 
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
 
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
 
Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...
 
Javantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela PetracJavantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela Petrac
 
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje RuhekJavantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
 
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
 
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario KusekJavantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
 

JavaCro'14 - Is there a single “correct” web architecture for business apps – Zlatko Sirotić

  • 1. DA LI POSTOJI SAMO JEDNA "ISPRAVNA" ARHITEKTURA WEB POSLOVNIH APLIKACIJA Stranica 1ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? Zlatko Sirotić, univ.spec.inf. Istra informatički inženjering d.o.o. Pula
  • 2. Malo marketingaMalo marketinga ☺☺ Stranica 2ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 3. Autor je (bar neko vrijeme) radioAutor je (bar neko vrijeme) radio s programskim jezicima / alatima:s programskim jezicima / alatima: - "Assembler" za Texas Instruments TI-58 kalkulator (1981.) - Fortran, BASIC (1982.) - Pascal, Assembler za Zilog Z80 (ZX Spectrum) (1983.) - Cobol, dBASE III, Prolog (1984.) - ADS (Application Development System (1985. – 1999.) Stranica 3ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? - ADS (Application Development System (1985. – 1999.) - Oracle Database, Designer, Forms, Reports (1995. - ) - Eiffel, C, C++ (1998. - ) - Java (2003. - ) - Scala (2012. - ) - Oracle ADF (2013. - )
  • 4. Neki autorovi radovi zadnjih godinaNeki autorovi radovi zadnjih godina - HrOUG 2013: Transakcije i Oracle - baza, Forms, ADF - CASE 2013: Što poslije Pascala? Pa … Scala! - HrOUG 2012: Ima neka loša veza (priča o in-doubt distribuiranim transakcijama) - CASE 2012a: Utjecaj razvoja mikroprocesora Stranica 4ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? - CASE 2012a: Utjecaj razvoja mikroprocesora na programiranje - CASE 2012b: Konkurentno programiranje u Javi i Eiffelu - HrOUG 2011: Kriptografija u Oracle bazi - CASE 2011: SOA i poslovna pravila - HrOUG 2010: Biometrijski sustavi – greške i ranjivosti - CASE 2010: Revizija sigurnosti Oracle SUBP-a
  • 5. TemeTeme U ovoj prezentaciji razmatraju se (i) sljedeća pitanja: - Da li je izrada web poslovnih aplikacija postala previše kompleksna? Stranica 5ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? - Da li pisati programski kod za integritet podataka i kod za poslovnu logiku samo u bazi, samo na aplikacijskom serveru, samo na klijentu, ili nekom kombinacijom toga? - Da li u bazi uvijek imati samo jednog usera za pristup iz web aplikacije, ili je u redu "stari" način rada: jedna osoba = jedan user na bazi?
  • 6. TemeTeme (nastavak)(nastavak) U ovoj prezentaciji razmatraju se (i) sljedeća pitanja: - Da li konekcija između baze i aplikacijskog modula treba biti stalna ili privremena (na primjeru Oracle ADF-a)? Stranica 6ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? - Da li veza između korisničke sesije u web pregledniku i aplikacijskog modula treba biti stalna ili privremena (ADF)? - Kako baratati s transakcijama? HTTP je stateless - želimo li atomarne transakcije? Ispravno rukovanje transakcijama vrlo je bitno za poslovne aplikacije.
  • 7. Da li jeDa li je izrada web poslovnihizrada web poslovnih aplapl.. postalapostala previše kompleksna?previše kompleksna? Mogućnosti DBMS sustava se stalno povećavaju (plavo). No, negdje poslije 2000. godine, te se mogućnosti sve manje koriste (crveno). (Prezentacija Toon Koppelaars-a) Stranica 7ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 8. Da li je izrada web poslovnihDa li je izrada web poslovnih aplapl.. postala previše kompleksna?postala previše kompleksna? Prosječan developer nekada je mogao naučiti alat za izradu poslovnih aplikacija za par tjedana. Danas mu treba i par godina. Stranica 8ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 9. Da li je izrada web poslovnihDa li je izrada web poslovnih aplapl.. postala previše kompleksna?postala previše kompleksna? Gdje se može pisati programski kod u (standardnoj) JEE arhitekturi: Stranica 9ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 10. Da li je izrada web poslovnihDa li je izrada web poslovnih aplapl.. postala previše kompleksna?postala previše kompleksna? Različiti pristupi pisanju tankog ili debelog koda u različitim arhitekturnim slojevima; 1. varijanta je najčešća 8. varijanta (sve tanko) ne postoji – ipak treba nešto (i) programirati Stranica 10ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 11. Kamo stavitiKamo staviti određeni programski kod?određeni programski kod? Može se reći da poslovne aplikacije imaju tri vrste programskog koda: - Kod za rad s korisničkim sučeljem. - Kod za poslovnu logiku. On se može podijeliti na kod za Stranica 11ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? - Kod za poslovnu logiku. On se može podijeliti na kod za čitanje podataka iz baze i kod za ažuriranje podataka u bazi. Kod za ažuriranje podataka u bazi vrlo često koristi (i) čitanje podataka iz baze. - Kod za osiguravanje integriteta podataka u bazi. Često se ovaj kod brka s kodom za poslovnu logiku, pa nije čudno da se u praksi često isprepliću kod za poslovnu logiku i kod za osiguravanje integriteta podataka.
  • 12. Kamo stavitiKamo staviti određeni programskiodređeni programski kod?kod? Programski kod za rad s korisničkim sučeljem, kod web aplikacija može se nalaziti: - Na strani aplikacijskog servera, što je najčešće. U JEE arhitekturi riječ je o Java servletima (ili nadogradnji servleta, kao štu su JSP, JSF i dr.). Stranica 12ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? kao štu su JSP, JSF i dr.). - Na strani klijenta. Najčešće se danas takav kod piše u JavaScriptu, a relativno rijetko u Javi kao Java applet. - Na strani baze, što je dosta rijetko. Takvu arhitekturu ima npr. Oracle APEX alat, kod kojeg se HTML stranice dinamički generiraju pomoću APEX-ovih PL/SQL paketa na bazi.
  • 13. Kamo stavitiKamo staviti određeni programskiodređeni programski kod?kod? Programski kod za poslovnu logiku, kod web aplikacija može se nalaziti: - Na strani aplikacijskog servera, što je vrlo često. U JEE arhitekturi riječ je o najčešće o EJB-ovima. Stranica 13ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? - Na strani baze. Riječ je o tzv. pohranjenim (stored) procedurama / funkcijama i paketima na bazi. Vrlo često se na strani baze sprema programski kod za tzv. batch obradu. Činjenica je da se najčešće najbrže izvršava upravo kod (za poslovnu logiku) koji se nalazi na bazi. - Na strani klijenta gotovo nikad, čak niti kad se na klijent strani nalaze Java appleti.
  • 14. Kamo stavitiKamo staviti određeni programskiodređeni programski kod?kod? Programski kod za osiguravanje integriteta podataka u bazi, kod web aplikacija može se nalaziti: - Na strani baze. Najčešće se koriste deklarativna integritetna ograničenja baze, kao što su integritetna ograničenja za jedinstveni ključ (UK), vanjski ključ (FK) i check constraint (CK). Stranica 14ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? (CK). Iako je SQL standard još od 1992. uključio CREATE ASSERTION naredbu, praktički niti jedan SQL DBMS sustav ju ne podržava (nedavno su se pojavili ne-SQL relacijski DBMS sustavi koji ju podržavaju). Zbog toga, kada se programski kod za osiguravanje integriteta podataka želi u cijelosti pisati na strani baze, mora se pribjeći korištenju okidača baze (proceduralni pristup).
  • 15. Kamo stavitiKamo staviti određeni programskiodređeni programski kod?kod? Programski kod za osiguravanje integriteta podataka, osim na bazi, može se nalaziti: - Na strani aplikacijskog servera. Ovo je vrlo čest pristup u praksi. Želja da se izbjegne (dosta mukotrpna) realizacija integriteta podataka pomoću okidača baze često se navodi kao dovoljan razlog za ovakav izbor. No, time se omogućava Stranica 15ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? kao dovoljan razlog za ovakav izbor. No, time se omogućava da baza bude nezaštićena (u smislu integriteta, ne u smislu sigurnosti podataka općenito). Naime, jedna aplikacija može savršeno čuvati integritet podataka u bazi, dok, nažalost, druga aplikacija može biti tako pisana da to ne osigurava. - Na strani klijenta. Vrlo često se tako rade samo jednostavnije provjere integriteta podataka, koje su istovremeno realizirane i na strani aplikacijskog servera ili/i baze.
  • 16. KolikoKoliko userausera imati na bazi?imati na bazi? U klasičnim klijent-server aplikacijama, obično se radilo tako da je svaki korisnik (osoba) imao svoj vlastiti pristup u bazu, tj. svoj vlastiti korisnički račun (user, shemu) na bazi. Broj korisnika (osoba) obično je bio reda par stotina (ili manje), i svi korisnici su bili poznati (neanonimni). Vrlo često web aplikacije rade se puno većim brojem Stranica 16ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? Vrlo često web aplikacije rade se puno većim brojem korisnika (osoba), koji su često i anonimni. Tada izgleda logično da se napušta nekadašnji pristup: jedan korisnik (osoba) = jedan korisnički račun (user) na bazi. Najčešće se uz aplikacijsku shemu (kojih može biti i više, npr. jedna za tablice, a druga za pakete na bazi) radi samo jedan korisnički račun (user). No, time se neminovno smanjuje sigurnost baze.
  • 17. KolikoKoliko userausera imati na bazi?imati na bazi? Nije loše koristiti srednji pristup, kod kojeg se odrede različite vrste korisnika (osoba), a onda se za svaku vrstu korisnika napravi poseban korisnički račun (korisnička shema) na bazi. Na taj način, ako netko provali u bazu kroz korisnički račun koji ima manja prava, ne može raditi ono što bi mogao da je provalio kroz korisnički račun sa većim pravima. Stranica 17ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? provalio kroz korisnički račun sa većim pravima. No, ponekad se i kod web aplikacija može primijeniti "stari pristup", ako su svi korisnici poznati (neanonimni) i ako ih nema više od nekoliko stotina. Tada se kao prepreka pojavljuje činjenica da se kod web aplikacija često koristi pool konekcija na bazu (connection pool), pa se ne želi da svaki korisnik ima svoj poseban pool. No, tome se može doskočiti primjenom tzv. proxy korisničkog računa.
  • 18. OracleOracle FormsForms alatalat Oracle Forms je Rapid Application Development (RAD) alat, koji je Oracle napravio početkom 80-ih, nedugo nakon nastanka Oracle baze verzije 2 (verzija 1 nije nikada postojala), i radio je kao znakovno orijentirana (character mode) aplikacija na serveru. Sredinom 90-ih napravljena je klijent-server GUI varijanta. Stranica 18ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? Sredinom 90-ih napravljena je klijent-server GUI varijanta. Klijent-server varijanta pratila je baze 6, 7 i 8, a Forms verzije bile su 4, 4.5, 5, 6 i 6i. U Forms verziji 6 pojavila se paralelno i web varijanta - Web Forms. Nakon verzije 6i, klijent-server varijanta više ne postoji, tj. verzije od 9i do 11gR2 (verzije 7 i 8 nikad nisu postojale) rade isključivo kao web Forms aplikacija (koja nije baš jeftina).
  • 19. OracleOracle FormsForms -- klijentklijent--server varijantaserver varijanta Oracle Forms je izvorno pisan u jeziku C, a i sadašnji kod je uglavnom C kod, osim Java appleta (koji se izvršava u pregledniku), te određenih pomoćnih dijelova na AS-u. Developeri u Forms-ima mogu koristiti jezik PL/SQL (Forms ima svoj vlastiti PL/SQL engine), SQL (koji se šalje bazi) i specijalne Forms naredbe (koje Stranica 19ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? SQL (koji se šalje bazi) i specijalne Forms naredbe (koje baza nema, uglavnom su to naredbe za korisničko sučelje). U novijim verzijama može se koristiti i Java. U klijent server varijanti, Forms aplikacija se u cijelosti izvršava na klijentu, koji komunicira sa bazom preko jedne konekcije, a kroz tu konekciju može ići više sesija baze, tako da svaki Forms aplikacijski modul može imati (ne mora) vlastitu sesiju baze.
  • 20. OracleOracle FormsForms –– web varijantaweb varijanta Stranica 20ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 21. OracleOracle FormsForms -- web varijantaweb varijanta Web varijanta radi tako da Java applet na klijentu (koji se brine samo za kreiranje korisničkog sučelja) surađuje sa Forms servisom na aplikacijskom serveru. Forms servis manje-više čini onaj isti kod (pisan u C-u) kao i u klijent-server varijanti. I u ovoj varijanti: Stranica 21ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? I u ovoj varijanti: - Forms servis drži stalnu konekciju s bazom; - korisnik stalno drži Forms module s kojima radi, sve dok ne završi rad. U suštini, ovaj način rada nema nekih značajnih razlika u odnosu na klijent-server rad.
  • 22. Oracle ADF (Oracle ADF (ApplicationApplication Development Framework)Development Framework) 6 mjeseci nakon što je Sun izdao verziju Jave 1.0, u Oracleu su odlučili raditi RAD alat temeljen na jeziku Java. Prvo izdanje frameworka, koji se tada nije zvao ADF već JBO (Java Business Objects), uslijedilo je 1999. godine. Ubrzo mu je ime promijenjeno u BC4J (Business Components for Java). BC4J je pokrivao onaj dio koji danas pokriva ADF BC. Stranica 22ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? BC4J je pokrivao onaj dio koji danas pokriva ADF BC. Uz BC4J, Oracle je počeo razvijati i odgovarajući IDE JDeveloper, licencirajući 1998. tadašnji Borlandov alat JBuilder. Oracle je 2001. temeljito preradio JDeveloper, pri čemu ga je u potpunosti "prepisao" u Java kod. Ubrzo je termin BC4J zamijenjen sa ADF. Od 2005. godine Oracle JDeveloper IDE je besplatan. Verzija ADF Essentials je besplatna od ljeta 2012.
  • 23. Oracle ADFOracle ADF -- strukturastruktura Stranica 23ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 24. OracleOracle ADFADF –– razvoj slojevarazvoj slojeva Za razliku od "nižeg" dijela, tj. ADF BC-a (bivšeg BC4J-a), "viši" dio, koji se odnosi na Controller i View dio MVC (Model View Controller) arhitekture, razvijao se u velikim skokovima, što je pratilo uobičajena zbivanja u cijeloj softverskoj industriji vezanoj za Java web aplikacije. Poznato je da su se dinamičke stranice u JEE arhitekturi prvo Stranica 24ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? Poznato je da su se dinamičke stranice u JEE arhitekturi prvo radile u servlet tehnologiji. Na temelju nje nastala je JSP (Java Server Pages) tehnologija. Oracle je ubrzo uvidio da te tehnologije nisu dovoljno produktivne, jer ne omogućavaju odgovarajuće module ili komponente, pa je razvio svoju specijalnu tehnologiju UIX (User Interface XML). Na neki način, UIX su preteča standardne JSF (Java Server Faces) tehnologije, čija je (usavršena) varijanta i ADF JSF.
  • 25. ADF BCADF BC EntityEntity ObjectObject (EO)(EO) Dvije EO definicije (koje predstavljaju npr. dvije tablice na bazi) mogu biti povezane asocijacijom, koja je najčešće nastala iz FK veze među tablicama na bazi. Stranica 25ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 26. ADF BCADF BC EOEO i zaključavanje redakai zaključavanje redaka Moguća je postavka za određeni AM ili za cijelu aplikaciju. Moguće vrijednosti: - None: ništa se ne radi; - Pessimistic: ne preporuča se za web aplikacije, jer čim netko pokuša promijeniti bilo koji podatak retka, redak ostaje Stranica 26ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? pokuša promijeniti bilo koji podatak retka, redak ostaje zaključan do kraja transakcije; - Optimistic: optimističko zaključavanje (default); zaključava redak tek na kraju, pa tada provjerava da li su stare vrijednosti polja iz retka jednake onima koje su sada na bazi; može se ubrzati pomoću svojstva Change Indicator; - Optupdate: slično kao optimističko zaključavanje, ali bez zaključavanja, pa ne pruža istu sigurnost.
  • 27. ADF BCADF BC ViewView ObjectObject (VO)(VO) Stranica 27ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 28. Upit nad BC VOUpit nad BC VO--omom Kada se izvodi upit (query) nad VO, može se odrediti koji će se izvor podataka koristiti: - Scan database tables: čita se baza, što je podrazumijevano (default) ponašanje; postavlja se programski sa vo.ViewObject.QUERY_MODE_SCAN_DATABASE_TABLES; Stranica 28ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? - Scan view rows: čita se query collection (kolekcija prvo mora biti napunjena upitom na bazu); postavlja se programski sa vo.ViewObject.QUERY_MODE_SCAN_VIEW_ROWS; - Scan entity cache: čita se entity cache (moguće je samo za VO temeljene nad EO); postavlja se programski sa vo.ViewObject.QUERY_MODE_SCAN_ENTITY_ROWS. Također, VO omogućavaju sortiranje i filtriranje redaka u memoriji.
  • 29. ApplicationApplication Module (AM)Module (AM) Stranica 29ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 30. DijeljeniDijeljeni ((sharedshared)) aplikacijskiaplikacijski modulimoduli Često je potrebno dijeliti podatke između više korisničkih sesija. Korisnička sesija nije isto što i sesija baze, jer se jedna korisnička sesija može realizirati kroz više sesija baze, što je standardno u web aplikacijama. Stranica 30ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? Za potrebe dijeljenja podataka, ADF ima tzv. dijeljene (ili zajedničke - shared) AM instance. AM instanca može biti dijeljena na razini aplikacije (application level shared application module), pa tada svi korisnici koriste istu AM instancu i vide iste podatke, ili samo na razini korisničke sesije (session level shared AM), gdje AM koje se nalaze u istoj aplikacijskoj sesiji, ali unutar drugog vršnog AM, ne vide podatke iz tako dijeljene AM.
  • 31. Kako pomiritiKako pomiriti statelessstateless HTTPHTTP protokol iprotokol i statefulstateful transakcijetransakcije Stranica 31ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 32. Kako pomiritiKako pomiriti statelessstateless HTTPHTTP ii statefulstateful transakcijetransakcije -- kolačićimakolačićima Stranica 32ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 33. ApplicationApplication ModuleModule poolpool ii ConnectionConnection poolpool (parametri)(parametri) Stranica 33ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 34. ConnectionConnection poolpool Postoje dvije vrste connection poolova, koje se koriste u ovisnosti o tome da li se konekcije konfiguriraju kao JDBC URL konekcije, ili JNDI name for a data source konekcije. Ako se koriste JDBC URL konekcije, samo tada se koristi ADF connection pool, a inače se koristi connection pool AS-a. Osnovno pravilo za ADF connection pool je: po jedan Stranica 34ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? Osnovno pravilo za ADF connection pool je: po jedan connection pool (dakle, skup konekcija, a ne jedna konekcija) se kreira za svaki par <JDBCURL, Username> na svakom JVM-u, pri čemu konekciju dobiva samo root AM instanca (ugniježđene AM instance koriste tu istu konekciju). Veza između AM instance i konekcije (iz connection poola) je po defaultu stalna, ali se može postaviti da nije (čime se u pravilu narušavaju performanse).
  • 35. ApplicationApplication ModuleModule poolingpooling Stranica 35ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija?
  • 36. ApplicationApplication ModuleModule poolingpooling -- stanja AMstanja AM--ovaova AM pool je kolekcija AM instanci iste vrste. AM pool omogućava da veći broj korisnika može (kvazi) istovremeno raditi na manjem broju AM instanci. AM instanca u poolu može biti u jednom od tri stanja: - bezuvjetno slobodna za korištenje bilo kom korisniku; Stranica 36ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? - slobodna za korištenje, ali referencirana na aplikacijsku sesiju koja ju je prethodno koristila i koja još nije završila; u ovom slučaju AM instanca može se ipak predati drugom korisniku, ovisno o tzv. AM State Management Release Levelu, pri čemu će standardno doći do tzv. pasivizacije (a kasnije aktivacije) AM instance; - zauzeta, kad neki korisnik (odnosno, njegova Java dretva na AS-u) trenutačno koristi tu AM instancu.
  • 37. ApplicationApplication ModuleModule poolingpooling -- varijante otpuštanja AMvarijante otpuštanja AM--ovaova Kod vraćanja AM instance u AM pool, postoje tri varijante otpuštanja (release levels): - Managed (default): AM pool preferira zadržati istu AM instancu za istog korisnika, ako je to moguće; ako nije moguće, radi se pasivizacija AM instance (podaci se smještaju u bazu, rjeđe u datoteku), a kasnije se radi Stranica 37ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? smještaju u bazu, rjeđe u datoteku), a kasnije se radi aktivacija (druge) AM instance; - Unmanaged: nikakvo stanje se ne pamti; - Reserved: veza 1 : 1 između AM instance i korisnika; podsjeća na Forms način rada; nije preporučljiva za web aplikacije, iako je najjednostavnija! - "Reserved AM release level considered harmful, considered harmful." ☺☺☺☺
  • 38. ApplicationApplication ModuleModule poolingpooling -- testiranje pasivizacijetestiranje pasivizacije Kao dio testiranja aplikacije, vrlo je preporučljiva praksa da se AM testiraju sa konfiguracijskim parametrom jbo.ampool.doampooling postavljenim na false. Takva postavka zapravo forsira pasivizaciju i aktivaciju kod svakog zahtjeva, čime se mogu naći greške koje bi se javile tek u malom broju slučajeva normalnog rada. Stranica 38ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? se javile tek u malom broju slučajeva normalnog rada. Npr. ako u jednom HTTP request-response paru postavimo varijablu u paketu na neku vrijednost, u drugom HTTP request-response paru (iste aplikacijske sesije) očekivali bismo da se pročita ista vrijednost; no, kod pasivizacije to više neće biti tako, jer drugi HTTP par može dobiti drugu AM instancu, što znači i drugu sesiju na bazi.
  • 39. ZaključakZaključak Izrada web poslovnih aplikacija postala je previše kompleksna. No, ponekad je moguće neke stvari pojednostaviti. Npr. nije isto da li radimo web aplikaciju za manji broj poznatih korisnika, ili ogroman broj nepoznatih korisnika. Barem ponekad, dobro je pisati programski kod za integritet Stranica 39ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? Barem ponekad, dobro je pisati programski kod za integritet podataka i kod za poslovnu logiku (uglavnom) u bazi, a ne (uglavnom) na aplikacijskom serveru (što je uobičajeno). Zbog (ne)sigurnosti, nije dobro u bazi uvijek imati samo jednog usera za pristup iz web aplikacije. Dobro je uvesti više razina usera, pa čak i "stari" način rada jedna osoba = jedan user na bazi (uz upotrebu proxy usera).
  • 40. ZaključakZaključak Ako radimo sa Oracle ADF-om, poželjno je raditi tako da konekcija između baze i aplikacijskog modula bude stalna (što je default), ne samo zbog boljih performansi, već i zbog lakšeg rada s transakcijama. Po našem mišljenju, veza između korisničke sesije (u web pregledniku) i aplikacijskog modula treba kod poslovnih Stranica 40ISTRA INFORMATIČKI INŽENJERING JavaCro 2014 - Da li postoji samo jedna "ispravna" arhitektura web poslovnih aplikacija? pregledniku) i aplikacijskog modula treba kod poslovnih aplikacija biti Reserved, a ne Managed (što je default), kod kojega (Managed) može doći do pasivizacije / aktivacije AM-a, što otežava rad s transakcijama. Nažalost, često developeri gledaju na DBMS sustav kao na "crnu kutiju". Nemaju vremena za dublje upoznavanje s mogućnostima konkretnog DBMS-a, drže da su svi DBMS-ovi vrlo slični, žele pisati generički kod (neovisan o DBMS-u) itd.