Your SlideShare is downloading. ×
JavaCro'14 - Is there a single “correct” web architecture for business apps – Zlatko Sirotić
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

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

1,316
views

Published on

Often, there is a difference of opinion between IT specialists who make business apps with databases in client-server architecture and those who skipped the client-server architecture altogether and …

Often, there is a difference of opinion between IT specialists who make business apps with databases in client-server architecture and those who skipped the client-server architecture altogether and began working on web applications. The former usually (but not always) tend to write their code in the database, while the latter consider the database a “black box”, which often serves only as a data container, while the business logic resides in the application server. There are a lot of other questions. The author thinks that specific needs require consideration. It is important to learn and think, and avoid being narrow-minded and accept a single “truth”. These questions will be considered through the Oracle ADF framework.

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,316
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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.