Guest User

Something_New_SII

a guest
Aug 31st, 2017
860
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 151.95 KB | None | 0 0
  1. UVOD U
  2. INTEROPERABILNOST
  3.  
  4. Interoperabilnost
  5. informacijskih
  6. sustava
  7.  
  8. UVOD U INTEROPERABILNOST
  9. Definicije
  10. Čimbenici, koristi, razine i vrste interoperabilnosti
  11. Područja interoperabilnosti
  12. Strategije interoperabilnosti
  13. Okviri za interoperabilnost (HROI i EIF)
  14.  
  15. 2
  16.  
  17. Poimanje pojma
  18. interoperabilnosti ...
  19. • Interoperabilnost je ...
  20. – filozof
  21.  
  22. • razumijevanje dvaju subjekata
  23.  
  24. – bankar
  25.  
  26. • razmjena financijskih podataka
  27.  
  28. – jezikoslovac
  29.  
  30. • sličnosti (razlike) dvaju jezika
  31.  
  32. – menadžer
  33.  
  34. • poslovna suradnja dvije tvrtke
  35.  
  36. – dijete od 5 godina?
  37. • Pokušajte sad sami definirati
  38. interoperabilnost!
  39.  
  40. 3
  41.  
  42. Terminologija
  43. • Pojam interoperabilnost
  44. – inicijalno vojni termin
  45. • mogućnost sustava ( jedinica, naoružanja)
  46. da
  47. surađuje s drugima u cilju zajedničkog
  48. djelovanja
  49.  
  50. • Razdijelimo na: inter + oper + abilnost
  51. – inter = isti prefiks kao Internet
  52. – latinski "inter" dolazi od "in" + "terra"
  53. • u našem slučaju: između, u sredini
  54.  
  55. – engleski "operate" – djelovanje
  56. – engleski "ability" – mogućnost
  57. 4
  58.  
  59. Hrvatski i interoperabilnost ...
  60. • Hrvatski „prijevodi” (pokušaji)
  61. – međudjelovanje
  62. – sudjelatnost
  63. – mogućnost međusobnog djelovanja
  64. – mogućnost zajedničkog rada
  65. – mogućnost uzajamnog funkcioniranja
  66. – interoperativnost ???
  67.  
  68. 5
  69.  
  70. Definicija
  71. • „Interoperabilnost je
  72. sposobnost zasebnih i različitih
  73. organizacija
  74. da međusobno djeluju
  75. u smjeru zajednički korisnih i
  76. dogovorenih ciljeva, što uključuje
  77. razmjenu podataka, informacija i znanja
  78. kroz poslovne procese
  79.  
  80. koji podržavaju i korištenje
  81.  
  82. informacijsko-komunikacijskih
  83. tehnoloških sustava.“
  84.  
  85. iz Hrvatskog okvira za interoperabilnost,
  86. usuglašenog s Europskog okvira za
  87. interoperabilnost
  88. 6
  89.  
  90. Demistifikacija
  91. • Na razini upravljanja:
  92. – postiže se dogovorom (konsenzus)
  93. – zajednički ciljevi i interesi
  94. • Na razini provedbe:
  95. – usklađivanje i zajedničko djelovanje
  96. – razmjena podataka, informacija i znanja
  97. u poslovnim procesima
  98. – krajnji cilj (u pravilu) je pružanje usluga
  99. • Ali …
  100. integracija ≠ interoperabilnost
  101. kompatibilnost ≠ interoperabilnost
  102. prilagodljivost ≠ interoperabilnost
  103.  
  104. 7
  105.  
  106. Povijesni pogled
  107. • Ali poslovno međudjelovanje je počelo
  108. davno prije, bez moderne tehnologije
  109. – način – papir, olovka, potpis, pečat, žig …
  110. – dostava – glasnik, golub, kočija, pošta …
  111. • Problemi
  112. – potrebna neposredna blizina
  113. • inače samo pisani oblik i vremenski odmak
  114.  
  115. No, principi su isti i danas ...
  116. • Modernizacija
  117. – telefon, teleks, telefax …
  118. – e-mail, Internet, Web …
  119. – razni moderni (napredni) oblici poslovanja
  120. • Danas interoperabilnost važnija nego ikad!
  121.  
  122. 8
  123.  
  124. Svrha i cilj interoperabilnosti
  125. • Svrha i cilj – povećanje učinkovitosti
  126. – brzina
  127. – nepotrebnost fizičke blizine
  128. – poslovanje na velikim
  129. udaljenostima
  130. – automatizacija procesa
  131. • Rezultat:
  132. – postizanje poslovanja tamo gdje
  133. prije nije bilo moguće ili je bilo
  134. znatno otežano
  135. – smanjenje troškova poslovanja
  136.  
  137. 9
  138.  
  139. Preduvjeti za interoperabilnost
  140. • Razni oblici elektroničkih komunikacija
  141. – infrastruktura elektroničke
  142. komunikacijske mreže
  143. • Računalni sustavi za poslovanje
  144. – sustavi za izradu i pohranu strukturiranih
  145. podataka o poslovanju uporabom novih
  146. tehnologija, metoda i mehanizama
  147. transformacija, slanja i primanja te
  148. sigurne pohrane podataka
  149. • Informacije u obliku elektronički zapisanih
  150. podataka
  151. – koriste ih sustavi, protokoli i tehnologije
  152. • Zaključak: zasnovano na naprednoj
  153. tehnologiji
  154. 10
  155.  
  156. UVOD U INTEROPERABILNOST
  157. Definicije
  158. Čimbenici, koristi, razine i vrste
  159. interoperabilnosti
  160. Područja interoperabilnosti
  161. Strategije interoperabilnosti
  162. Okviri za interoperabilnost (HROI i EIF)
  163.  
  164. 11
  165.  
  166. Preduvjeti interoperabilnosti
  167. • Što je potrebno za neki početak korištenja?
  168. – unaprijed se često ne zna što se sve može
  169. podrazumijevati
  170. • Primjer: vožnja automobila
  171. – trivijalno: upali motor, ubaci u brzinu i vozi!
  172. – stvarno: prometnice, znakovi, opasnosti,
  173. pješaci …
  174. • Zaključak: treba utvrditi čimbenike, korist,
  175. razine i vrste interoperabilnosti
  176. – prvo definiramo što → kasnije lakše kako
  177. • Čimbenici interoperabilnosti sa stanovišta
  178. organizacije:
  179. – vanjski i unutarnji
  180.  
  181. 12
  182.  
  183. Vanjski čimbenici
  184. interoperabilnosti
  185. • Vanjski čimbenici – razlog postojanja organizacije
  186. – kontekst djelovanja organizacije u okruženju
  187. • druge organizacije, okolina i subjekti u okruženju s
  188. kojima je organizacija u nekom izravnom odnosu
  189.  
  190. • Neposredni vanjski čimbenici su prvi potencijalni
  191. subjekti interoperabilnosti:
  192. – vlasnik ili nadsustav
  193. • zajednički interesi
  194.  
  195. – korisnik
  196. • usluga
  197.  
  198. – pružatelj usluge
  199. • usluga
  200.  
  201. – zajednica
  202. • uvjeti
  203.  
  204. – ostali vanjski čimbenici
  205. 13
  206.  
  207. Unutarnji čimbenici
  208. interoperabilnosti
  209. • Unutarnji čimbenici – dijelovi organizacije i njena
  210. poslovna djelatnost
  211. – političko područje ili područje odlučivanja
  212. • svrha i ciljevi postojanja (vlasnici)
  213.  
  214. – pravno područje
  215.  
  216. • propisi i interni dokumenti – kako se funkcionira
  217.  
  218. – organizacijsko-procesno područje
  219.  
  220. • org. struktura, procesi, prava, obveze, odgovornosti,
  221. upravljanje
  222.  
  223. – semantičko područje
  224.  
  225. • značenja svih pojmova, elemenata, sudionika i procesa
  226.  
  227. – tehničko područje
  228.  
  229. • tehnologije (olovka ili računalo, mreža, sustav, razmjena ...)
  230.  
  231. • Definiraju se zakonitosti i ograničenja – a to su norme i
  232. pravila
  233. 14
  234.  
  235. Unutarnji čimbenici interoperabilnosti
  236. • Područja poslovanja nisu
  237. nezavisna
  238. • Promjene u jednom području
  239. uzrokuju nužne prilagodbe u
  240. ostalim područjima
  241.  
  242. 15
  243.  
  244. Razine interoperabilnosti
  245. • Jedna od definicija interoperabilnosti:
  246. – „Interoperabilnost je mogućnost dva ili više sustava ili
  247. komponente da razmjenjuju informacije i koriste
  248. razmijenjene informacije“
  249. • Ukazuje na dvije osnovne razine interoperabilnosti:
  250. – sintaksna – tehnička sličnost sustava, oblika
  251. podataka koji se razmjenjuju i komunikacijskih
  252. protokola
  253. – semantička – razmijenjene informacije se
  254. automatski, smisleno i točno tumače
  255. • Semantička imovina (semantic assets) – resursi
  256. potrebni za ostvarivanje semantičke interoperabilnosti
  257. – klasifikacijski sustavi, nomenklature, šifrarnici,
  258. pojmovnici, rječnici ili vokabulari, XML sheme i slični
  259. popisi pojmova
  260. – specifikacije međusobnih veza tih popisanih
  261. elemenata te pravila pridruživanja ili preslikavanja
  262. među njima – ontologije
  263.  
  264. 16
  265.  
  266. Razine interoperabilnosti
  267. • Tehnička – glavni preduvjet
  268. – mreža, protokol
  269.  
  270. • Sintaksna – komunikacija i razmjena
  271. podataka
  272. – struktura podataka, zapis
  273.  
  274. • Semantička – razumijevanje značenja
  275. informacija
  276. – semantička imovina
  277.  
  278. • Pragmatična – kontekst
  279. – svjesnost metoda drugog sustava
  280. – matični broj studenta, građana i tvrtke
  281.  
  282. • Dinamička – promjena podataka utječe
  283. na razmjenu i povećanje razumljivosti
  284. • Konceptualna – sudionici u komunikaciji
  285. u potpunosti razumiju funkcioniranje
  286. druge strane
  287. – implementacija može biti različita
  288. 17
  289.  
  290. Razine interoperabilnosti
  291.  
  292. Rekapitulacija razina interoperabilnosti
  293. – bez interoperabilnosti
  294.  
  295. • dvije strane uopće ne komuniciraju
  296.  
  297. – tehnička interoperabilnost
  298.  
  299. • dvije strane komuniciraju, jedna govori (šalje),
  300. druga čuje (prima), ali ne zna što
  301.  
  302. – sintaksna interoperabilnost
  303.  
  304. • u komunikaciji se razumiju glasovi i riječi, ali se ne zna njihovo značenje
  305.  
  306. – semantička interoperabilnost
  307.  
  308. • u komunikaciji se razumiju riječi i njihovo značenje, ali ne i rečenice – ne
  309. poznaje se kontekst riječi u rečenici ni u tekstu
  310.  
  311. – pragmatična interoperabilnost
  312.  
  313. • u komunikaciji se razumiju riječi u rečenicu i njihov kontekst – tekst
  314.  
  315. – dinamička interoperabilnost
  316.  
  317. • promjene u procesima sudionika utječu na promjene u rečenicama
  318. komunikacije
  319.  
  320. – konceptualna interoperabilnost
  321.  
  322. • definirani su i razumiju se svi procesi i promjene kod svih sudionika
  323. komunikacije koji se posljedično u potpunosti razumiju – razumijevanje
  324. razmišljanja druge strane
  325.  
  326. 18
  327.  
  328. UVOD U INTEROPERABILNOST
  329. Definicije
  330. Čimbenici, koristi, razine i vrste interoperabilnosti
  331. Područja interoperabilnosti
  332. Strategije interoperabilnosti
  333. Okviri za interoperabilnost (HROI i EIF)
  334.  
  335. 19
  336.  
  337. Područja usklađivanja
  338. interoperabilnosti
  339.  
  340.  
  341. Područja zapravo predstavljaju unutarnje čimbenike
  342. Nužno usklađivanje interoperabilnosti u svih 5
  343. područja
  344. – odstupanje na bilo kojem od područja dovodi do
  345. nezadovoljenja interoperabilnosti
  346. – važna je svaka karika u lancu interoperabilnosti
  347. Područja se promatraju razinski:
  348. – politika i odlučivanje
  349. – pravni okviri
  350. – organizacija i procesi
  351. – semantika
  352. – tehnika
  353.  
  354. 20
  355.  
  356. Područja interoperabilnosti
  357.  
  358. 21
  359.  
  360. UVOD U INTEROPERABILNOST
  361. Definicije
  362. Čimbenici, koristi, razine i vrste interoperabilnosti
  363. Područja interoperabilnosti
  364. Strategije interoperabilnosti
  365. Okviri za interoperabilnost (HROI i EIF)
  366.  
  367. 22
  368.  
  369. Strategije interoperabilnosti –
  370. početci
  371. • Nacionalna strategija informatizacije te
  372. posljedično i interoperabilnosti
  373. – odgovorna je država
  374. • Malo hrvatske povijesti
  375. – nakon 1991.
  376.  
  377. • prve naznake informatizacije državne uprave,
  378. pravosuđa i javnih djelatnosti
  379. • većinom spašene i stare državne baze
  380. podataka i programska oprema od ratnih
  381. razaranja
  382.  
  383. – 90-te
  384.  
  385. provedena standardizacija aplikacija
  386. uvedeni su sustavi ERP
  387. uveden sustav elektroničke pošte
  388. sagrađena nacionalna akademska mreža CARNet
  389.  
  390. 23
  391.  
  392. Interoperabilnost u RH – ovo
  393. stoljeće
  394.  
  395. Od početka ovog stoljeća
  396. – osnovan je Ured za internetizaciju
  397. – izveden niz projekata
  398.  
  399. objedinjen proces javne nabave
  400. modernizacije carinske uprave
  401. sustava porezne uprave
  402. sustava državne riznice
  403. sustava (nove) osobne iskaznice
  404. sustava graničnih prijelaza
  405. sustava za gospodarenje i upravljanje prostorom RG
  406. sustava interoperabilnosti katastra i zemljišnih knjiga
  407. institucionalnog okvira za internetizaciju
  408. računalne i komunikacijske mreže tijela državne uprave
  409. sustava obračuna plaća tijela državne uprave
  410. sustava za upravljanje državnom imovinom
  411. strategije višega stupnja primjene ICT za izgradnju nacionalne
  412. mreže institucionalnoga i izvaninstitucionalnoga obrazovanja
  413.  
  414. – donesen niz zakona
  415.  
  416. 24
  417.  
  418. Interoperabilnost u RH
  419.  
  420.  
  421. 2002. prva strategija “Informacijske i komunikacijske tehnologije –
  422. Hrvatska u 21. stoljeću”
  423. – osnovan Središnji državni ured za e-Hrvatsku
  424. 2004. usvojen Operativni plan provedbe „Programa e-Hrvatska 2007.“
  425. – pokrenut je i program One-Stop-Shop i otvoren servis HITRO.HR
  426. – povezivanje tijela državne uprave u jedinstvenu komunikacijsku
  427. mrežu HITRONet
  428. – pokrenut je projekt HITROREZ
  429. Usvajanje Nacionalnog programa informacijske sigurnosti u RH
  430. Prvi put izrađena studija razvoja informacijskog društva u RH za 2005.
  431. Od 2007.
  432. – pokrenut Središnji portal državne uprave ''Moja uprava'‘
  433. – projekt e-Otoci
  434. – Hrvatska pristupa EU programu ICT PSP
  435. – hrvatske ICT tvrtke prvi put se zajednički pojavljuju na CeBIT-u
  436.  
  437. 25
  438.  
  439. Interoperabilnost u RH
  440.  
  441. Od 2008.
  442. – započinje izrada Strategije razvoja elektroničke
  443. uprave za razdoblje 2009.-2012.
  444. – usvojena je i Strategija prelaska s analognog na
  445. digitalno emitiranje televizijskih programa u RH tzv.
  446. DVB-T
  447. – projekt Europske komisije "eGovernment
  448. Benchmarking"
  449. • mjeri stupanj razvoja elektroničke uprave u zemljama EU
  450.  
  451.  
  452. – izvedena Analiza hrvatske ICT industrije za proteklo
  453. desetljeće
  454. – pokrenut Standardni projekt elektroničkog uredskog
  455. poslovanja i program e-Ured
  456. – Hrvatska pristupa EU programu Interoperabilna
  457. rješenja za europsku javnu upravu ISA
  458. 2010. usvojen Hrvatski okvir za interoperabilnost
  459. – preduvjet za poboljšanje komunikacije i međusobne
  460. suradnje poslovnih sustava tijela državne uprave
  461.  
  462. 26
  463.  
  464. Interoperabilnost u RH
  465.  
  466.  
  467. Od 2010. do danas
  468. – predstavljen je informacijski sustav Evidencija ulaganja
  469. u RH
  470. – koordinacija provedbe Digitalne agende za Europu
  471. 2020
  472. – pokrenuta inicijativa Going Local
  473. – usvojena Odluka o utvrđivanju ciljeva razvoja
  474. elektroničke uprave u tijelima državne uprave za
  475. razdoblje do 2015. godine
  476. – predstavljen Koncept arhitekture umrežene uprave
  477. Mandat Vlade RH 2011.-2015.
  478. – organizacijski spojeni Ministarstvo uprave i Središnji
  479. državni ured za e-Hrvatsku čime su u nadležnost MU
  480. dodani i poslovi informatizacije i modernizacije
  481. – nova Uprava za e-Hrvatsku pri Ministarstvu uprave
  482. • spaja odvojene cjeline reforme državne uprave i
  483. informatizacije
  484. • za vidjeti je kakve će to učinke imati u budućnosti …
  485.  
  486. 27
  487.  
  488. Uprava za e-Hrvatsku
  489.  
  490. Ustroj Uprave za e-Hrvatsku
  491. – Sektor za modernizaciju i informatizaciju državne uprave
  492. • Služba za elektroničke usluge i registre
  493.  
  494. – Sektor za infrastrukturu
  495. • Služba za razvoj i standardizaciju i Služba za podršku korisnicima
  496.  
  497.  
  498. Ključna uloga – Povjerenstvo za koordinaciju informatizacije javnog
  499. sektora
  500. – osnovano 2012. godine, čine najviši dužnosnici Vlade RH
  501. – zadaća usmjeravanja razvoja i koordinacije svih poslova i projekata
  502. primjene informacijske i komunikacijske tehnologije u javnom sektoru
  503. – u cilju racionalizacije sustava i povećanja kvalitete javnih usluga
  504.  
  505.  
  506. Osnovane radne skupine
  507.  
  508. Radna skupina za temeljne registre i elektroničku razmjenu podataka
  509. Radna skupina za elektronički identitet i autentikaciju
  510. Radna skupina za standardizaciju rješenja za korisnički pristup
  511. Radna skupina za infrastrukturu
  512. Radna skupina za primjenu otvorenoga koda i otvorenih normi
  513. Radna skupina za definiranje područja i tema za objedinjenu javnu
  514. nabavu
  515. 28
  516.  
  517. Strategija 2016.-2018.
  518.  
  519. Strateški plan Ministarstva uprave za
  520. razdoblje od 2016. do 2018. godine
  521. eksplicitno navodi cilj unaprjeđenja
  522. kvalitete javnih usluga kroz djelotvornu
  523. primjenu ICT-a u radu javne uprave:
  524. – razvoj i standardizaciju informacijske i
  525. komunikacijske infrastrukture
  526. – poboljšanje dostupnosti i kvalitete
  527. elektroničkih usluga i rješenja
  528. – unaprjeđenje sustava podrške za
  529. koordinaciju razvoja cjelovitih integriranih
  530. usluga
  531. – učinkovito korištenje instrumenata
  532. kohezijske politike i programa EU
  533.  
  534.  
  535. Konkretne aktivnosti:
  536. – HITRONet
  537. – „oblak javnog sektora“
  538. – strategija za otvorene specifikacije i
  539. standarde
  540. – usklađivanje HROI s EIF 2.0
  541.  
  542.  
  543. Konkretne aktivnosti (nastavak):
  544. – zajednička interoperabilna EU rješenja
  545. – mojauprava.hr
  546. – redovito ažuriranje popisa službenih
  547. obrazaca javnopravnih tijela
  548. – elektronički identiteti
  549. – elektroničke razmjene podataka između
  550. registara
  551. – elektroničko uredsko poslovanje
  552. – popisa usluga javnog sektora
  553. – integralne e-usluge
  554. – procesi državne uprave i e-government
  555. – pristupa osobnim informacijama za
  556. građane
  557. – korisnički-orijentirane e- usluge
  558. – zajedničke metodologije za standardizaciju
  559. ICT-a (katalozi metapodataka)
  560. – praćenje projekata u državnoj upravi
  561. – aktivno sudjelovanje u projektima na razini
  562. EU te Digitalnoj agendi za Europu
  563.  
  564. 29
  565.  
  566. Digitalna agenda za Europu
  567. 2020.
  568.  
  569. Digitalna agenda za Europu ili DAE (Digital Agenda for Europe), EK
  570. 2010.
  571. – jedna od 7 ključnih inicijativa u okviru Strategije Europa 2020
  572. – cilj – ostvariti održive gospodarske i društvene pogodnosti na
  573. jedinstvenom digitalnom tržištu utemeljenom na brzom i
  574. ultrabrzom internetu te interoperabilnim aplikacijama
  575. – procjena – digitalna ekonomija raste 7 puta brže od ostatka
  576. gospodarstva
  577. – pomoć EU tvrtkama i građanima da maksimalno iskoriste
  578. digitalne tehnologije
  579. – 101 akcija grupiranu u 7 prioritetnih područja djelovanja:
  580. • jedinstveno digitalno tržište
  581. • interoperabilnost i normiranje (informacijskih i komunikacijskih
  582. proizvoda i usluga)
  583. • povjerenje i sigurnost (na Internetu)
  584. • brzi i izuzetno brzi pristup Internetu
  585. • istraživanje i razvoj (poticanje ulaganja)
  586. • poboljšanje digitalne pismenosti, vještina i uključivosti
  587. • koristi korištenjem ICT-a za društvo EU
  588.  
  589. http://ec.europa.eu/digital-agenda/
  590.  
  591. 30
  592.  
  593. Digitalna agenda – provedba
  594.  
  595. Države članice koje su prihvatile
  596. Digitalnu agendu za Europu dužne su:
  597. – izraditi operativne strategije brzog
  598. interneta i osigurati javno financiranje
  599.  
  600. uključujući strukturalne fondove za
  601. područja koja nisu pokrivena privatnim
  602. investicijama
  603.  
  604. – uspostaviti pravni okvir za koordinaciju
  605. javnih radova u vezi sa smanjivanjem
  606. troškova iskorištenja mreža (network
  607. rollout)
  608. – promicati implementacije i korištenje
  609. modernih on line usluga
  610.  
  611.  
  612. e-government, on line zdravstvo, pametne
  613. kuće, digitalne vještine, sigurnost …
  614.  
  615. Najistaknutiji projekti DAE u RH:
  616. – povezivanje registara
  617. – povećanje transparentnosti informacija
  618. – novog i stabilnog okruženja regulacije
  619. širokopojasnog pristupa Internetu
  620. – projekt e-Građani
  621. – projekt e-Upis
  622. – projekt e-Zdravstvo
  623.  
  624.  
  625. Neki od ambicioznih ciljeva DAE od
  626. 2013. do 2020. godine su:
  627. – 100% povećanje u javnoj potrošnji za ICT
  628. – 99,9% populacije EU pokriveno brzim
  629. pristupom Internetu
  630.  
  631. fiksni i bežični, >30Mbps
  632.  
  633. – 75% populacije EU redovno koristi
  634. Internet
  635. – 60% građana EU s posebnim potrebama
  636. redovno koristi Internet
  637. – 50% kućanstava EU koristi brzi pristup
  638. Internetu
  639. – 50% populacije EU koristi e-government
  640. – 50% populacije EU koristi on-line trgovinu
  641. – 30% malih i srednjih poduzeća prodaje online
  642. – 20% populacije EU koristi prekograničnu
  643. on-line trgovinu
  644. – roaming po nacionalnim cijenama
  645.  
  646. 31
  647.  
  648. Projekt e-Građani
  649.  
  650.  
  651. Pokrenut projekt e-Građani (od 2014.)
  652. – omogućiti komunikaciju građana s javnim sektorom na jednom mjestu na
  653. internetu
  654. – portal koji će objediniti informacije o radu javne uprave i javnim uslugama
  655. – omogućiti siguran pristup elektroničkim uslugama
  656. 3 sastavnice zajedničke infrastrukture javnog sektora:
  657. – gov.hr – sustav središnjeg državnog portala
  658.  
  659. na jednom mjestu i u lako dostupnim formatima informacije o javnim uslugama
  660.  
  661.  
  662. informacijsko-tehnološki sustav središnje identifikacije i autentikacije korisnika
  663. elektroničkih javnih usluga
  664. svaki građanin RH, kojem je izdana prihvatljiva vjerodajnica za elektroničku
  665. identifikaciju, imat jedinstveni elektronički identitet
  666.  
  667. – NIAS – nacionalni identifikacijski i autentikacijski sustav
  668.  
  669. – OKP – sustav osobnog korisničkog pretinca OKP
  670.  
  671. pristupa osobnim informacijama koje javni sektor želi uputiti građanima
  672.  
  673.  
  674.  
  675. npr. informacije o statusu osobnih predmeta ili informacije o elektroničkoj razmjeni
  676. osobnih podataka
  677.  
  678. svaki građanin RH dobit će vlastiti osobni korisnički pretinac
  679.  
  680. Tijela javnog sektora koriste prilikom:
  681. – objave javnih informacija
  682. – pružanja korisnički orijentiranih i personaliziranih tzv. Single-Sign-On eusluga korisnicima
  683. – slanja osobnih službenih poruka korisnicima vezanih za javne usluge,
  684. postupke (tijek) i osobne statuse
  685.  
  686. 32
  687.  
  688. UVOD U INTEROPERABILNOST
  689. Definicije
  690. Osnovni pojmovi
  691. Čimbenici, koristi, razine i vrste interoperabilnosti
  692. Područja interoperabilnosti
  693. Pravni okvir uz interoperabilnost u Hrvatskoj
  694. Strategije interoperabilnosti
  695. Okviri za interoperabilnost (HROI i EIF)
  696. 33
  697.  
  698. Okvir za interoperabilnost
  699.  
  700.  
  701.  
  702. Za interoperabilnost i na nacionalnoj i na međunarodnoj razini
  703. treba utvrditi pravila i norme za razmjenu i korištenje podataka
  704. Zato se osmišljavaju okviri za interoperabilnost (interoperability
  705. frameworks)
  706. – niz pravila koja opisuju dogovorene načine međusobne
  707. interakcije organizacija
  708. – niz normi koje se trebaju koristiti kod ostvarivanja
  709. interoperabilnosti
  710. EU je odmah prepoznala potrebu za donošenjem propisa vezanih
  711. uz interoperabilnost
  712. – 1998. Direktiva o normama 1998/34/EC
  713. – 2003. Direktiva o informacijama javnog sektora 2003/98/EC
  714. – 2004. Direktiva o javnoj nabavi 2004/18/EC
  715. Istovremeno – niz političkih inicijativa interesnih strana, odnosno
  716. proizvođača određenih platformi i programske podrške
  717. – pokušale utjecati na izgled vršnih dokumenata o
  718. interoperabilnosti za EU
  719.  
  720. 34
  721.  
  722. Europski okvir za interoperabilnost
  723.  
  724.  
  725. Jedna od pozitivnih neovisnih inicijativa – usvajanje okvira za interoperabilnost
  726. 2004. donesen Europski okvir za interoperabilnost EIF (European Interoperability
  727. Framework), odnosno EIF 1.0
  728. – opisuje kako su se organizacije sporazumjele ili će se sporazumjeti oko
  729. međusobne interakcije i koje će norme koristiti
  730. – donosi politike i smjernice koje čine temelj za odabir normi
  731. – prilagođava se pojedinoj gospodarskoj, sociološkoj, političkoj, kulturnoj,
  732. jezičnoj, povijesnoj i zemljopisnoj situaciji i primjeni u određenom slučaju
  733. – primarno definiran nad paneuropskim uslugama javne uprave PEGS (PanEuropean eGovernment Services).
  734.  
  735. EIF 1.0 donesen u sklopu programa Interoperabilne isporuke
  736. europskih e-usluga javne uprave administraciji, poslovnom sektoru
  737. i građanima IDABC (Interoperable Delivery of European
  738.  
  739. eGovernment Services to public Administrations, Business and
  740. Citizens) koji još uključuje i:
  741.  
  742. – Europsku strategiju interoperabilnosti EIS (European Interoperability
  743. Strategy)
  744. – Smjernice za izgradnju arhitekture europske interoperabilnosti EIAG
  745. (European Interoperability Architecture Guidelines)
  746. – Infrastrukturne usluge europske interoperabilnosti EIIS (European
  747. Interoperability Infrastructure Services)
  748.  
  749. 35
  750.  
  751. Trokut upravljanja
  752. interoperabilnošću
  753. • Trokut upravljanja interoperabilnošću (interoperability
  754. government triangle)
  755. – infrastrukturne usluge i alati EIIS
  756. • u obliku uobičajenih i generičkih ponovno iskoristivih
  757. komponenata
  758.  
  759. – smjernice za izgradnju arhitekture EIAG
  760. – radni okvir EIF
  761. – strategija EIS - općenite smjernice i
  762. akcijski prioriteti
  763. • 3 klastera područja:
  764.  
  765. – povjerenje razmjene informacija
  766. – arhitektura za interoperabilnost
  767. – procjena implikacija ICT-a na
  768. novu legislativu EU
  769.  
  770. • 2 pridružene mjere:
  771.  
  772. – podizanje svijesti o interoperabilnosti
  773. – dijeljenje najboljih praksi
  774.  
  775. 36
  776.  
  777. EIF 2
  778.  
  779. Provedbu okvira EIF 1.0 onemogućavale netehnološke prepreke
  780. – različitost članica EU u veličini i strukturi javne uprave te modela
  781. interakcije s građanima
  782. • npr. razlike u broju i mogućnostima ponuđenih javnih usluga, statusu
  783. vlasništva poduzeća, nadzornim operacijama granice (carina, policija),
  784. centralizaciji i lokalizaciji upravljanja, načinima interakcije, procesima
  785. ključnim za građane (rođenje, sklapanje braka, smrt), procedurama
  786. izdavanja dokumenata, u podršci za višestruke strane jezike
  787.  
  788.  
  789. Osvježavanje – prijedlog Europskog okvira za interoperabilnost EIF
  790. 2
  791. – tema niza političkih debata (vezanih uz korištenja određenih
  792. tehnologija)
  793. – lobiji za korištenje određenih vlasničkih normi i tehnologija
  794. • u suprotnosti s idejom i smjernicama EU o korištenju otvorenih normi,
  795. a po mogućnosti i otvorenog koda te otvorene programske podrške
  796.  
  797. – usvojen u prosincu 2010. od strane EK
  798.  
  799. • „Okvir za interoperabilnost je dogovoreni pristup interoperabilnosti za
  800. organizacije koje žele surađivati u smjeru zajedničke isporuke javnih
  801. usluga. U okviru svog djelokruga primjene, specificira skup zajedničkih
  802. elemenata, kao što su vokabular, koncepti, principi, politike, smjernice,
  803. preporuke, norme, specifikacije i prakse.“
  804.  
  805. 37
  806.  
  807. EIF – smjernice i preporuke
  808.  
  809. EIF ne daje preporuke konkretnih tehničkih norma, već
  810. donosi opće smjernice, odnosno preporuke
  811. – odnose se na područja dostupnosti, višejezičnosti,
  812. privatnosti, korištenje otvorenih norma, programske
  813. podrške otvorenog koda i višestranih rješenja
  814.  
  815. 38
  816.  
  817. EIF – principi
  818. • EIF definira 12 principa:
  819. 1. supsidijarnost (kao najniže moguće) i
  820. proporcionalnost (kao najbliže moguće)
  821. 2. usmjerenost korisniku
  822. 3. uključenost i dostupnost
  823. 4. sigurnost i privatnost
  824. 5. višejezičnost
  825. 6. jednostavnost administracije
  826. 7. transparentnost
  827. 8. sačuvanost informacije
  828. 9. otvorenost
  829. 10. ponovna iskoristivost
  830. 11. tehnološka neutralnost i prilagodljivost
  831. 12. djelotvornost i učinkovitost
  832. 39
  833.  
  834. EIF – konceptualni model
  835. javnih usluga
  836. • Konceptualni model
  837. javnih usluga
  838. (Conceptual Model
  839. for Public Services)
  840.  
  841. 40
  842.  
  843. EIF – scenariji interakcije
  844. europskih javnih usluga
  845. • Primjer
  846.  
  847. 41
  848.  
  849. EIF i otvorenost
  850.  
  851. EIF propagira korištenje otvorenih normi, tehničkih
  852. specifikacija i uporabe softvera otvorenog koda
  853. – korištene norme trebale bi održavati neprofitne i
  854. neovisne organizacije
  855.  
  856. • procesom otvorenog donošenja odluka i konsenzusom od
  857. strane svih zainteresiranih stranaka
  858. • norme se trebaju javno objavljivati te biti dostupne
  859. besplatno ili uz minimalni trošak
  860. • intelektualna vlasništva u obliku patenata koja su dio norme
  861. trebaju također biti dostupna besplatno (royalty-free)
  862.  
  863. – izravna povezanost otvorenosti i interoperabilnosti
  864. vrlo je važna
  865. • otvorene norme imaju ključnu ulogu u postizanju visoke
  866. razine interoperabilnosti
  867. • preporučuje se prihvaćanje tržišnih i pravnih normi koje
  868. predstavljaju IETF, W3C, OASIS, CEN i ISO
  869.  
  870. – za područja komunikacije, sigurnosti, razmjene podataka,
  871. otkrivanja usluga, prezentacije i zapisa podataka, metapodataka o
  872. procesima i podacima te imenovanja
  873.  
  874. • preporučuje se i korištenje softvera otvorenog koda i
  875. razvojnih modela otvorenog koda
  876.  
  877. 42
  878.  
  879. Hrvatski okvir za interoperabilnost
  880. (HROI)
  881.  
  882. Hrvatski okvir za interoperabilnost (HROI) donijela Vlada RH 24.
  883. lipnja 2010.
  884. – skup usklađenih pravila, propisa, definicija, normizacijskih i
  885. drugih dokumenata, potpornih usluga i resursa te provedbenih
  886. mjera i organizacije namijenjene stvaranju preduvjeta za
  887. pružanje objedinjenih korisnički usmjerenih usluga javne uprave
  888. – cilj – uspostava stabilne poslovne i tehnološke interoperabilnosti
  889. sustava javne uprave i drugih društvenih čimbenika sukladno
  890. načelima korisnički usmjerene uprave
  891. – svrha – stvaranje preduvjeta za učinkovitu i djelotvornu primjenu
  892. ICT u podršci svim funkcijama javne uprave
  893.  
  894. • treba omogućiti procesnu povezanost, suradnju i razmjenu informacija
  895. između tijela javne uprave i svih ostalih sudionika u obavljanju funkcija
  896. javne uprave na nacionalnoj i EU razini
  897.  
  898.  
  899. – krajnji cilj – izgradnja poslovne i tehnološke okoline koja će
  900. stabilno i dugoročno osigurati uvjete za učinkovitu suradnju
  901. sustava javne uprave i drugih sudionika na postizanju zajednički
  902. utvrđenih ciljeva
  903. Uspostavljanjem HROI povezat će se danas odvojeni informacijski
  904. sustavi tijela državne uprave u umreženu upravu
  905.  
  906. 43
  907.  
  908. HROI – struktura
  909. • Struktura HROI-a uključuje:
  910. – dokumente Vlade RH
  911.  
  912. • Odluka o HROI-u, Odrednice HROI-a, godišnji
  913. planovi i izvještaji provedbe HROI-a
  914.  
  915. – sustav upravljanja, organizacije i podrške
  916. provedbe
  917. – biblioteku strateških i provedbenih
  918. dokumenata interoperabilnosti
  919.  
  920. • programi, planovi, norme, metodološki priručnici,
  921. upute, smjernice, katalozi, šifrarnici itd.
  922.  
  923. – zajedničke resurse i potporne usluge
  924. podrške provedbi
  925.  
  926. • informacijska infrastruktura, provedbena
  927. organizacija, funkcije, procesi, servisi i mehanizmi
  928. podrške
  929.  
  930. – provedbene mjere
  931.  
  932. 44
  933.  
  934. HROI – temeljna načela i
  935. izgradnja
  936.  
  937. Primjena načela Strategije razvoja elektroničke uprave u RH
  938.  
  939. – praćenje europske strategije i europskog okvira za interoperabilnost uz
  940. uvažavanje najbolje prakse zemalja s razvijenim nacionalnim okvirima za
  941. interoperabilnost
  942. – referenciranje na druge postojeće odgovarajuće nacionalne i/ili
  943. međunarodne norme
  944.  
  945.  
  946. bez pokretanja paralelnog postupka usvajanja normi
  947.  
  948. Izgradnja kroz kombinirani pristup:
  949.  
  950. – odozgo prema dolje (top-down) – od strane vršnih tijela
  951.  
  952. temeljeno na strateškim ciljevima i prioritetima
  953. kroz standardizaciju metodologija, uspostavu servisa interoperabilnosti, izgradnju i
  954. dostupnost gradbenih komponenti, provedbu strateških projekata i pilota te
  955. koordiniranim radom tijela državne uprave u području interoperabilnosti
  956.  
  957. – odozdo prema gore (bottom-up) – od strane sudionika HROI-a
  958.  
  959.  
  960. temeljeno na inicijativama skupina interesno i poslovno povezanih sudionika
  961. tamo gdje postoje uvjeti za uspješnu uspostavu interoperabilnosti te brzu realizaciju i
  962. isporuku usluga korisnicima
  963.  
  964. Poticanje višekratnog korištenja dostupnih referentnih specifikacija
  965. i gotovih komponenti temeljenih na otvorenom kodu uz
  966. zadovoljavanje modela, važećih metoda i međunarodnih normi
  967. Transparentan i otvoren razvoj HROI-a koji omogućuje
  968. sudjelovanje svih sudionika
  969.  
  970. 45
  971.  
  972. HROI – primjena i provedba
  973.  
  974. Tijekom provedbe nastaje biblioteka strateških i
  975. provedbenih dokumenata interoperabilnosti koja sadrži
  976. – opće dokumente
  977.  
  978. • strategije, strateški i ostali planovi
  979. • propisi koji uređuju organizacijske strukture, procese i podatke
  980. • dokumenti i direktive EU
  981.  
  982. – strateške i planske dokumente
  983.  
  984. • studije, analize, preporuke, programi i planovi provedbe
  985.  
  986. – normizacijske dokumente
  987.  
  988. • referentne arhitekture, referentni modeli i specifikacije,
  989. standardni projekti, tehničke dokumentacije, katalozi,
  990. šifrarnici, adresari, rječnici ...
  991.  
  992. – pomoćne dokumente
  993.  
  994. • metodološki i drugi priručnici, upute, smjernice, obrasci
  995. ugovora i drugih dokumenata, radni dokumenti, obrazovni
  996. materijal ...
  997.  
  998. – arhivu
  999.  
  1000. 46
  1001.  
  1002. HROI – primjena i provedba
  1003.  
  1004. Razvoj i primjena HROI-a podržana putem ICT kroz
  1005. razvoj zajedničkih resursa i potpornih usluga
  1006. – portal javnih usluga
  1007. – sustav za autentikaciju i autorizaciju
  1008. – upravna sabirnica usluga (Government Service Bus)
  1009. – riznicu semantičke imovine
  1010. – uslugu pregleda, sistematizacije pretraživanja i
  1011. dohvata dokumentacije i resursa
  1012. interoperabilnosti te registar usluga
  1013. – izvorne registre temeljnih entiteta
  1014. – mrežu HITROnet
  1015. – projekt e-Ured
  1016. – …
  1017.  
  1018. 47
  1019.  
  1020. HROI i ciljevi strateškog plana
  1021.  
  1022. Najvažniji ciljevi strateškog plana s aspekta HROI:
  1023. – usklađivanje HROI s EIF 2.0
  1024. – strategija „oblaka javnog sektora“
  1025. – strategija za otvorene specifikacije i standarde
  1026. – zajednička interoperabilna rješenja na razini EU
  1027. – elektronički identiteti u elektroničkim javnim uslugama
  1028. – elektronička razmjene podataka između registara u
  1029. javnoj upravi
  1030. – popis usluga javnog sektora, priprema u obliku
  1031. integralnih e-usluga
  1032. – pregled procesa državne uprave i gotovih e-government
  1033. rješenja
  1034. – zajednička metodologija za standardizaciju ICT-a
  1035. – sustav podrške za ponovno korištenje javnih informacija
  1036. – povezivanje sustava za podršku korisnicima javne
  1037. uprave RH i EU
  1038. – program razvoja elektroničkih usluga
  1039.  
  1040. 48
  1041.  
  1042. ———————
  1043.  
  1044. OZNAČNI JEZICI
  1045.  
  1046. Interoperabilnost
  1047. informacijskih
  1048. sustava
  1049. Aleksander Radovan
  1050.  
  1051. OZNAČNI JEZICI
  1052. Osnove označnih jezika
  1053. Skupine, vrste i razvoj označnih jezika
  1054. Označni jezik XML
  1055. Validacija XML dokumenata
  1056. Rukovanje podacima
  1057. Poznatiji primjeri
  1058. 2
  1059.  
  1060. Uvod u označne jezike
  1061. • Označavanje (markup) – znakovni (ili binarni) niz
  1062. koji se umeće u tekst i tako označava određeni
  1063. dio teksta kako bismo ga razlikovali od ostatka
  1064. – "marking up" – označavanje teksta dodatnim
  1065. oznakama
  1066. (u tekstu, na margini)
  1067. • recenzenti, urednici, lektori ...
  1068.  
  1069. – razlozi: pogreške, oznake otiska, upute ...
  1070. • Jezik za označavanje ili označni jezik (markup
  1071. language)
  1072. – sustav oznaka ili anotacija nad tekstom kojime
  1073. se određene cjeline sintaktički odjeljuju od
  1074. drugih
  1075. – skup konvencija – dozvoljene oznake, što znače
  1076. 3
  1077.  
  1078. Uvod u označne jezike
  1079. • Označni jezici u kontekstu
  1080. interoperabilnosti
  1081. – omogućuju razmjenu podataka između
  1082. dviju strana u točno definiranom obliku
  1083. koji obje strane razumiju
  1084. – omogućavaju komunikaciju – sintaksno
  1085. i semantički
  1086. • Komunikacija dviju strana:
  1087. – na razini prijenosa podataka
  1088. – na razini razumijevanja smisla
  1089. prenesenih podataka (informacija)
  1090. 4
  1091.  
  1092. Najpoznatiji primjer
  1093. • Jezik HTML (HyperText Markup Language)
  1094.  
  1095. Document
  1096.  
  1097. Root element
  1098. <html>
  1099.  
  1100. Element
  1101. <head>
  1102.  
  1103. Element
  1104. <body>
  1105.  
  1106. Element
  1107. <title>
  1108. Text
  1109. "Naslov
  1110. stranice"
  1111.  
  1112. Element
  1113. <a>
  1114.  
  1115. Atribute
  1116. "href"
  1117.  
  1118. Text
  1119. "Poveznica"
  1120.  
  1121. Element
  1122. <h1>
  1123.  
  1124. Text
  1125. "Naslov"
  1126.  
  1127. 5
  1128.  
  1129. OZNAČNI JEZICI
  1130. Osnove označnih jezika
  1131. Skupine, vrste i razvoj označnih jezika
  1132. Označni jezik XML
  1133. Validacija XML dokumenata
  1134. Rukovanje podacima
  1135. Poznatiji primjeri
  1136. 6
  1137.  
  1138. Skupine označnih jezika
  1139.  
  1140. Danas se aktivno koristi nekoliko stotina označnih jezika
  1141. različite namjene
  1142. Vrlo važan oblik interoperabilnosti na globalnoj razini
  1143. Podjela prema namjeni – najvažnije skupine:
  1144. – označni jezici opće namjene (general purpose markup
  1145. languages)
  1146. – označni jezici dokumenata (document markup
  1147. languages)
  1148. – označni jezici za sindikaciju sadržaja (content
  1149. syndication markup languages)
  1150. – označni jezici za opis korisničkog sučelja (user interface
  1151. markup languages)
  1152. – označni jezici za vektorsku grafiku (vector graphics
  1153. markup languages)
  1154. – označni jezici usluga Weba i drugih udaljenih usluga
  1155. (Web service markup languages)
  1156. – označni jezici ostalih specifičnih namjena
  1157. 7
  1158.  
  1159. Označni jezici opće namjene
  1160. • Označni jezici opće namjene (general
  1161. purpose markup languages)
  1162. – služe za općeniti opis oznaka
  1163. – koriste se kao osnova izgradnje
  1164. drugih jezika
  1165. – primjeri:
  1166. • GML (Generalized Markup Language)
  1167. • SGML (Standard Generalized Markup
  1168. Language)
  1169. • XML (Extensible Markup Language)
  1170. • EBML (Extensible Binary Meta Language)
  1171. • ASN.1 (Abstract Syntax Notation One)
  1172. 8
  1173.  
  1174. Označni jezici dokumenata
  1175.  
  1176. Označni jezici dokumenata (document markup
  1177. languages)
  1178. – najrasprostranjeniji i najšire prihvaćeni označni
  1179. jezici u svakodnevnom korištenju
  1180. – primjeri:
  1181.  
  1182. • HTML i XHTML – prikaz internetskih stranica (kao
  1183. dokumenata?)
  1184. • JsonML (JavaScript Object Notation Markup Language)
  1185. – pretvorba između XML-a i JSON-a
  1186. • ODF ili OpenDocument (Open Document Format for
  1187. Office Applications)
  1188. • OOXML ili OpenXML (Office Open XML, Microsoft)
  1189. • TeX
  1190. • RTF (Rich Text Format, Microsoft)
  1191. • DocBook
  1192. • troff
  1193. • Wikitext
  1194.  
  1195. 9
  1196.  
  1197. Označni jezici za opis korisničkog
  1198. sučelja
  1199. • Označni jezici za opis korisničkog sučelja
  1200. (user interface markup languages)
  1201. – opis dijelova korisničkog sučelja
  1202. – opis razmještaja pojedinih
  1203. komponenata
  1204. – primjeri:
  1205.  
  1206. • JavaFX (JavaFX rich client platform, Oracle)
  1207. • XAML (Extensible Application Markup
  1208. Language, Microsoft)
  1209. • MXML (Adobe Macromedia eXtensible Markup
  1210. Language)
  1211. • XUL (XML User Interface Language, Mozilla)
  1212. • LZX (OpenLaszlo)
  1213. • HTML i XHTML – prikaz internetskih stranica
  1214. (kao korisničkog sučelja?)
  1215. 10
  1216.  
  1217. Označni jezici za sindikaciju sadržaja i
  1218. vektorsku grafiku
  1219. • Označni jezici za
  1220. sindikaciju sadržaja
  1221. (content syndication
  1222. markup languages)
  1223. – objava dijelova
  1224. internetskih stranica
  1225. (sjedišta Weba) na drugim
  1226. stranicama (sjedištima)
  1227. – većinom zasnovani na
  1228. XML-u
  1229. – primjeri:
  1230. • Atom
  1231. • RSS
  1232.  
  1233. • Označni jezici za
  1234. vektorsku grafiku (vector
  1235. graphics markup
  1236. languages)
  1237. – zapis vektorske grafike u
  1238. 2D ili 3D
  1239. – primjeri:
  1240. • SVG (Scalable Vector
  1241. Graphics)
  1242. • X3D
  1243. • VRML (Virtual Reality
  1244. Modeling Language)
  1245. • XAML i MXML?
  1246.  
  1247. 11
  1248.  
  1249. Označni jezici usluga Weba i
  1250. drugih udaljenih usluga
  1251. • Označni jezici usluga Weba i drugih
  1252. udaljenih usluga (Web service markup
  1253. languages)
  1254. – opis različitih usluga dostupnih
  1255. putem Interneta (Weba)
  1256. – primjeri:
  1257.  
  1258. • WSDL (Web Services Description
  1259. Language)
  1260. • SOAP (Simple Object Access Protocol)
  1261. • BPEL ili WS-BPEL (Web Services Business
  1262. Process Execution Language)
  1263. • XML-RPC (XML Remote Procedure Call)
  1264. • WSCL (Web Services Conversation
  1265. Language)
  1266. 12
  1267.  
  1268. Označni jezici specifičnih
  1269. namjena
  1270. • Označni jezici ostalih specifičnih namjena
  1271. – rješavaju probleme zapisa za specifične
  1272. potrebe
  1273. – primjeri:
  1274. • MathML – označni jezik za zapis matematičkih
  1275. jednadžbi
  1276. • CellML – označni jezik za zapis matematičkih modela
  1277. • ebXML – označni jezik za zapis informacija
  1278. elektroničkog poslovanja
  1279. • GML – označni jezik za zapis geografskih značajki
  1280. • MusicML – označni jezik za zapis muzičke notacije
  1281. • SCORM – označni jezik za zapis objekata e-učenja
  1282. • SMIL – označni jezik za zapis multimedijskih
  1283. prezentacija
  1284. • VoiceXML – označni jezik za zapis glasovnih podataka
  1285. 13
  1286.  
  1287. Podjele označnih jezika
  1288. • Neki jezici po svojoj definiciji mogu pripadati u
  1289. više skupina
  1290. – podjela nije jednoznačna
  1291. • Osnovna podjela prema upotrebi:
  1292. – konkretni označni jezici
  1293. • koriste se za određene potrebe
  1294.  
  1295. – npr. jezik HTML korišten za internetske stranice (Web)
  1296.  
  1297. – metaoznačni jezici opće namjene
  1298.  
  1299. • definiraju pravila, ali ne i značenje pojedinih oznaka
  1300. – npr. jezici SGML i XML
  1301.  
  1302. • Podjela prema izvedbi:
  1303. – izvedeni iz jezika SGML
  1304. – izvedeni iz jezika XML
  1305. – nisu izvedeni ni iz jednoga drugog jezika opće
  1306. namjene
  1307. 14
  1308.  
  1309. Vrste označnih jezika
  1310. • Tri glavne vrste označnih jezika:
  1311. – prezentacijski označni jezici
  1312. (presentational markup languages)
  1313. – proceduralni označni jezici
  1314. (procedural markup languages)
  1315. – opisni označni jezici (descriptive
  1316. markup languages)
  1317.  
  1318. 15
  1319.  
  1320. Vrste označnih jezika
  1321. • Prezentacijski označni jezici (presentational
  1322. markup languages)
  1323. – najčešće se koriste kod uređivača teksta,
  1324. internetskih stranica (Web), prezentacija i
  1325. sl.
  1326. – u dokument s tekstom umeću se oznake,
  1327. koje se koriste prilikom prikaza ili ispisa
  1328. dokumenta
  1329. • oznake su najčešće sakrivene od pogleda
  1330.  
  1331. – potencijalno se može njihov pregled otkriti korisniku
  1332.  
  1333. • u pozadini oblikuju konačni izgled dokumenta
  1334.  
  1335. – uređivači teksta često koriste načelo
  1336. WYSIWYG (What You See Is What You Get)
  1337.  
  1338. • sakriva oznake i omogućava oblikovani prikaz pri
  1339. uređivanju
  1340. 16
  1341.  
  1342. Vrste označnih jezika
  1343. • Proceduralni označni jezici (procedural
  1344. markup languages)
  1345. – umetanjem oznaka upravljaju obradom
  1346. tekstualnih podataka
  1347. – uočavanjem umetnutih oznaka pokreću
  1348. se određene akcije nad tekstom
  1349. – naredbe obrade – procesne instrukcije
  1350. (process instructions)
  1351. – oznake su najčešće vidljive (pri izradi i pri
  1352. korištenju)
  1353. 17
  1354.  
  1355. Vrste označnih jezika
  1356. • Opisni označni jezici (descriptive markup
  1357. languages)
  1358. – služe za označavanje dokumenta u
  1359. strukturnom smislu
  1360. – nisu izravno povezani ni s
  1361. prezentacijom teksta korisniku, niti s
  1362. uputama za obradu/procesiranje
  1363. – dijelovi teksta mogu se označiti u
  1364. semantičkom smislu
  1365. • pojašnjava se što oni predstavljaju, odnosno
  1366. kako bi se umetnula dodatna informacija o
  1367. tom dijelu teksta
  1368.  
  1369. 18
  1370.  
  1371. Označni jezik SGML
  1372. • SGML (Standard Generalized Markup
  1373. Language)
  1374. – međunarodna norma za predstavljanje
  1375. tekstualnih informacija u elektroničkom
  1376. obliku
  1377. • neovisno o uređaju ili sustavu
  1378.  
  1379. – metajezik – način formalnog opisa
  1380. označnog jezika
  1381.  
  1382. • nije konkretna inačica označnog jezika za opis
  1383. podataka iz neke domene
  1384.  
  1385. – cilj – definicija oznaka i shema pisanja
  1386. jedinstveno nazvanih označavanjem
  1387. (markup)
  1388. • čest i termin encoding – način eksplicitne
  1389. interpretacije teksta
  1390.  
  1391. 19
  1392.  
  1393. Označni jezik SGML
  1394. • SGML dokument može imati tri dijela:
  1395. – deklaraciju SGML
  1396. – prolog - sadrži:
  1397.  
  1398. • deklaraciju DOCTYPE s različitim deklaracijama
  1399. oznaka
  1400. • definiciju tipa dokumenta DTD (Document
  1401. Type Definition)
  1402.  
  1403. – instancu - vršni element i njegov sadržaj
  1404. • Primjene (ili aplikacije) SGML-a:
  1405. – konkretni označni jezici razvijeni za
  1406. određene potrebe
  1407. – svaka potreba = novi jezik – zbrka!
  1408. • I danas se razvijaju različiti označni jezici
  1409. • A stari se moderniziraju …
  1410.  
  1411. 20
  1412.  
  1413. Ponavljanje i odnosi označnih
  1414. jezika
  1415.  
  1416. HTML
  1417.  
  1418. SGML
  1419.  
  1420. XHTML
  1421. XML
  1422.  
  1423. • Domaća zadaća:
  1424. ponavljanje gradiva
  1425. kolegija SUPIT
  1426. („Standardi u
  1427. primjeni internetske
  1428. tehnologije”)
  1429. – jezik HTML
  1430. – jezik XHTML
  1431. – jezik XML
  1432.  
  1433. 21
  1434.  
  1435. OZNAČNI JEZICI
  1436. Osnove označnih jezika
  1437. Skupine, vrste i razvoj označnih jezika
  1438. Označni jezik XML
  1439. Validacija XML dokumenata
  1440. Rukovanje podacima
  1441. Poznatiji primjeri
  1442. 22
  1443.  
  1444. Označni jezik XML
  1445. • Označni jezik XML (Extensible Markup
  1446. Language)
  1447. – osnove:
  1448.  
  1449. odvaja podatke od prezentacije
  1450. omogućuje dijeljenje podataka
  1451. pojednostavljuje prijenos podataka
  1452. pojednostavljuje izmjene platformi
  1453. čini podatke dostupnima
  1454.  
  1455. – sadržava metapodatke koji opisuju
  1456. sadržaj
  1457.  
  1458. • omogućava semantičku interoperabilnost
  1459.  
  1460. – preporuka W3C
  1461.  
  1462. • podskup jezika SGML, oblikovan s velikom
  1463. jednostavnošću izvedbe i interoperabilnosti s
  1464. jezicima SGML i HTML
  1465. 23
  1466.  
  1467. Ciljevi jezika XML
  1468.  
  1469. Ciljevi koje jezik XML treba zadovoljiti jasno su definirani
  1470. već kod njegovog nastajanja:
  1471. – Jezik XML treba se moći jasno i neposredno koristiti na
  1472. internetu.
  1473. – Jezik XML treba podržavati mnoštvo različitih aplikacija
  1474. (primjena).
  1475. – Jezik XML treba biti kompatibilan s jezikom SGML.
  1476. – Pisanje programa koji procesiraju XML dokumente treba
  1477. biti jednostavno.
  1478. – Broj opcionalnih značajki u jeziku XML treba biti što
  1479. manji, idealno bi bilo da je bez njih.
  1480. – XML dokumenti trebaju biti ljudima čitljivi i jasni.
  1481. – Oblikovanje XML-a treba biti brzo izvedeno.
  1482. – Oblikovanje XML-a treba biti formalno i sažeto.
  1483. – XML dokumenti trebaju se moći jednostavno izraditi.
  1484. – Sažeto i jasno u XML oznakama je od minimalnog
  1485. značenja.
  1486. 24
  1487.  
  1488. Inačice jezika XML
  1489. • Aktualne inačice jezika XML
  1490. – XML 1.0 (Fifth Edition) 26.11.2008.
  1491. – XML 1.1 (Second Edition)
  1492. 16.8.2006.
  1493. • Napomena :
  1494. – Iako je trenutačna aktualna inačica
  1495. XML-a 1.1, još uvijek se preporučuje
  1496. korištenje inačice 1.0, koju sigurno
  1497. razumiju i „starije” aplikacije.
  1498. 25
  1499.  
  1500. XML 1.1
  1501. • Novosti inačice XML 1.1:
  1502. – korištenje znakova Unicode
  1503. – manje strogu definiciju naziva
  1504.  
  1505. • „sve što nije zabranjeno je dopušteno“
  1506.  
  1507. – dodavanje znakova koji omogućavaju
  1508. interoperabilnost različitih
  1509. mainframe i drugih sustava
  1510. – korištenje kontrolnih znakova
  1511. – skup ograničenja nazvan „potpuna
  1512. normalizacija“ (full normalization)
  1513. – oznaku nove inačice u zaglavlju
  1514. • procesori razlikuju koja pravila koriste pri
  1515. provjeri
  1516.  
  1517. 26
  1518.  
  1519. Osnovni pojmovi – jezik XML
  1520. • Osnovni pojmovi i značajke:
  1521. – znak (character) – osnovni građevni
  1522. element, smije se koristiti većina znakova iz
  1523. norme Unicode
  1524. – oznaka (tag) – <oznaka>, </oznaka>,
  1525. <oznaka />
  1526. – referenca entiteta (entity reference) –
  1527. upućuje na imenovani entitet, predefiniran ili
  1528. eksplicitno deklariran (npr. &lt;)
  1529. – sadržaj (content) – sadržaj je zapravo sve što
  1530. nije oznaka ili ne započinje znakom „&“ a
  1531. završava znakom „>“
  1532. – element
  1533. – atribut
  1534. 27
  1535.  
  1536. Struktura jezika XML
  1537.  
  1538. 28
  1539.  
  1540. Prolog
  1541. • Prolog – sadrži metainformacije o dokumentu:
  1542. – Deklaracija
  1543.  
  1544. • neobavezna
  1545. • definira vrstu kodiranja znakova i druge značajke
  1546. dokumenta
  1547. <?xml version="1.0" encoding='UTF-8' standalone='yes'?>
  1548. • preporučuje se
  1549. • ako postoji, onda na početku (bez praznih redaka i
  1550. znakova)!
  1551. • atributi
  1552.  
  1553. – version – definira inačicu XML-a, moguće vrijednosti su 1.0 ili
  1554. 1.1,
  1555. – encoding – opcionalni, definira vrstu kodiranja znakova
  1556. » vrijednost se određuju prema nazivima kodiranja znakova
  1557. IANA-CHARSET
  1558. » najčešće korištene vrijednosti su UTF-8, UTF-16, windows1250, windows-1252, ISO-8859-1 i ISO-8859-2,
  1559. standalone – opcionalni, označava ovisnost dokumenta o
  1560. vanjskim entitetima
  1561. » moguće vrijednosti su „yes” i „no”, a ako se ne navede,
  1562. pretpostavljena vrijednost je „no”
  1563.  
  1564. 29
  1565.  
  1566. Prolog
  1567. – Naredbe obrade (procesne instrukcije)
  1568. • prosljeđuju informaciju aplikacijama koje
  1569. obrađuju XML dokument
  1570. – imaju smisla u prologu (prije obrade)
  1571.  
  1572. • primjer: referenca na XSL listu stilova
  1573. <?xml-stylesheet type="text/xsl"
  1574. href="stylesheet.xsl"?>
  1575.  
  1576. – Komentari
  1577. • bilo gdje u dokumentu, zanemaruju se
  1578. <!-- Ovo je komentar -->
  1579. • ne mogu sadržavati tekst „-->“, ne smiju biti
  1580. ubačeni usred naziva oznake i ne smiju sadržavati
  1581. znakove „<“ ili „>“
  1582.  
  1583. – DTD ili XML shema
  1584. 30
  1585.  
  1586. Elementi
  1587.  
  1588.  
  1589. Element
  1590. – označavanje sadržaja i opis sadržaja koji označavaju
  1591. – informacije o poretku sadržaja
  1592. – odnosi između podataka
  1593.  
  1594. Oblici elementa:
  1595.  
  1596. – prazni elementi (empty element) ili elementi bez sadržaja
  1597.  
  1598. • ne sadrže ni tekst ni druge elemente, služe samo kao strukturne oznake
  1599. <oznaka></oznaka> ili <oznaka/>
  1600. – drugi način štedi memoriju i povećava čitljivost
  1601.  
  1602. – elementi jednostavnog sadržaja ili elementi koji sadržavaju
  1603. samo tekst
  1604. • tekst bez specijalnih znakova
  1605. <oznaka>Neki sadržaj</oznaka>
  1606.  
  1607. – elementi koji sadržavaju druge elemente
  1608. – sadrže samo druge elemente, ali ne i sadržaj
  1609.  
  1610. • iako drugi elementi sadržani u njima mogu imati sadržaj
  1611.  
  1612. – elementi koji sadržavaju miješani sadržaj i elemente
  1613. • sadrže kombinaciju sadržaja i drugih elemenata
  1614.  
  1615. 31
  1616.  
  1617. Elementi – nazivanje
  1618. (imenovanje)
  1619.  
  1620.  
  1621. Nazivanje (imenovanje) elemenata podliježe pravilima
  1622. – nazivi elemenata moraju započeti slovom ili znakom
  1623. „_“
  1624. – ne smiju započeti slovima „xml“ niti sadržavati
  1625. praznine
  1626. Nazivi elemenata nedvosmisleno predstavljaju značenje
  1627. Preporuke nazivanja:
  1628. – u međunarodnoj komunikaciji preporučuje se
  1629. korištenje engleskih naziva
  1630. – nije preporučljivo znatno kratiti, ali ni produljivati
  1631. nazive
  1632. – za odvajanje riječi u nazivu preporučuje se koristiti
  1633. velika početna slova riječi ili znak „_“
  1634. – ne preporučuje se korištenje znakova izvan engleske
  1635. abecede niti znakova „-” i „.“
  1636.  
  1637. 32
  1638.  
  1639. Atributi
  1640. • Atribut
  1641. – pružaju dodatnu informaciju o elementu
  1642. • atributi su vezani uz pojedini element
  1643.  
  1644. – navode se u početnoj oznaci elementa
  1645. – definiraju se kao par: naziv atributa = sadržaj
  1646. <datum format=“ISO8601“>2013-09-30</datum>
  1647. – sadržaj može biti prazan
  1648. – ograničenja:
  1649. • ne postoji ograničenje o brojnosti atributa unutar
  1650. elementa
  1651. • u istom elementu ne mogu se pojaviti dva atributa
  1652. istog naziva
  1653. • uvijek sadržavaju samo tekst i nemaju podstrukturu
  1654. • ne mogu se proširivati i ne mogu sadržavati višestruke
  1655. vrijednosti
  1656.  
  1657. 33
  1658.  
  1659. Atributi – nazivanje
  1660. (imenovanje)
  1661. • Nazivanje (imenovanje) atributa podliježe
  1662. pravilima
  1663. – slična pravila kao element
  1664. – mogu se koristiti jednostruki i dvostruki
  1665. navodnici, ali ne i „pametni navodnici”
  1666. • Napomena : česta pogreška
  1667. – kod umetanja koda iz raznih izvora, poput
  1668. dokumenata izrađenih uređivačem teksta ili
  1669. „izreži-umetni” (copy-paste) metodom,
  1670. moguće je da ćete umjesto dvostrukih
  1671. navodnika (") umetnuti tzv. „pametne
  1672. navodnike“ (smart quotes), odnosno znakove
  1673. „ i “, koji u XML dokumentu predstavljaju
  1674. pogrešku
  1675. 34
  1676.  
  1677. Tekst i znakovi
  1678. • Tekst
  1679. – znakovni niz, odnosno sadržaj između dviju oznaka
  1680. – XML parser procesirat će ga kao i sav drugi XML kod
  1681. • paziti na ograničenja uporabe posebnih znakova, poput
  1682. „<“
  1683.  
  1684. – tekst označen oznakom CDATA  ne parsira se
  1685. <tekst><!CDATA[ Ako je 2009 < 2010 onda je to dobro.
  1686. ]]</tekst>
  1687. • korisno za programski kod ili skriptu
  1688.  
  1689. • Znakovni entiteti
  1690. – simboli od jednog znaka
  1691. – zapis: & + naziv entiteta + ;
  1692.  
  1693. • znak iz stranice kodova kao # + heksadekadski kod
  1694. <tekst>Ovo će prikazati znak manje &lt; a ovo copyright &#169;
  1695. </tekst>
  1696.  
  1697. 35
  1698.  
  1699. Pravila pisanja u jeziku XML
  1700. • Svi XML dokumenti su dobro oblikovani
  1701. (well-formed)
  1702. – inače nisu XML dokumenti!
  1703. • Pravila dobre oblikovanosti
  1704. – samo jedan korijenski element
  1705. – elementi moraju biti pravilno zatvoreni
  1706. – elementi moraju biti pravilno gniježđeni
  1707. – smiju se koristiti samo dopušteni znakovi
  1708. – nazivi elemenata osjetljivi su na mala i
  1709. velika slova
  1710. – vrijednosti atributa moraju se postaviti u
  1711. navodnike
  1712. –…
  1713. 36
  1714.  
  1715. Domene i prostori naziva
  1716. • Prostori naziva (prostori imena, imenski prostori)
  1717. – glavni razlozi uvođenja prefiksa prostora imena u
  1718. nazive elemenata:
  1719. • mogućnost korištenja istih naziva u jednom XML
  1720. dokumentu ili zajedničkoj XML strukturi
  1721. • izbjegavanje konflikata naziva
  1722.  
  1723. • Korištenje domena
  1724. – potreba za jedinstveno imenovanim elementima i
  1725. atributima iz nekog određenog skupa vrijednosti
  1726. definiranim u području primjene
  1727. • ponovno korištenje postojećih shema
  1728. • proširenje postojećih shema
  1729. • ponovno korištenje programskog koda za obradu
  1730. postojećih
  1731. • kombiniranje proizvoljnih elemenata i elemenata
  1732. • podrška verzijama
  1733. • pretraživanja temeljena na odabiru shema
  1734. • validacija (provjera) temeljena na višestrukim shemama
  1735.  
  1736. 37
  1737.  
  1738. OZNAČNI JEZICI
  1739. Osnove označnih jezika
  1740. Skupine, vrste i razvoj označnih jezika
  1741. Označni jezik XML
  1742. Validacija XML dokumenata
  1743. Rukovanje podacima
  1744. Poznatiji primjeri
  1745. 38
  1746.  
  1747. Validacija XML dokumenata
  1748. • Provjera je li dokument „dobro oblikovan“
  1749. – je li to onda uopće XML dokument?
  1750. – lagano provjeriti
  1751. • Provjera prema nekom opisu koji specificira
  1752. uvjete valjanosti (validity) dokumenta
  1753. – postoji niz različitih načina i metoda
  1754. provjere valjanosti
  1755. – zasnivaju se na:
  1756.  
  1757. gramatikama
  1758. pravilima
  1759. izrazima
  1760. tvrdnjama
  1761. kombinaciji navedenih
  1762.  
  1763. 39
  1764.  
  1765. DTD
  1766. • DTD (Document Type Definition)
  1767. – skup deklaracija oznaka koje definiraju
  1768. tipove dokumenata
  1769. • strukturu dokumenta
  1770. • tipovi podataka
  1771. • obveznost elemenata
  1772.  
  1773. – zastarjelo?
  1774.  
  1775. • umjesto korištenja DTD-a preporučuje se
  1776. korištenje jezika svjesnih prostora naziva, npr.
  1777. XML Schema (XSD) i RELAX NG
  1778.  
  1779. – razvoj nije stao
  1780.  
  1781. • izrađuje se nova verzija kao 9. dio norme ISO/IEC
  1782. 19757 DSDL
  1783. – moći će koristiti prostore naziva
  1784.  
  1785. 40
  1786.  
  1787. XSD
  1788. • XSD (XML Schema Definition)
  1789. – (jedna od) XML shema
  1790. – preporuka W3C-a
  1791.  
  1792. • korištenje naziva XSD (XML Schema
  1793. Definition) ili alternativno WXS umjesto
  1794. naziva XML Schema
  1795.  
  1796. – „XML shema” može označavati opći naziv
  1797. skupa različitih XML shema
  1798. ponoviti gradivo SUPIT-a
  1799.  
  1800. • Gramatike, pravila, izrazi, tvrdnje … DTD,
  1801. XSD …
  1802. • Kako to sve zajedno složiti i koristiti?
  1803. 41
  1804.  
  1805. Jezik definicije shema
  1806. dokumenata DSDL
  1807. • Jezik definicije shema dokumenata DSDL
  1808. (Document Schema Definition Language)
  1809. – uloga – prikupljanje različitih zadataka i
  1810. izraza vezanih uz validacije u jedinstvenu
  1811. cjelinu skupa specifikacija i opisa
  1812. nadogradivog radnog okvira
  1813. – omogućava različitim validacijskim
  1814. tehnologijama da rade zajedno (paralelno ili
  1815. serijski)
  1816. – radni okvir – omogućava kombinaciju
  1817. višestrukih validacijskih zadataka različitih
  1818. tipova
  1819.  
  1820. • različite validacije se mogu istovremeno primijeniti na
  1821. isti XML dokument
  1822. • ukupna validacija je potpunija od pojedinačnih
  1823. • npr. validacija prvo s XSD i nakon toga dodatno
  1824. Schematron
  1825. 42
  1826.  
  1827. Jezik regularnih izraza RELAX NG
  1828. • Jezik regularnih izraza RELAX NG (REgular LAnguage for XML
  1829. Next Generation)
  1830. – „jezik regularnih izraza za XML nove generacije”
  1831. – objedinjavanjem jezika RELAX (Regular Language
  1832. description for XML) i TREX (Tree Regular Expressions for
  1833. XML)
  1834. – 2001. izradio OASIS, kasnije norma ISO/IEC 19757-2:2003
  1835. – značajke:
  1836.  
  1837. jednostavnost
  1838. dva oblika sintakse: osnovni XML i kompaktni
  1839. podrška za prostore naziva
  1840. uniformnost postupanja s atributima i elementima
  1841. podrška za nepobrojani i miješani sadržaj
  1842. mogućnost kombiniranja s drugim jezicima
  1843.  
  1844. – razvoj RELAX NG vremenski paralelno s razvojem XSD-a
  1845.  
  1846. • XSD nešto rasprostranjeniji te je podržan od većine parsera i
  1847. uređivača XML dokumenata
  1848. • RELAX NG rasprostranjen kod prezentacijskih označnih jezika
  1849. – npr. ODF, DocBook
  1850.  
  1851. 43
  1852.  
  1853. Shema RELAX NG
  1854.  
  1855.  
  1856. Regularni izraz – opisuje uzorak za pretraživanje
  1857. nizova znakova
  1858. – zapravo niz znakova koji opisuje druge nizove
  1859. znakova u skladu sa sintaksnim pravilima
  1860. Shema RELAX NG
  1861. – koristi uzorke strukture XML dokumenata
  1862. – smatra se jednostavnijom u odnosu na druge
  1863. jezike XML shema
  1864. – zapis sheme RELAX NG u dvama oblicima:
  1865. • u osnovnom obliku u zapisu jezika XML
  1866. – uobičajene ekstenzije datoteka „.rng“
  1867.  
  1868. • u kompaktnom obliku nazvan RELAX NG Compact
  1869. Syntax
  1870. – ovo nije XML, uobičajene ekstenzije datoteka „.rnc“
  1871.  
  1872. – Korištenje RELAX NG preporučuje se u jednakoj mjeri
  1873. kao i XSD
  1874.  
  1875. 44
  1876.  
  1877. RELAX NG – jednostavan primjer
  1878. <book>
  1879. <page>
  1880. This is page one.
  1881. </page>
  1882. <page>
  1883. This is page two.
  1884. </page>
  1885. </book>
  1886.  
  1887. <element name="book"
  1888. xmlns="http://relaxng.org/
  1889. ns/structure/1.0">
  1890. <oneOrMore>
  1891. <element name="page">
  1892. <text/>
  1893. </element>
  1894. </oneOrMore>
  1895. </element>
  1896. 45
  1897.  
  1898. RELAX NG – primjer
  1899. XML:
  1900. <imenik>
  1901. <osoba oib=“12345678901“>
  1902. <ime>Ana</ime>
  1903. <prezime>Anić</prezime>
  1904. <email>ana.anic@racunarstvo.hr
  1905. </email>
  1906. </osoba>
  1907. <osoba oib=“23456789012“>
  1908. <cijeloIme>Ivo I. Ivić mlađi
  1909. </cijeloIme>
  1910. </osoba>
  1911. </imenik>
  1912.  
  1913.  
  1914. Izrazi:
  1915.  
  1916. barem jedna osoba u imeniku
  1917. osoba mora imati OIB
  1918. razdvojeno ili spojeno ime i prezime
  1919. neobavezna adresa elektroničke
  1920. pošte
  1921.  
  1922. DTD:
  1923. <!DOCTYPE imenik [
  1924. <!ELEMENT imenik (osoba+)>
  1925. <!ELEMENT osoba (((ime, prezime) |
  1926. cijeloIme), email?)>
  1927. <!ATTLIST osoba oib CDATA #REQUIRED>
  1928. <!ELEMENT ime (#PCDATA)>
  1929. <!ELEMENT prezime (#PCDATA)>
  1930. <!ELEMENT cijeloIme (#PCDATA)>
  1931. <!ELEMENT email (#PCDATA)>
  1932. ]>
  1933.  
  1934. 46
  1935.  
  1936. RELAX NG – primjer
  1937. <?xml version="1.0" encoding="UTF-8"?>
  1938. <element name="imenik" xmlns="http://relaxng.org/ns/structure/1.0">
  1939. <oneOrMore>
  1940. <element name="osoba">
  1941. <attribute name="oib">
  1942. <text/>
  1943. </attribute>
  1944. <choice>
  1945. <group>
  1946. <element name="ime">
  1947. <text/>
  1948. </element>
  1949. <element name="prezime">
  1950. <text/>
  1951. </element>
  1952. </group>
  1953. <element name="cijeloIme">
  1954. <text/>
  1955. </element>
  1956. </choice>
  1957. <optional>
  1958. <element name="email">
  1959. <text/>
  1960. </element>
  1961. </optional>
  1962. </element>
  1963. </oneOrMore>
  1964. </element>
  1965.  
  1966. RELAX NG Compact Syntax
  1967. element imenik {
  1968. element osoba {
  1969. attribute oib { text },
  1970. ( ( element ime { text },
  1971. element prezime { text } ) |
  1972. element cijeloIme { text } ),
  1973. element email { text }?
  1974. }+
  1975. }
  1976.  
  1977. 47
  1978.  
  1979. Jezik tvrdnji Schematron
  1980.  
  1981. Jezik tvrdnji Schematron
  1982. – jezik za umetanje tvrdnji o prisustvu ili odsustvu
  1983. uzorka u XML dokumentima
  1984. – temelji se na pronalaženju stablastih uzoraka
  1985.  
  1986. • omogućuje prikaz različitih struktura koje je problematično
  1987. prikazati u jezicima shema temeljenim na gramatici (npr. DTD,
  1988. XSD i RELAX NG)
  1989. – primjer: ako u elementu <spol> stoji vrijednost „muški“, onda u istoj
  1990. strukturi čvorova pod elementom <dijagnoza> ne bi smjelo pisati
  1991. „trudan“ 
  1992.  
  1993. • obrnuta logika u odnosu na gramatike
  1994.  
  1995. – kod jezika temeljnih na gramatici sve što nije eksplicitno dopušteno
  1996. nije valjano
  1997. – kod jezika temeljenih na pravilima sve što nije eksplicitno zabranjeno
  1998. je valjano
  1999.  
  2000. – može se kombinirati s validacijom zasnovanom na
  2001. gramatici
  2002. – izveden povrh XSLT, koristi XPath
  2003. – međunarodna norma ISO/IEC 19757-3:2006 Information
  2004. technology -- Document Schema Definition Language
  2005. (DSDL) - Part 3: Rule-based validation - Schematron
  2006. 48
  2007.  
  2008. Schematron – elementi
  2009. • Osnovni elementi:
  2010. – <schema> – glavni element dokumenta koji
  2011. sadržava sve druge elemente
  2012. – <title> – opcionalni element naslov sheme
  2013. – <ns> – element prostora imena i prefiksa
  2014. korištenih u shemi, ne mora postojati, a može ih
  2015. biti više
  2016. – <pattern> – element uzorka koji sadržava
  2017. pravila
  2018. – <rule> – element pravila s atributom „context”
  2019. koji sadržava tvrdnje
  2020. – <assert> – element tvrdnje s atributom „test”
  2021. koji sadržava izraz XPath s opisom tvrdnje
  2022. – <report> – element izvještaja s atributom „test”
  2023. koji sadržava XPath izraz i opis izvještaja
  2024. 49
  2025.  
  2026. Schematron – način rada
  2027.  
  2028. Način rada
  2029. – bitan je samo poredak elemenata pravila
  2030.  
  2031. • poredak ostalih elemenata ovisi o konkretnoj izvedbi
  2032.  
  2033. – uvjeti koji se ispituju odnose se na postojanje i
  2034. vrijednosti elemenata i atributa
  2035. – pozitivne tvrdnje izražavaju ispitivanje
  2036. korištenjem atributa test u kojem se nalaze XPath
  2037. izrazi istinosnih rezultata
  2038. • ako kod ispitivanja uvjet nije ispunjen, onda se šalje
  2039. poruka
  2040.  
  2041. – kod izvještaja je riječ o negativnim tvrdnjama
  2042.  
  2043. • poruka će biti poslana ako je uvjet ispitivanja ispunjen
  2044.  
  2045. – pravila čine skupine tvrdnji koje odabiru
  2046. kontekstne čvorove koji se evaluiraju
  2047. – uzorci čine skupine pravila i prvo pravilo je ono
  2048. koje se koristi
  2049.  
  2050. 50
  2051.  
  2052. Schematron – koraci rada
  2053. Za svaki kontekstni čvor u dokumentu koji se
  2054. validira
  2055. Za svaku fazu koja se evaluira (ako faze postoje,
  2056. inače uzorak)
  2057. Za svaki uzorak (u fazi)
  2058. Pronađi prvo pravilo koje odgovara
  2059. kontekstnom čvoru
  2060. Za svaku tvrdnju i izvještaj u pravilu
  2061. Izvedi testiranje
  2062. Ako test tvrdnje nije uspio ili je uspio test
  2063. izvještaja
  2064. Pošalji poruku
  2065. (Ako postoji dijagnostika i uključena je
  2066. Pošalji dijagnostičku poruku)
  2067. 51
  2068.  
  2069. Schematron – primjer
  2070.  
  2071. Korijenski element mora biti imenik.
  2072. Dozvoljena djeca elementa imenik mora biti element osoba.
  2073. Roditelj elementa osoba mora biti element imenik.
  2074. Djeca elementa osoba moraju biti element ime, prezime ili email.
  2075. Element ime može biti samo jedan.
  2076. Element prezime može biti samo jedan.
  2077. Element email može biti samo jedan.
  2078. Element osoba mora imati atribut oib.
  2079. Element osoba smije imati samo atribut oib.
  2080. Roditelj elementa ime mora biti osoba.
  2081. Element ime ne može imati djecu.
  2082. Roditelj elementa prezime mora biti osoba.
  2083. Element prezime ne može imati djecu.
  2084. Roditelj elementa email mora biti osoba.
  2085. Element email ne može imati djecu.
  2086. Element * nije valjan u ovom dokumentu.
  2087.  
  2088. 52
  2089.  
  2090. Schematron – primjer
  2091. <?xml version="1.0" encoding="UTF-8"?>
  2092. <schema xmlns="http://purl.oclc.org/dsdl/schematron">
  2093. <title>Imenik</title>
  2094. <ns prefix="im" uri="http://www.racunarstvo.hr/imenik">
  2095. <pattern name="all">
  2096. <rule context="/">
  2097. <assert test="im:imenik">
  2098. Korijenski element mora biti imenik.
  2099. </assert>
  2100. </rule>
  2101. <rule context="im:imenik">
  2102. <assert test="count(*) = count(im:osoba)">
  2103. Dozvoljena djeca elementa imenik mora biti element osoba.
  2104. </assert>
  2105. </rule>
  2106. <rule context="im:osoba">
  2107. <assert test="parent::im:imenik">
  2108. Roditelj elementa osoba mora biti element imenik.
  2109. </assert>
  2110. <assert test="count(*) = count(im:ime|im:prezime|im:email)">
  2111. Djeca elementa osoba moraju biti element ime, prezime ili email.
  2112. </assert>
  2113. <assert test="count(im:ime) = 1">
  2114. Element ime može biti samo jedan.
  2115. </assert>
  2116. <assert test="count(im:prezime) = 1">
  2117. Element prezime može biti samo jedan.
  2118. </assert>
  2119. <assert test="count(im:email) = 1">
  2120. Element email može biti samo jedan.
  2121. </assert>
  2122. <assert test="@oib">
  2123. Element osoba mora imati atribut oib.
  2124. </assert>
  2125. <assert test="count(@*) = count(@oib)">
  2126. Element osoba smije imati samo atribut oib.
  2127. </assert>
  2128. </rule>
  2129.  
  2130. <rule context="im:ime">
  2131. <assert test="parent::im:osoba">
  2132. Roditelj elementa ime mora biti osoba.
  2133. </assert>
  2134. <assert test="count(*) = 0">
  2135. Element ime ne može imati djecu.
  2136. </assert>
  2137. </rule>
  2138. <rule context="im:prezime">
  2139. <assert test="parent::im:osoba">
  2140. Roditelj elementa prezime mora biti osoba.
  2141. </assert>
  2142. <assert test="count(*) = 0">
  2143. Element prezime ne može imati djecu.
  2144. </assert>
  2145. </rule>
  2146. <rule context="im:ime">
  2147. <assert test="parent::im:osoba">
  2148. Roditelj elementa email mora biti osoba.
  2149. </assert>
  2150. <assert test="count(*) = 0">
  2151. Element email ne može imati djecu.
  2152. </assert>
  2153. </rule>
  2154. <rule context="*">
  2155. <assert test="true()">
  2156. Element * nije valjan u ovom dokumentu.
  2157. </assert>
  2158. </rule>
  2159. </pattern>
  2160. </schema>
  2161.  
  2162. 53
  2163.  
  2164. Usporedba jezika
  2165. • Relativni logički odnosi
  2166. skupova
  2167. – svjetlije – izvedivo, ali
  2168. nezgodne u praksi
  2169. – tamnije – izvedivo
  2170. samo ako se sheme
  2171. prilagode
  2172. • XSD moćniji od DTD
  2173. • RELAX NG „širi” od XSD
  2174. • Schematron najmoćniji
  2175. ima najveće mogućnosti
  2176. 54
  2177.  
  2178. OZNAČNI JEZICI
  2179. Osnove označnih jezika
  2180. Skupine, vrste i razvoj označnih jezika
  2181. Označni jezik XML
  2182. Validacija XML dokumenata
  2183. Rukovanje podacima
  2184. Poznatiji primjeri
  2185. 55
  2186.  
  2187. Rukovanje podacima u obliku XML
  2188. • Podaci u obliku XML
  2189. – namjena ista kao i podaci u bazi, datoteci …
  2190. – zapis i pohrana strukturiranih podataka
  2191. • Osnovne operacije:
  2192. – pohrana – zapisivanje
  2193. – razmjena – slanje, primanje
  2194. – razumijevanje – sintaksa i semantika
  2195. – korištenje – procesi i prikaz korisniku
  2196. • Primjena – za neku svrhu (daljnja računalna
  2197. obrada, prikaz krajnjem korisniku i sl.)
  2198.  
  2199. 56
  2200.  
  2201. Kako koristiti podatke u obliku
  2202. XML?
  2203. • Podatke prvo trebamo moći "razumjeti"
  2204. • Prevođenje u oblik koji znamo i možemo koristiti –
  2205. analiza
  2206. • parsiranje
  2207. • sintaksna analiza
  2208. • leksička analiza
  2209.  
  2210. – slično kao kod prevođenja programa iz izvornog
  2211. u odredišni (izvršni) oblik
  2212. • Dva osnovna načina rada korištenja XML sadržaja :
  2213. – parsiranje temeljeno na stablu (tree-based
  2214. parsing)
  2215. • cijeli dokument se prebacuje u objektnu strukturu
  2216.  
  2217. – parsiranje temeljeno na događajima (eventbased parsing)
  2218.  
  2219. • jednim prolazom sekvencijalno kroz XML dokument
  2220. generiraju se događaji
  2221. 57
  2222.  
  2223. DOM i interoperabilnost
  2224.  
  2225.  
  2226. Objektni model dokumenata (Document Object Model)
  2227. – konvencija, neovisna o platformi i jeziku izvedbe, za interakciju
  2228. s objektima označnih jezika (najčešće HTLM, XHTML, XML ...)
  2229. Povijesni razvoj inačica
  2230. – počeo s HTML 4 (NN2, IE3) – tzv. "Legacy DOM", DOM Level 0
  2231. – DHTML, CSS, layerness (NN4, IE4) – "Intermediate DOM"
  2232. – 1998. – DOM Level 1 – rješavaju se određene nekompatibilnosti
  2233. – 2000. – DOM Level 2 – model događaja, prostori naziva, CSS
  2234. – 2004. – DOM Level 3 – XPath, serijalizacija XML dokumenata,
  2235. upravljanje događajima (s tipkovnice),
  2236. – 2012. – DOM Level 4 (prijedlog W3C) – usklađivanje s
  2237. JavaScriptom i postojećim implementacijama, uz maksimalno
  2238. pojednostavljivanje
  2239. – 2014. – DOM Living Standard – dom.spec.whatwg.org
  2240. DOM Level 1 uvijek, preporuka DOM Level 2 (provjera), ako točno
  2241. poznajemo funkcionalnosti i preglednike može i DOM Level 3
  2242.  
  2243. 58
  2244.  
  2245. Preglednik i načini prikaza
  2246.  
  2247. JavaScript koristi DOM kao osnovni način komuniciranja i
  2248. upravljanja objektima u HTML dokumentu
  2249. Način prikaza u pregledniku
  2250. – izvedba parsiranja i prikaza te razmještaja grafičkih elemenata
  2251. – različite konkretne implementacije (layout engines) – preko 20!
  2252. Najpoznatiji layout engines:
  2253. – WebKit
  2254. • Safari, iOS, Android, Chrome (<=27), Kindle, BlackBerry, Tizen
  2255.  
  2256. – Blink – Googleov fork WebKita
  2257.  
  2258. • Chrome (28+), Opera (15+), Chromium, Qt WebEngine
  2259.  
  2260. – Gecko – Mozzila
  2261.  
  2262. • Firefox, SeaMonkey, Camino, Flock, K-Meleon, Songbird, Galeon, IE-Wine
  2263.  
  2264. – Trident (MSHTML) – Microsoft
  2265.  
  2266. • Internet Explorer, Windows Phone 8, Maxthon i sl.
  2267.  
  2268. – i niz drugih – Amaya, KHTML, Presto (Opera do 15), Tasman …
  2269.  
  2270. 59
  2271.  
  2272. Rasprostranjenost preglednika
  2273. Chrome
  2274.  
  2275. IE
  2276.  
  2277. Firefox
  2278.  
  2279. Safari
  2280.  
  2281. Edge
  2282.  
  2283. Other
  2284.  
  2285. analytics.usa.gov
  2286.  
  2287. 43,8%
  2288.  
  2289. 16,6%
  2290.  
  2291. 7.8%
  2292.  
  2293. 24,7%
  2294.  
  2295. 3.2%
  2296.  
  2297. 3.0%
  2298.  
  2299. StatCounter
  2300.  
  2301. 59.31%
  2302.  
  2303. 8.94%
  2304.  
  2305. 13.37%
  2306.  
  2307. 9.98%
  2308.  
  2309. 2,81%
  2310.  
  2311. 5.59%
  2312.  
  2313. Kolovoz – Listopad 2016.
  2314.  
  2315. 60
  2316.  
  2317. Programsko sučelje SAX
  2318.  
  2319.  
  2320. Programsko sučelje SAX (Simple API for XML)
  2321. – sekvencijalni parser za XML dokumente
  2322. – radi na načelu jednosmjernog prolaza kroz
  2323. dokument
  2324. – rezultat obrade vraća u jednom toku (stream)
  2325. – de facto norma – ne postoji striktna specifikacija
  2326. Događaji – pronalazak:
  2327. – tekstualnih čvorova
  2328. – čvorova elemenata
  2329. • atributi se obrađuju kao dijelovi čvora elementa
  2330.  
  2331.  
  2332. – naredbi obrade
  2333. – komentara
  2334. Inačice – još uvijek aktualan SAX2 (prostori imena,
  2335. filtri, leksički događaji, sheme ...), nove inačice u
  2336. razvoju
  2337.  
  2338. 61
  2339.  
  2340. SAX primjer
  2341. <?xml version="1.0" encoding="UTF-8"?>
  2342. <osoba oib="12345678901">
  2343. <ime>
  2344. Ana
  2345. </ime>
  2346. <?naredba_obrade
  2347. obradi_djevojacko_prezime="da"?>
  2348. <prezime postojiDjevojackoPrezime="da">
  2349. Anić
  2350. <djevojackoPrezime>
  2351. Ivić
  2352. </djevojackoPrezime>
  2353. </prezime>
  2354. </osoba>
  2355. 62
  2356.  
  2357. SAX primjer
  2358.  
  2359. SAX parser generira sljedeći niz događaja:
  2360. – početak čvora elementa osoba
  2361.  
  2362. • s atributom „oib” vrijednosti „12345678901“
  2363.  
  2364.  
  2365. početak čvora elementa ime
  2366. tekstualni čvor sadržaja „Ana“
  2367. završetak čvora elementa ime
  2368. naredba obrade „naredba_obrade“
  2369.  
  2370. • s atributom „obradi_djevojacko_prezime“ vrijednosti „da“
  2371.  
  2372. – početak čvora elementa prezime
  2373.  
  2374. • s atributom „postojiDjevojackoPrezime“ vrijednosti „da“
  2375.  
  2376.  
  2377. tekstualni čvor sadržaja „Anić“
  2378. početak čvora elementa djevojackoPrezime
  2379. tekstualni čvor sadržaja „Ivić“
  2380. završetak čvora elementa djevojackoPrezime
  2381. završetak čvora elementa prezime
  2382. završetak čvora elementa osoba
  2383.  
  2384. 63
  2385.  
  2386. SAX ili DOM – prednosti i
  2387. mane
  2388.  
  2389. SAX
  2390. – koristi manje memorijskih resursa
  2391.  
  2392. • usporedivo s najvećom dubinom stabla i najvećim podatkom
  2393. • korisno kod vrlo velikih dokumenata
  2394.  
  2395.  
  2396. – u načelu brže parsiranje nego kod DOM-a
  2397. – lakše se prilagođava promjeni strukture
  2398. – za pronalaženje pojedinih elemenata u jednom
  2399. prolazu
  2400. DOM
  2401. – cijeli dokument na raspolaganju u memoriji
  2402. • ako je prevelik onda u sporoj memoriji (disk)
  2403.  
  2404. – bolji kod cjelovitih validacija i kod višestrukih
  2405. istovremenih pristupa različitim dijelovima
  2406. – kada XPath ili XSLT trebaju imati pristup bilo kojem
  2407. čvoru dokumenta tijekom obrade
  2408. – kod višestrukih ponovnih korištenja elemenata,
  2409. paralelnih pronalaženja i transformacija koje
  2410. zahtijevaju cijeli dokument u objektnoj strukturi
  2411. 64
  2412.  
  2413. StAX
  2414. • Push parser – XML parser šalje (push) XML podatke
  2415. klijentu kada naiđe na element
  2416. – bez obzira je li klijent spreman prihvatiti podatke
  2417. • Pull parser – klijent poziva (pull) metode biblioteke za
  2418. parsiranje kada treba interakciju s XML podacima i
  2419. dohvat podataka
  2420. – poziv onda kada klijent treba/želi podatke
  2421. – prednosti:
  2422. • klijent (a ne parser) kontrolira aplikacijsku dretvu
  2423. • manja i jednostavnija biblioteka parsiranja (u odnosu na
  2424. SAX)
  2425. • čitanje višestrukih dokumenata u jednoj dretvi
  2426. • mogućnost filtriranja sadržaja (ignoriranja nepotrebnih
  2427. elemenata)
  2428. • podrška i „XML pogled” na podatke koji nisu XML
  2429.  
  2430. • StAX (Streaming API for XML) – koristi pull parsiranje
  2431. – korisno kod paralelne obrade, za SOAP i WSDL, kod
  2432. virtualnih izvora podataka i specifičnih XML rječnika
  2433.  
  2434. 65
  2435.  
  2436. SAX, DOM i StAX – značajke
  2437. StAX
  2438.  
  2439. SAX
  2440.  
  2441. DOM
  2442.  
  2443. pull, streaming
  2444.  
  2445. push,
  2446. streaming
  2447.  
  2448. in memory
  2449. tree
  2450.  
  2451. visoka
  2452.  
  2453. srednja
  2454.  
  2455. visoka
  2456.  
  2457. ne
  2458.  
  2459. ne
  2460.  
  2461. da
  2462.  
  2463. Efikasnost
  2464. (CPU, memorija)
  2465.  
  2466. dobra
  2467.  
  2468. dobra
  2469.  
  2470. ovisi
  2471.  
  2472. Samo unaprijed
  2473.  
  2474. da
  2475.  
  2476. da
  2477.  
  2478. ne
  2479.  
  2480. Zapis u XML oblik
  2481.  
  2482. da
  2483.  
  2484. ne
  2485.  
  2486. da
  2487.  
  2488. Kreiranje, čitanje,
  2489. osvježavanje, brisanje
  2490.  
  2491. ne
  2492.  
  2493. ne
  2494.  
  2495. da
  2496.  
  2497. Tip API-ja
  2498.  
  2499. Jednostavnost korištenja
  2500. XPath mogućnosti
  2501.  
  2502. 66
  2503.  
  2504. Implementacije za DOM, SAX i
  2505. StAX
  2506. • Integrirani skup klasa u .NET Framework-u
  2507. – XmlReader (pull) i XmlDocument (DOM)
  2508. – nekad skup usluga MSXML (Microsoft XML
  2509. Core Services)
  2510. • Programska sučelja osnovnih biblioteka
  2511. platforme Java
  2512. – JAXP (Java API for XML Processing) –
  2513. objedinjuje parsiranja temeljena na sučeljima
  2514. DOM, SAX i StAX
  2515. – JDOM i dom4j – alternativni objektni modeli
  2516. otvorenog koda za XML pisani u jeziku Java
  2517. • Biblioteka Xerces i Xerces2 (C++, Java i Perl)
  2518. • Biblioteka libxml2 (C)
  2519. • Mnogi drugi ...
  2520. 67
  2521.  
  2522. Transformacije i prezentacije
  2523. korištenjem jezika XSL
  2524. Ponavljanje SUPIT
  2525. • XSL (eXtensible Stylesheet Language)
  2526. – porodica preporuka za definiranje
  2527. transformacije i prezentacije XML
  2528. dokumenata, a sastoji se od triju dijelova:
  2529. • jezika XPath (XML Path Language)
  2530. • jezika XSLT (eXtensible Stylesheet
  2531. Language Transformations)
  2532. • jezika XSL-FO (eXtensible Stylesheet
  2533. Language – Formatting Objects)
  2534.  
  2535. 68
  2536.  
  2537. XPath
  2538.  
  2539. XPath je jezik izraza (expression language) - koristi se za
  2540. pristup i lociranje, odnosno adresiranje dijelova XML
  2541. dokumenata
  2542. – XPath 1.0 preporuka W3C-a još 1999.
  2543.  
  2544. • široko rasprostranjen, koristi se u programskim jezicima (Java, C#,
  2545. JS …)
  2546. • ugrađen u jezike XSLT i XForms
  2547.  
  2548. – XPath 2.0 preporuka W3C-a 2007.
  2549.  
  2550. • bogatiji sustav tipova - čvorovi kao članovi uređenog niza
  2551. • proširen skup funkcija i operatora
  2552. • atomarni tipovi i korisnički definirani tipovi (datum, vrijeme, URI
  2553. …)
  2554. • sedam vrsta čvorova
  2555. • nudi niz izraza koji se koriste u jeziku XQuery
  2556. • XPath 2.0 drugo izdanje preporuka W3C-a 2010.
  2557. – poneke primjene još uvijek koriste XPath 1.0
  2558.  
  2559. – XPath 3.0 – preporuka za kandidata, siječanj 2013.
  2560.  
  2561. • dinamički pozivi funkcija, izrazi inline funkcija, union tipovi, URL-i
  2562. u nazivima, konkatenacija znakovnih nizova, operator mapiranja
  2563.  
  2564. 69
  2565.  
  2566. XSLT
  2567.  
  2568.  
  2569. Deklarativni jezik za transformacije XML dokumenata XSLT
  2570. (eXtensible Stylesheet Language Transformations)
  2571. – prikaz i dodavanje elemenata i atributa
  2572. – brisanje i sakrivanje dijelova dokumenta
  2573. – uređivanje, oblikovanje i sortiranje elemenata
  2574. – uvjetno izvršavanje pravila i testiranje
  2575. Inačice
  2576. – XSLT 1.0 - preporuke W3C-a 1999., kad i XPath 1.0
  2577. • široko prihvaćena
  2578. • od XSLT 1.1 se odustalo
  2579.  
  2580. – XSLT 2.0 – preporuka W3C-a 2007.
  2581.  
  2582. • konverzija fragmenata rezultantnog stabla u skupove čvorova, višestruki
  2583. izlazni dokumenti
  2584. • ugrađena podršku za grupiranja i korisnički definirane funkcije
  2585.  
  2586.  
  2587. – XSLT 3.0 – prijedlog od srpnja 2012.
  2588. Korištenje
  2589. – XSLT 2.0 do danas baš nije previše prihvaćen ni kod preglednika
  2590. ni kod poslužitelja
  2591. – XSLT 2.0 koristi XPath 2.0, a XSLT 1.0 koristi XPath 1.0
  2592. • nije najbolja kombinacija XSLT 1.0 i XPath 2.0
  2593.  
  2594. 70
  2595.  
  2596. Transformacije pomoću XSLT
  2597.  
  2598. Rezultat postupka transformacije – novi XML dokument
  2599. – no, moguće je proizvesti i bilo koji drugi dokument –
  2600. nije XML dokument, već običan tekst (plain text)
  2601. Transformacije u oblik za prezentaciju putem stranica
  2602. Weba
  2603. – očekivani izlazni oblik je HTML ili XHTML dokument
  2604. • ako transformacija prati pravila XML-a, onda je XHTML
  2605. • ako ne prati, onda HTML (obični tekst)
  2606.  
  2607.  
  2608. Izvedbe XSLT procesora
  2609. – samostalne aplikacije ili komponente ugrađene u
  2610. preglednik, aplikacijski poslužitelj, programski radni
  2611. okvir (framework) ili sam operacijski sustav
  2612. – mogu se izvršavati na klijentu ili poslužitelju
  2613. – poznatiji XSLT procesori: Saxon, Xalan, xsltproc, XT,
  2614. MSXML, Sablotron, 4XSLT ...
  2615.  
  2616. 71
  2617.  
  2618. XSL-FO
  2619.  
  2620. Objekt za oblikovanje XSL-FO (eXtensible Stylesheet
  2621. Language – Formatting Objects)
  2622. – oblikovanja XML dokumenata za prikaz
  2623. • nije nužno vezano uz interoperabilnost
  2624.  
  2625.  
  2626. Mogućnosti prikaza XML dokumenata
  2627. – primjena predloška stila CSS (Cascading Style Sheets) za
  2628. prikaz XML podataka u pregledniku s određenim dizajnom
  2629. – XSLT za transformaciju XML datoteke u HTML ili XHTML
  2630. datoteku
  2631. • naknadno se može primijeniti CSS te grafika (slike, fontovi i sl.)
  2632.  
  2633. – XSL-FO za oblikovanje prikaza i posljedičnu konverziju u
  2634. ispisni oblik
  2635. • najčešće PDF i PS (PostScript), ali moguće i u druge oblike
  2636.  
  2637. – obrada XML dokumenta u aplikaciji i prebacivanje
  2638. oblikovanih podataka u neki oblik grafičkog korisničkog
  2639. sučelja
  2640. • npr. „tanki” Web klijent, grafičko sučelje „debelog” klijenta,
  2641. izvještaju iz izvještajnog podsustava ...
  2642.  
  2643. 72
  2644.  
  2645. XSLT i XSL-FO u praksi
  2646.  
  2647. 73
  2648.  
  2649. Jezik upita XQuery
  2650.  
  2651. Označni jezik upita i funkcionalnog programiranja XQuery (XML
  2652. Query)
  2653. – izvodi upite nad kolekcijama XML podataka
  2654.  
  2655. onima koje „vidi” kao XML – pravi XML, polustrukturirani podaci, tekst,
  2656. baze podataka, repozitoriji objekata, JSON, binarni podaci …
  2657.  
  2658. – može pronalaziti sadržaj
  2659.  
  2660. koristi sintaksu XPath izraza
  2661. izvodi se nad stablastim podatkovnim modelom XDM (XPath Data
  2662. Model)
  2663.  
  2664. – korištenjem izraza FLWOR
  2665.  
  2666.  
  2667. FOR, LET, WHERE, ORDER BY i RETURN
  2668.  
  2669. Upotreba – od svijeta Weba i do baza podataka
  2670. – izvještaji iz XML podataka i baza
  2671. – dohvat podataka iz baze podataka za daljnju upotrebu (npr. usluga
  2672. Weba)
  2673. – prilagodljivi upiti koji pronalaze podatke na Webu
  2674. – transformacije XML podataka u druge oblike (npr. XHTML),
  2675. – izdvajanje informacija i upravljanje XML podacima
  2676. – ...
  2677. XQuery je za XML što je SQL za baze podataka
  2678.  
  2679. 74
  2680.  
  2681. XQuery – inačice i izvedbe
  2682. • Razvoj inačica
  2683.  
  2684. • razvijao se paralelno s XSLT 2.0
  2685.  
  2686. – nadilazi mogućnosti XSLT-a – grupiranje, formatiranje
  2687. brojeva i datuma, kontrola nad prostorima naziva
  2688. – XPath je podskup jezika XQuery – XQuery je
  2689. „nadogradnja”
  2690.  
  2691. • XQuery 1.0 – preporuka W3C, 2007.
  2692. – nije se stigao toliko raširiti kao XSLT
  2693. – drugo izdanje prosinac 2010.
  2694.  
  2695. • XQuery 3.0 – radni prijedlog W3C, srpanj 2013.
  2696. – grupiranje, prebrojavanje, „outer join”, try/catch,
  2697. switch
  2698. – funkcije – dinamički poziv, inline, privatne, izjave
  2699. – izlazne deklaracije, anotacije, mapiranja …
  2700.  
  2701. – Izvedba ima 60-tak – popis
  2702. (www.w3.org/XML/Query/#implementations)
  2703.  
  2704. – RaptorXML, SAXON, MarkLogic …
  2705.  
  2706. 75
  2707.  
  2708. XQuery primjer
  2709. <imenik>
  2710. <osoba oib=“12345678901“>
  2711. <ime>Ana</ime>
  2712. <prezime>Anić</prezime>
  2713. <email>ana.anic@racunarstvo.hr</email>
  2714. <godinaRodjenja>1985</godinaRodjenja>
  2715. </osoba>
  2716. <osoba oib=“23456789012“>
  2717. <ime>Ivo</ime>
  2718. <prezime>Ivić</prezime>
  2719. <email>ivo.ivic@racunarstvo.hr</email>
  2720. <godinaRodjenja>1991</godinaRodjenja>
  2721. </osoba>
  2722. </imenik>
  2723.  
  2724. 76
  2725.  
  2726. XQuery primjer
  2727. doc(“podaci.xml“)/imenik/osoba[godinaRodjenja<1990]
  2728. <osoba oib=“12345678901“>
  2729. <ime>Ana</ime>
  2730. <prezime>Anić</prezime>
  2731. <email>ana.anic@racunarstvo.hr</email>
  2732. <godinaRodjenja>1985</godinaRodjenja>
  2733. </osoba>
  2734. doc(“podaci.xml“)/imenik/osoba[godinaRodjenja<1990]/ime
  2735. <ime>Ana</ime>
  2736. 77
  2737.  
  2738. XQuery primjer – FLWOR
  2739. doc(“podaci.xml“)/imenik/osoba[godinaRodjenja< 1990]
  2740.  
  2741. Korištenjem FLWOR (For, Let, Where, Order by, Return):
  2742.  
  2743. for $a in doc("podaci.xml")/imenik/osoba
  2744. where $a/godinaRodjenja<1990
  2745. return $a/ime
  2746.  
  2747. 78
  2748.  
  2749. Korištenje za oblikovanje
  2750. HTML
  2751. • Primjer s tablicom:
  2752. <table>
  2753. r>
  2754. {
  2755.  
  2756. <tr><th>IME</th><th>PREZIME</th></t
  2757. <tr>
  2758.  
  2759. for $a in doc("podaci.xml")/imenik/osoba
  2760. return <td>{data($a/ime)}</td>
  2761. <td>{data($a/prezime)}</td>
  2762. }
  2763. </tr>
  2764. </table>
  2765.  
  2766. 79
  2767.  
  2768. JAXB
  2769. • Arhitektura za povezivanje s XML-om JAXB
  2770. (Java Architecture for XML Binding)
  2771. – radni okvir za jednostavnu manipulaciju XML
  2772. dokumentima
  2773. • jednostavniju nego kod DOM-a
  2774.  
  2775. – stablo objekata
  2776. • čvorovi u potpunosti odgovaraju XML elementima
  2777. • sadrže atribute i sadržaj u obliku varijabli instance
  2778. • zadržavaju veze – objektno referenciranje
  2779.  
  2780. – standardan način vezivanja (binding) iz
  2781. objekata (tipova podataka) napisanih u jeziku
  2782. Java u komponente definirane XSD-om i
  2783. obrnuto
  2784. • obrada XML podataka izravno iz programskog koda
  2785. • mapiranje – serijalizacija i deserijalizacija
  2786.  
  2787. 80
  2788.  
  2789. JAXB – mapiranje
  2790. XML (XSD)  Java
  2791. XML Schema Tip
  2792. xsd:string
  2793. xsd:positiveInteger
  2794. xsd:int
  2795. xsd:long
  2796. xsd:short
  2797. xsd:decimal
  2798. xsd:float
  2799. xsd:double
  2800. xsd:boolean
  2801. xsd:byte
  2802. xsd:QName
  2803. xsd:dateTime
  2804. xsd:base64Binary
  2805. xsd:hexBinary
  2806. xsd:unsignedInt
  2807. xsd:unsignedShort
  2808. xsd:unsignedByte
  2809. xsd:unsignedLong
  2810. xsd:time
  2811. xsd:date
  2812. xsd:g
  2813. xsd:anySimpleType
  2814. xsd:anySimpleType
  2815. xsd:duration
  2816. xsd:NOTATION
  2817.  
  2818. Javin tip podatka
  2819. java.lang.String
  2820. java.math.BigInteger
  2821. int
  2822. long
  2823. short
  2824. java.math.BigDecimal
  2825. float
  2826. double
  2827. boolean
  2828. byte
  2829. javax.xml.namespace.QName
  2830. javax.xml.datatype.XMLGregorianCalendar
  2831. byte[]
  2832. byte[]
  2833. long
  2834. int
  2835. short
  2836. java.math.BigDecimal
  2837. javax.xml.datatype.XMLGregorianCalendar
  2838. javax.xml.datatype.XMLGregorianCalendar
  2839. javax.xml.datatype.XMLGregorianCalendar
  2840. java.lang.Object
  2841. java.lang.String
  2842. javax.xml.datatype.Duration
  2843. javax.xml.namespace.QName
  2844.  
  2845. Java  XML
  2846. Javina klasa
  2847.  
  2848. XML podatkovni tip
  2849.  
  2850. java.lang.String
  2851.  
  2852. xs:string
  2853.  
  2854. java.math.BigInteger
  2855.  
  2856. xs:integer
  2857.  
  2858. java.math.BigDecimal
  2859.  
  2860. xs:decimal
  2861.  
  2862. java.util.Calendar
  2863.  
  2864. xs:dateTime
  2865.  
  2866. java.util.Date
  2867.  
  2868. xs:dateTime
  2869.  
  2870. javax.xml.namespace.QName
  2871.  
  2872. xs:QName
  2873.  
  2874. java.net.URI
  2875.  
  2876. xs:string
  2877.  
  2878. javax.xml.datatype.XMLGregorianCalendar
  2879.  
  2880. xs:anySimpleType
  2881.  
  2882. javax.xml.datatype.Duration
  2883.  
  2884. xs:duration
  2885.  
  2886. java.lang.Object
  2887.  
  2888. xs:anyType
  2889.  
  2890. java.awt.Image
  2891.  
  2892. xs:base64Binary
  2893.  
  2894. javax.activation.DataHandler
  2895.  
  2896. xs:base64Binary
  2897.  
  2898. javax.xml.transform.Source
  2899.  
  2900. xs:base64Binary
  2901.  
  2902. java.util.UUID
  2903.  
  2904. xs:string
  2905.  
  2906. 81
  2907.  
  2908. JAXB – API i arhitektura
  2909. • JAXB API
  2910. – paket
  2911. javax.xml.bind
  2912. – klasa
  2913. JAXBContext
  2914. – sučelje
  2915. Unmarshaller
  2916. • deserijalizira
  2917. XML u Javu
  2918. • provodi
  2919. validaciju
  2920. dobivenog
  2921. XML-a
  2922.  
  2923. – sučelje
  2924. Marshaller
  2925.  
  2926. klase
  2927. Schema prevoditelj
  2928. XML
  2929. Schema
  2930. Schema generator
  2931. instanciranje
  2932.  
  2933. prati
  2934.  
  2935. Unmarshall
  2936. XML
  2937. dokument
  2938. Marshall
  2939. objekti
  2940.  
  2941. • serijalizacija
  2942. 82
  2943.  
  2944. OZNAČNI JEZICI
  2945. Osnove označnih jezika
  2946. Skupine, vrste i razvoj označnih jezika
  2947. Označni jezik XML
  2948. Validacija XML dokumenata
  2949. Rukovanje podacima
  2950. Poznatiji primjeri
  2951. 83
  2952.  
  2953. Poznatije primjene označnih
  2954. jezika
  2955. • Označni jezici sindikacije sadržaja (RSS i
  2956. Atom)
  2957. • Jezik elektroničkog poslovanja ebXML
  2958. • Univerzalni poslovni jezik UBL
  2959. • Norma GS1 XML
  2960. • Oblici zapisa poslovnih dokumenata
  2961. – OpenDocument Format (ODF)
  2962. – Office Open XML (OOXML )
  2963. • Elektronički obrazac platnog naloga eHUB
  2964. • Elektronički račun e-Račun
  2965. poglavlje 4.2
  2966. 84
  2967.  
  2968. Označni jezici sindikacije sadržaja
  2969. (RSS i Atom)
  2970.  
  2971. RSS najčešće znači „stvarno jednostavnu sindikaciju“ (Really Simple
  2972. Syndication)
  2973. – normirani oblik zapisa koji se koristi za objavu novih sadržaja
  2974. kod često osvježavanih izvora informacija
  2975. • kao što su blogovi, vijesti i drugi sadržaji
  2976.  
  2977.  
  2978. – RSS dokument često se naziva „punjenjem“, „hranom“ (feed),
  2979. „web feedom“ ili RSS kanalom
  2980. – sadržava sažetak određenog teksta koji se želi objaviti zajedno s
  2981. metapodacima, najčešće uključujući i podatke o autoru
  2982. Osnovna ideja – korisnik želi pratiti određenu temu, autora, novine
  2983. ili internetske stranice
  2984. – koristi softver nazvan čitač RSS-a (RSS reader), agregator ili čitač
  2985. feeda
  2986. – pretplaćuje se na određeni kanal
  2987. • u čitač unese adresu kanala u obliku URI
  2988. • najčešće jednostavnim klikom na ikonu RSS sadržaja u pregledniku
  2989. • čitač provjerava pretplate u određenim vremenskim intervalima za nove
  2990. nepročitane sadržaje
  2991. • ako ih pronađe, preuzima ih i prikazuje korisniku u određenom obliku
  2992.  
  2993. 85
  2994.  
  2995. ————————
  2996.  
  2997. USLUGE
  2998.  
  2999. Interoperabilnost
  3000. informacijskih
  3001. sustava
  3002. Aleksander Radovan
  3003.  
  3004. USLUGE
  3005. Uvod i definicije, stanja usluga
  3006. Arhitekture raspodijeljenih sustava
  3007. Interoperabilnost usluga
  3008. Međuoprema i komunikacija porukama
  3009.  
  3010. 2
  3011.  
  3012. Usluga
  3013. • Usluga kao pojam – u širokoj primjeni
  3014. • Što je za vas usluga?
  3015. • Usluga u gospodarstvu
  3016. – nematerijalni oblik nekog dobra
  3017.  
  3018. • neopipljiva, ne može rezultirati vlasništvom
  3019.  
  3020. – izvršava se kada jedna strana izvodi posao
  3021. (ili neku funkciju) za drugu stranu
  3022. • Usluga u računarstvu
  3023. – “mehanizam koji omogućava pristup do
  3024. jedne ili više mogućnosti, pri čemu je pristup
  3025. osiguran putem opisanog sučelja i dosljedno
  3026. primijenjen s ograničenjima i politikama
  3027. koje su opisane u opisu same usluge”
  3028.  
  3029. prema OASIS-u
  3030. (Organization for the Advancement of Structured Information
  3031. Standards)
  3032.  
  3033. 3
  3034.  
  3035. Usluga u računarstvu
  3036. • Programsko inženjerstvo zasnovano na
  3037. komponentama CBSE (Component-based
  3038. Software Engineering)
  3039. – grana programskog inženjerstva,
  3040. metodologija
  3041. • Razlika komponente i usluge:
  3042. – ovisi o točki promatranja
  3043. – komponenta – dio programskog koda
  3044. unutar cjeline
  3045. • koristi se kao takav, nema modifikacija
  3046. • nema utjecaja od proizvođača komponente
  3047.  
  3048. – usluga – dostupna „izvana”, neovisna
  3049. • sinkroni ili asinkroni pristup
  3050.  
  3051. 4
  3052.  
  3053. Komponente i njihova sučelja
  3054. • Definicija komponente:
  3055. – (softverska) komponenta je ponovno
  3056. iskoristivi dio programske podrške
  3057. (softvera)
  3058. – može prilagođavati, ali ne i mijenjati
  3059. • prilagodbe – korištenje s drugim
  3060. komponentama
  3061. • modifikacija – nije moguća, nema izvornog
  3062. koda
  3063.  
  3064. • Sučelja svake komponente su poznata
  3065. • no od korisnika sakriveni detalji izvedbe
  3066. 5
  3067.  
  3068. Stanja usluga
  3069. • Stanje – situacija u kojoj se nalazi
  3070. promatrani objekt
  3071. • Računalni program:
  3072. – aktivno stanje
  3073.  
  3074. • neka obrada, izvedba metoda, povrat rezultata
  3075. • aktivno se stanje često detaljnije raščlanjuje
  3076.  
  3077. – pasivno stanje
  3078.  
  3079. • znači „ne koristi se”
  3080. • isključeno ili na čekanju (u stanju pripravnosti)
  3081.  
  3082. • Kako opisati stanja?
  3083. – dijagrami stanja (state diagram) – npr.
  3084. UML
  3085. • Programi mogu, ali ne moraju biti svjesni
  3086. svog stanja
  3087.  
  3088. 6
  3089.  
  3090. Stanja usluga
  3091. • Stateless ili nesvjesni stanja
  3092. – programi nisu svjesni stanja u kojem se
  3093. nalaze
  3094. • Statefull ili svjesni stanja
  3095. – programi su svjesni stanja u kojem se nalaze
  3096. • Usluge:
  3097. – moraju biti dostupne i proširive
  3098. – očuvanje informacije o stanju traži mnoge
  3099. provjere i zauzima resurse (npr. memoriju)
  3100. • košta, usporava …
  3101.  
  3102. – usluge su zato najčešće stateless
  3103.  
  3104. • iznimno usluga može biti i statefull
  3105.  
  3106. – najčešće kada čeka informacije druge usluge za svoj
  3107. rad
  3108.  
  3109. 7
  3110.  
  3111. Stanja usluge – ulančavanje
  3112.  
  3113. Primjer: usluga kupnje proizvoda u Web trgovini –
  3114.  
  3115. koraci:
  3116. 1. Autentikacija kupca
  3117. 2. Odabir proizvoda
  3118. 3. Plaćanje
  3119. • Pitanje statefull ili stateless? – zapravo niz pitanja:
  3120. – gdje zapisati informacije o stanju (memorija, uz
  3121. rezultat)?
  3122. – korištenje uvijek iste podusluge?
  3123. – raspoloživost?
  3124. – veliki broj korisnika?
  3125. – kašnjenje?
  3126. – nedostupnost (kvar), osjetljivost na pogrešku?
  3127. – raspodijeljenost?
  3128.  
  3129. 8
  3130.  
  3131. Stanja usluge – statefull
  3132. • Usluge svjesne stanja – statefull:
  3133. – prati stanje svakog procesa
  3134. – informacija se zapisuje – u neku memoriju
  3135. – osigurava se nastavak procesa
  3136. – korisnik se može vratiti točno na poduslugu
  3137. koju je koristio u prošlom koraku
  3138. • Problemi
  3139. – u slučaju velikog broja korisnika
  3140. • zagušenje, kašnjenje …
  3141.  
  3142. – u slučaju kvara ili nedostupnosti
  3143.  
  3144. 9
  3145.  
  3146. Stanja usluge – stateless
  3147. • Usluge nesvjesne stanja – stateless:
  3148. – nakon izvršavanja pojedinog koraka,
  3149. korisnik dobiva:
  3150.  
  3151. (među)rezultat
  3152. dovoljnu informaciju o stanju
  3153. ugrađen mehanizam raspodijeljenosti
  3154. povećana raspoloživost
  3155. smanjena osjetljivost na pogreške
  3156.  
  3157. • No, stanje se ipak negdje pohranjuje
  3158. – najčešće u memoriju ili relacijsku bazu na
  3159. poslužitelju
  3160. • Korisnik i usluga razmjenjuju samo
  3161. identifikator
  3162. – pokazivač na pohranjene podatke
  3163. 10
  3164.  
  3165. Preduvjeti moderne usluge
  3166. • Usluge raspodijeljenih sustava
  3167. • Osnovni zahtjevi:
  3168. – dostupnost
  3169. – pouzdanost
  3170. • Komunikacijski preduvjeti:
  3171. – protokoli – HTTP, HTTPS …
  3172. – resursi – URL, URI, URN, MIME …
  3173.  
  3174. 11
  3175.  
  3176. Protokol HTTP
  3177.  
  3178. HyperText Transfer Protocol – HTTP
  3179. – najrašireniji i najpoznatiji komunikacijski protokol
  3180. aplikacijskog sloja
  3181. Verzije:
  3182. – HTTP 0.9 - 1991., kasnije u RFC 1945, jednostavan
  3183. – HTTP 1.0 - 1996. RFC 1945, široko korištena inačica
  3184. – HTTP 1.1 - 1997. dogradnja 1.0. RFC 2068, 1999. RFC
  3185. 2616
  3186.  
  3187. • kontrola veze, caching, sigurnost, adresiranje, kontrola
  3188. greške ...
  3189.  
  3190.  
  3191. Zapravo prenosi bilo kakve resurse (ne samo hypertext)
  3192. – datoteke (file), podatke o datoteci (meta-data), odsječak
  3193. (chunk), podatke zahtjeva (query information),
  3194. višedijelne podatke (multipart data), rezultate obrade
  3195. (processing result)
  3196. – praktički sve što se može nekako nazvati ili imenovati
  3197.  
  3198. 12
  3199.  
  3200. Karakteristike HTTP
  3201. • Protokol tipa zahtjev/odgovor (request –
  3202. response)
  3203. – poslužitelj stalno osluškuje zahtjeve klijenata
  3204. – koristi standardni priključak, vrata (port) 80
  3205. ili 8080
  3206. – uspostavlja se TCP veza (pouzdan prijenos)
  3207. – klijent šalje zahtjev (poruku) poslužitelju i
  3208. očekuje odgovor (poruku)
  3209. • HTTP je protokol bez očuvanja stanja -
  3210.  
  3211. stateless
  3212.  
  3213. – poslužitelj ne čuva stanje između dvije
  3214. konverzacije
  3215. 13
  3216.  
  3217. HTTP poruke
  3218. • 1 zahtjev i 1 odgovor = 1 konverzacija
  3219. – u poruci zahtjeva su sve informacije za
  3220. ispunjenje zahtjeva
  3221. – konverzacija završava odgovorom,
  3222. odnosno ispunjenjem zahtjeva
  3223. • Dijelovi HTTP tekstualne poruke:
  3224. – upravljački dio poruke – početni redak
  3225. i zaglavlja
  3226. • čitljivo i ljudima
  3227.  
  3228. – tijelo poruke – sadržaj poruke
  3229. • može i ne mora biti čitljivo ljudima
  3230. 14
  3231.  
  3232. Struktura HTTP poruka
  3233. • Početni redak (start-line)
  3234. – zahtjev – oblik: metoda URI verzijaHTTP CRLF
  3235. • npr. GET /iis.html HTTP/1.1
  3236.  
  3237. – odgovor – oblik: verzija-HTTP
  3238. statusni-kod razlog CRLF
  3239. • npr. HTTP/1.1 404 Not Found
  3240.  
  3241. • Zaglavlja (message-headers)
  3242. – različita, ovise o poruci – oblik:
  3243. ime:vrijednost
  3244. • Tijelo poruke (message-body)
  3245. – resurs/i (kodirani)
  3246. 15
  3247.  
  3248. Metode HTTP
  3249. • GET – vraća sadržaj resursa
  3250. • POST – šalje dodatne podatke
  3251. – objava poruke, blok, skup podataka
  3252. • HEAD – vraća opis (meta podatke) resursa
  3253.  
  3254. dodatno u HTTP 1.1
  3255.  
  3256. • PUT – slanje novog resursa na poslužitelj
  3257. • DELETE, OPTIONS, TRACE, CONNECT
  3258. – nisu izvedene u svim poslužiteljima
  3259. • Prema potrebi mogu se definirati i dodatne
  3260. metode
  3261. – bez narušavanja postojeće infrastrukture
  3262. – npr. WebDAV definira još 7 metoda
  3263. – npr. RFC5789 definira metodu PATCH
  3264. 16
  3265.  
  3266. Sigurne i nesigurne metode
  3267.  
  3268.  
  3269.  
  3270. Sigurne metode (safe methods)
  3271. – ne mijenjaju stanje poslužitelja
  3272. – služe isključivo za dohvat podataka
  3273. – metode GET, HEAD, OPTIONS i TRACE
  3274. – nemaju neželjenih posljedica u obliku izvođenja akcija na
  3275. poslužitelju, osim relativno bezopasnih poput logiranja,
  3276. predmemoriranja i sličnih.
  3277. Nesigurne metode (unsafe methods)
  3278. – namijenjene za izvođenje određenih akcija na poslužitelju u
  3279. smislu promjene stanja poslužitelja, najčešće promjenom
  3280. podataka u nekom obliku transakcije.
  3281. – metode POST, PUT i DELETE
  3282. U praksi je moguće da se dohvatom resursa (GET) pokreću i neke
  3283. akcije (neželjene) na poslužitelju
  3284. – pokušava se umanjiti propisivanjem dobrih praksi izvedbe
  3285. odgovora na zahtjev koje ne uključuju takve akcije
  3286. – automatski agenti za predmemoriranje ili pretraživanje stranica
  3287. ne smiju mijenjati stanje na poslužitelju (loša praksa)
  3288.  
  3289. 17
  3290.  
  3291. Protokol HTTP – koraci
  3292. 1.
  3293. 2.
  3294. 3.
  3295. 4.
  3296. 5.
  3297. 6.
  3298. 7.
  3299. 8.
  3300.  
  3301. Korisnik unosi URL
  3302. Stvara se nit za obradu
  3303. Zahtjeva se otvaranje
  3304. stranice
  3305. Traži se IP adresa
  3306. poslužitelja
  3307. Otvara se TCP
  3308. konekcija prema
  3309. poslužitelju
  3310. Nakon trostrukog
  3311. rukovanja (handshake)
  3312. uspostavlja se veza
  3313. Šalje se HTTP_GET
  3314. zahtjev
  3315. Dobiva se odgovor
  3316. (npr. kod 200 i tražena
  3317. stranica)
  3318.  
  3319. 18
  3320.  
  3321. Protokol HTTP - zahtjev
  3322. HTTP zahtjev
  3323. GET /index.html HTTP/1.1
  3324. User Agent: Mozilla/4.0
  3325. (compatible; MSIE 8.0;
  3326. Windows NT 6.0; WOW64;
  3327. Trident/4.0; SLCC1; .NET
  3328. CLR 2.0.50727; Media Center
  3329. PC 5.0; InfoPath.2; .NET
  3330. CLR 3.5.30729; .NET CLR
  3331. 1.1.4322; .NET CLR
  3332. 3.0.30729;
  3333. Host: www.usluga.org
  3334.  
  3335. Strukturni dio
  3336. Početni redak
  3337.  
  3338. Objašnjenje
  3339. Pristupna metoda, put i verzija
  3340. protokola kojim se želi pristupiti
  3341.  
  3342. Identifikator pretraživača koji se
  3343. koristi
  3344.  
  3345. Zaglavlje
  3346. Adresa poslužitelja kojem je
  3347. zahtjev namijenjen
  3348.  
  3349. Accept: image/gif, image/xxbitmap, image/jpeg,
  3350. image/pjpeg, image/png, */*
  3351. Accept-Encoding: gzip
  3352. Accept-Language: en
  3353. Accept-Charset: iso-88591,*,utf-8
  3354.  
  3355. Informacija o tipu podataka koje
  3356. klijent može primiti
  3357.  
  3358. Prazni redak
  3359.  
  3360. 19
  3361.  
  3362. HTTP odgovor
  3363. HTTP zahtjev
  3364. HTTP/1.1 200 OK
  3365. Date: Thu, 09 Aug 2013
  3366. 12:23:29 GMT
  3367. Server: Apache/2.2
  3368. Last-Modified: Mon, 04 Aug
  3369. 2013 09:33:15 GMT
  3370. Accept-Ranges: bytes
  3371. Content-Length: 884
  3372. Content-Type: text/html
  3373.  
  3374. Strukturni
  3375. dio
  3376. Početni
  3377. redak
  3378.  
  3379. Objašnjenje
  3380. Verzija protokola, statusni kod i
  3381. objašnjenje
  3382. Datum obrade zahtjeva i verzija
  3383. poslužiteljskog softvera
  3384.  
  3385. Zaglavlje
  3386.  
  3387. Datum zadnje promjene traženog
  3388. dokumenta
  3389. Metapodaci o samom odgovoru
  3390.  
  3391. Prazni redak
  3392. <!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 3.2
  3393. Final//EN">[...]
  3394.  
  3395. Tijelo
  3396. poruke
  3397.  
  3398. Sadržaj odgovora je primjerice
  3399. HTML dokument
  3400.  
  3401. 20
  3402.  
  3403. Zaglavlje
  3404. • Connection – kontrola veze
  3405. • Host – obavezno ime poslužitelja
  3406. – podrška za proxy i virtual host
  3407. • Content-Type – oznaka MIME tipa poruke
  3408. • Content-Length – oznaka duljine sadržaja
  3409. poruke
  3410. • Content-Range – oznaka dijela resursa
  3411. • Accept-Language – popis jezika koje klijent
  3412. prihvaća
  3413. • User-Agent – vrsta klijenta
  3414. • Date – datum
  3415. • Nestandardna zaglavlja: prefiks X• Nepoznata zaglavlja se zanemaruju
  3416. 21
  3417.  
  3418. HTTP kodovi
  3419.  
  3420.  
  3421. HTTP statusni kodovi – u rasponu 100-599
  3422. – rezultat obrade zahtjeva
  3423. 1xx: informativni (Informational) – zahtjev primljen, nastavak rada
  3424. 2xx: uspjeh (Success) – zahtjev je primljen, protumačen i prihvaćen
  3425. – 200 OK – zahtjev uspio i preglednik će dobiti traženu stranicu u
  3426. nastavku odgovora
  3427. 3xx: preusmjeravanje (Redirect) – akcija preusmjeravanja
  3428. 4xx: greška klijenta (Client Error) – zahtjev nije ispravan ili
  3429. neispunjiv
  3430. – 400 Bad Request – zahtjev ne može biti ispunjen zbog
  3431. pogrešne sintakse
  3432. – 401 Unauthorized – neautorizirani pristup, odgovor mora
  3433. uključiti zaglavlje autentikacije
  3434. – 403 Forbidden – iako je zahtjev valjan, poslužitelj odbija
  3435. odgovoriti, problem autorizacije
  3436. – 404 Not Found – traženi resurs (npr. stranicu) poslužitelj nije
  3437. pronašao
  3438. 5xx: greška poslužitelja (Server Error) – poslužitelj nije uspio
  3439. ispuniti zahtjev
  3440. – 500 Internal Server Error – generička poruka greške na
  3441. poslužitelju, neočekivano stanje poslužitelja
  3442. • često kod dinamičkih stranica, odnosno aplikacija Weba
  3443. 22
  3444.  
  3445. Uniform Resource Identifiers
  3446. • Universal Resource Identifiers in WWW, RFC
  3447. 1630
  3448. – Tim Berners-Lee, 1994.
  3449. – definira URI i formalizira njegovu sintaksu
  3450. – dopunjuje definicije URL i URN
  3451. • “Usklađeni identifikator resursa URI (Uniform
  3452. Resource Identifier) je kompaktan niz znakova
  3453. koji identificiraju apstraktni ili fizički resurs”
  3454. – niz znakova iz ograničenog skupa znakova
  3455. – u različitim oblicima
  3456. – jedinstveno razlikovanje resursa
  3457. – važna je identifikacija i lokacija, a ne
  3458. dostupnost (mogućnost dohvata)
  3459.  
  3460. 23
  3461.  
  3462. Uniform Resource Identificator –
  3463. URI
  3464. • URI pretpostavlja da svaki resurs može
  3465. biti identificiran:
  3466. – putem lokacije – URL
  3467. – putem imena – URN
  3468. – korištenje oba kriterija
  3469.  
  3470. Primjeri:
  3471.  
  3472. file://D:/knjiga/racunarstvo/IIS.txt
  3473. ftp://ftp.racunarstvo.hr/iis/IIS.txt
  3474. http://www.racunarstvo.hr/iis/iis.html
  3475. mailto:aleksander.radovan@racunarstvo.hr
  3476. news:hr.racunarstvo.iis
  3477. tel:+385-1-555-5555
  3478. telnet://192.168.0.1:80/
  3479.  
  3480. 24
  3481.  
  3482. Komponente URI
  3483. http://www.racunarstvo.hr:80/iis/nekiput?resu
  3484. rs=iis#url
  3485.  
  3486. • Pet osnovnih komponenata:
  3487. – shema (schema)
  3488. npr. http
  3489. – autoritet (authority)
  3490. npr.
  3491. www.racunarstvo.hr:80
  3492. – put (path)
  3493. npr. iis/nekiput
  3494. – upit (query)
  3495. npr. resurs=iis
  3496. – fragment (fragment)
  3497. npr. url
  3498. • URI se mora se sastojati barem od sheme i
  3499. (praznog) puta
  3500. 25
  3501.  
  3502. Usklađeni naziv resursa URN
  3503. • Usklađeni naziv resursa URN (Uniform Resource
  3504. Name)
  3505. – podskup URI
  3506.  
  3507. – naziv resursa u nekoj domeni – prostoru naziva
  3508. – garantira jedinstvenost i trajnost identifikacije
  3509. – oblik zapisa
  3510.  
  3511. <URN> ::= "urn:" <NID> ":" <NSS>
  3512. – NID – prostor naziva(namespace identifier)
  3513. – NSS – specifičan znakovni niz (namespace specific string)
  3514.  
  3515. – Primjeri:
  3516.  
  3517. urn:isbn:0-395-36341-1
  3518. urn:ietf:rfc:3187
  3519. urn:isan:0000-0000-9E59-0000-O-0000-0000-2
  3520. <xsd:schema
  3521. xmlns="http://www.w3.org/2001/XMLSchema"
  3522. xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  3523. targetNamespace="urn:example">
  3524. 26
  3525.  
  3526. Usklađeni lokator resursa URL
  3527.  
  3528. Usklađeni lokator resursa URL (Uniform Resource
  3529. Locator)
  3530. – najčešće korišteni podskup URI
  3531. – lokacija resursa, ali i način pristupa
  3532. – ne garantira jedinstvenost i trajnost resursa
  3533. • isti resurs može biti na više lokacija ili premješten
  3534.  
  3535. – različiti pristupni protokoli
  3536. – Primjeri:
  3537.  
  3538. • http://www.racunarstvo.hr/iis/iis.html
  3539. • ftp://ftp.racunarstvo.hr
  3540.  
  3541.  
  3542. URI Reference
  3543. – može sadržavati cijeli URI ili neki shemom
  3544. definirani dio
  3545. • moguće je čak koristiti i prazan znakovni niz!
  3546.  
  3547. – koristi se posebni identifikator, #
  3548.  
  3549. • sidro (anchor) u jeziku HTML <a href="#URI">
  3550.  
  3551. 27
  3552.  
  3553. URI, URL – znakovi
  3554. • Ograničeni skup znakova
  3555. – mala i velika slova, brojke, neki posebni
  3556. znakovi
  3557. • Rezervirani (zabranjeni) znakovi
  3558. – :/?#[]@!$&'()*+,;=
  3559. – primjeri:
  3560.  
  3561. • http://www.racunarstvo.hr/iis/iis.html
  3562. • mailto:aleksander.radovan@racunarstvo.hr
  3563.  
  3564. • Kako koristiti "zabranjene" znakove?
  3565. – oblik %HH – H je heksadekadska znamenka
  3566. – primjeri:
  3567.  
  3568. • %20 je praznina (ASCII 0x20)
  3569. • %25 predstavlja znak "%"
  3570. • http://www.racunarstvo.hr/interoperabilnost%20i
  3571. nformacijskih%20sustava.html
  3572.  
  3573. 28
  3574.  
  3575. Višenamjensko proširenje elektroničkih
  3576. poruka na Internetu MIME
  3577. • Višenamjensko proširenje elektroničkih poruka na
  3578. Internetu MIME (Multipurpose Internet Mail
  3579. Extension)
  3580. – protokol zamišljen kao proširenje e-pošte (email)
  3581. – prerastao e-poštu, prihvaćen u drugim
  3582. protokolima (HTTP)
  3583. • Proširenje poruka elektroničke pošte
  3584. – druga kodiranja (kodne stranice) teksta osim 7bitnog ASCII
  3585. – privici u drugim oblicima (osim teksta ) – slike,
  3586. dokumenti
  3587. – višedijelne (multi-part) poruke
  3588. – podaci u zaglavlju poruke (npr. naslov) u
  3589. drugim kodnim stranicama
  3590. 29
  3591.  
  3592. Oznake MIME tipa
  3593. • Normirana struktura tipova podataka – oznaka
  3594. tip/podtip (type/subtype)
  3595. – application – razni aplikacijski podaci
  3596. • npr. /javascript, /octet-stream, /xhtml+xml, /zip
  3597.  
  3598. – audio – zvučne datoteke
  3599. • npr. /mpeg
  3600.  
  3601. – image – slike
  3602.  
  3603. • npr. /gif, /jpeg, /png
  3604.  
  3605. – text – tekstualni podaci
  3606. • npr. /html, /plain
  3607.  
  3608. • Podrška nenormiranim tipovima – počinje s x• Podrška tipovima pod kontrolom proizvođača –
  3609. vnd
  3610.  
  3611. 30
  3612.  
  3613. Korištenje oznaka tipa i
  3614. kodiranja
  3615.  
  3616. Oznaka da je poruka oblikovana korištenjem MIME
  3617. – MIME-Version: 1.0
  3618. Oznaka tipa resursa u zaglavlju poruke
  3619. – npr. Content-type: text/plain
  3620. Višedijelne poruke (multipart) stablasta struktura
  3621. – označena tipom multipart/mixed
  3622. – svaki dio poruke dodatno zaglavlje tipa
  3623. Kodiranje riječi (encoded-word) zaglavlja
  3624. – oblik: =?kodna stranica?kodiranje?kodirani
  3625. tekst?=
  3626.  
  3627. • npr. Računarstvo je =?utf-8?Q?Ra=C4=8Dunarstvo?=
  3628.  
  3629.  
  3630. Kodiranje teksta poruke
  3631. – quoted printable – svaki znak koji nije ASCII (printable)
  3632. znak kodira se s =HH
  3633. – base64 – znakovi u grupama s 6 binarnih znamenaka
  3634.  
  3635. • svaka grupa zamjenjuje se znakom A do Z, a do z, 0 do 9, + i /
  3636. • dulje linije (76 znakova) prekinute znakom =
  3637.  
  3638. 31
  3639.  
  3640. USLUGE
  3641. Uvod i definicije, stanja usluga
  3642. Arhitekture raspodijeljenih sustava
  3643. Interoperabilnost usluga
  3644. Međuoprema i komunikacija porukama
  3645.  
  3646. 32
  3647.  
  3648. Raspodijeljeni sustavi
  3649. • Definicija raspodijeljenog sustava (distributed
  3650. system):
  3651. – sustav čiji se hardverski ili softverski
  3652. dijelovi nalaze na različitim čvorovima
  3653. (poslužitelj) u mreži, a međusobno
  3654. razmjenjuju poruke kako bi obavili
  3655. povjereni im posao
  3656. • Nužan uvjet:
  3657. – spoj na mrežu
  3658. • Dodatni uvjeti:
  3659. – koordinacija vremena
  3660. – smanjivanje osjetljivosti na pogreške
  3661. – pouzdanost, sigurnost …
  3662.  
  3663. 33
  3664.  
  3665. Raspodijeljeni sustavi
  3666. • Sustav je raspodijeljen, ali ga korisnici moraju
  3667. doživjeti kao jedinstven
  3668. • Primjer – raspodijeljeni sustav Weba neke
  3669. velike kompanije (npr. Google, Amazon i sl.)
  3670. – velik broj poslužitelja, zemljopisno
  3671. raspodijeljeni
  3672. – putem jedinstvene adrese korisnik pristupa
  3673. najbližem
  3674. – balansiranje opterećenja
  3675. – transparentno za korisnika – ne zna čemu
  3676. pristupa
  3677. • A koje su arhitekture (moguće, postojeće,
  3678. najčešće)?
  3679. 34
  3680.  
  3681. Arhitektura klijent-poslužitelj
  3682. • Arhitektura klijent-poslužitelj (clientserver)
  3683. – jedna od prvih arhitektura
  3684. raspodijeljenih sustava
  3685. • Začetak:
  3686. – udaljeni pristup, putem terminala
  3687. – pristup putem telefonske linije, zatim i
  3688. LAN
  3689. – pristup na mainframe računalo
  3690. • Povećanje broja korisnika – posljedice:
  3691. – raspodijeljeni podaci
  3692. – raspodijeljena memorija
  3693. 35
  3694.  
  3695. Arhitektura klijent-poslužitelj
  3696. • Aplikacija na klijentu se spaja na
  3697. poslužitelj
  3698. • Poslužitelj osluškuje i prihvaća zahtjeve
  3699. klijenata, obrađuje ih i vraća im
  3700. rezultate
  3701. Klijent
  3702.  
  3703. Poslužitelj
  3704.  
  3705. Klijent
  3706.  
  3707. • Poslužitelji mogu biti klijenti drugim
  3708. poslužiteljima
  3709.  
  3710. Poslužitelj
  3711.  
  3712. 36
  3713.  
  3714. Arhitektura klijent-poslužitelj
  3715.  
  3716. Većina današnjih poslužitelja Weba
  3717. – platforma LAMP (Linux , Apache , MySQL ,
  3718. Perl /PHP /Phyton)
  3719. – sustav za upravljanje sadržajem (CMS, Content
  3720. Management System)
  3721. – često baza podataka na zasebnom poslužitelju
  3722. • smanjuje opterećenje
  3723.  
  3724.  
  3725. Klijent nije svjestan broja ni rasporeda poslužitelja
  3726. – samo zahtijeva ispravan, brz i nesmetan prikaz
  3727. informacija
  3728. Tendencija smanjivanja procesa na strani klijenta
  3729. – tanki klijent (thin client) koji brine samo o
  3730. grafičkoj prezentaciji
  3731. – povećana robusnost sustava i troškovi na strani
  3732. poslužitelja
  3733. – povećana ovisnost o mrežnoj komunikaciji
  3734.  
  3735. 37
  3736.  
  3737. Slojevitost
  3738. • Tradicionalne aplikacije
  3739. – monolitne, unutar jednog procesnog bloka
  3740. – moguće funkcionalno ili „idejno” raslojavanje
  3741. • biblioteke i sl.
  3742.  
  3743. – zajednički izvršni kôd aplikacije
  3744. – potencijalno višeprocesno – preteča
  3745. raspodijeljenosti
  3746. • Moderne aplikacije
  3747. – načelno višeslojne
  3748. – u sloju zasebni, logički izdvojeni dijelovi
  3749. – najpoznatiji primjer – troslojne aplikacije
  3750. • podjela na prezentacijski, aplikacijski i
  3751. podatkovni sloj
  3752.  
  3753. 38
  3754.  
  3755. Troslojni model –
  3756. prezentacijski sloj
  3757. • Prezentacijski sloj (presentation
  3758. layer)
  3759. – na vrhu troslojne arhitekture
  3760. – grafički predočuje podatke
  3761. korisniku – GUI
  3762. – prihvaća zahtjeve korisnika
  3763. – transformacija podataka i
  3764. komunikacija prema ostalim
  3765. slojevima
  3766. – prevođenje rezultata u oblik
  3767. razumljiv korisniku
  3768. 39
  3769.  
  3770. Troslojni model – aplikacijski
  3771. sloj
  3772. • Aplikacijski sloj (application layer):
  3773. – često se naziva sloj poslovne logike,
  3774. "srž" aplikacije
  3775. – izvode se poslovni procesi
  3776. – prima podatke (i akcije) iz
  3777. prezentacijskog sloja
  3778. – dohvaća podatke iz podatkovnog sloja
  3779. – obrađuje ih
  3780. – vraća rezultate u podatkovni sloj
  3781. • kao posljedicu obrade
  3782.  
  3783. – vraća rezultate u prezentacijski sloj
  3784. • za prezentaciju korisniku
  3785.  
  3786. 40
  3787.  
  3788. Troslojni model
  3789. • Podatkovni sloj (data layer):
  3790. – izdvojen kako bi se omogućilo da više
  3791. različitih aplikacija koristi iste podatke
  3792. – povećanje performansi
  3793. – skalabilnost sustava
  3794. • Jesu li tri sloja bila dovoljna?
  3795. • Rješenje
  3796. – višeslojne arhitekture
  3797. – bliskije konceptima sustava zasnovanih
  3798. na uslugama
  3799. – slojevi sjednice, autorizacije i sl.
  3800. 41
  3801.  
  3802. Interoperabilnost višeslojnih
  3803. arhitektura
  3804. • Daljnje raslojavanje
  3805. – još veći broj slojeva
  3806. • Enterprise okruženja
  3807. – Java EE, .NET ...
  3808. • Vodeći računa o
  3809. interoperabilnosti
  3810.  
  3811. 42
  3812.  
  3813. Model višeslojne arhitekture
  3814. • Klijentski sloj (client tier) ili
  3815. prezentacijski sloj na klijentu
  3816. – tanki klijent (thin application
  3817. client)
  3818.  
  3819. • nekad terminal, danas preglednik
  3820. • iscrtavanje GUI, skriptni jezici
  3821. • prezentacijska logika
  3822.  
  3823. – debeli klijent (thick client, fat
  3824. client) ili bogati aplikacijski klijent
  3825. (rich application client)
  3826. • samostalna aplikacija, računala veće
  3827. snage
  3828. • "bogati" GUI
  3829.  
  3830. – pametni klijent (smart client)
  3831.  
  3832. • kombinacija "bogatog" i tankog
  3833. klijenta
  3834. • najbolje od oba pristupa, bez
  3835. preglednika
  3836. 43
  3837.  
  3838. Model višeslojne arhitekture
  3839. • Prezentacijski sloj na poslužitelju
  3840. (server presentation layer)
  3841. – prikaz korisničkog sučelja
  3842. – prihvaća interakcije od korisnika
  3843. – upravlja grafičkim
  3844. prezentacijama
  3845. – transformacije podataka
  3846. • jezik, oblici i sl.
  3847.  
  3848. – validacije, ispravci
  3849. – pozivi metoda poslovne logike
  3850. – često se koristi kod tankih
  3851. klijenata
  3852. 44
  3853.  
  3854. Model višeslojne arhitekture
  3855. • Sloj poslovne logike (business
  3856. logic tier)
  3857. – izvođenje poslovnih procesa
  3858. – često u podslojevima
  3859. • sloj za primanje i pružanje
  3860. podataka za prezentaciju
  3861. • sloj poslovne logike
  3862. • sloj za primanje i pružanje
  3863. podataka sloju pristupa
  3864. podacima
  3865.  
  3866. 45
  3867.  
  3868. Model višeslojne arhitekture
  3869. • Sloj pristupa podacima (data
  3870. access tier)
  3871. – apstrakcija prikaza podataka
  3872. – prima i šalje podatkovnom
  3873. sloju
  3874. – najčešće objektni prikaz
  3875. • Često ORM – objektnorelacijsko mapiranje podataka
  3876. • objektni oblik podataka iz
  3877. relacijske baze podataka
  3878. 46
  3879.  
  3880. Model višeslojne arhitekture
  3881. • Sloj podataka (data tier, data
  3882. layer)
  3883. – pohranjuje podatke
  3884. – upravlja podacima
  3885. – na fizičkoj i logičkoj razini
  3886. – često relacijske baze podataka
  3887. – izvori:
  3888. • DBMS, CMS, DMS, skladišta
  3889. podataka (data warehouse),
  3890. NoSQL baze, objektne baze,
  3891. XML baze ...
  3892. 47
  3893.  
  3894. Interoperabilnost klijentskog
  3895. sloja
  3896. • Jako ovisi o vrsti klijenta
  3897. • Mogućnosti:
  3898. – prema drugom klijentskom sloju
  3899. – prema prezentacijskom sloj
  3900. – prema sloju poslovne logike
  3901. – prema sloju pristupa podacima
  3902.  
  3903. 48
  3904.  
  3905. Interoperabilnost klijentskih
  3906. slojeva
  3907.  
  3908. 49
  3909.  
  3910. Interoperabilnost klijentskih
  3911. slojeva
  3912. • Interoperabilnost dvaju klijenata
  3913. – nije uobičajena, ali moguća
  3914. • kod tankih klijenata čak nije ni vjerojatna!
  3915.  
  3916. – debeli klijent može eksponirati neke
  3917. svoje funkcionalnosti
  3918. – odnos tankog i debelog klijenta:
  3919. • korištenjem HTTP-a tanki klijent koristi
  3920. funkcionalnosti dostupne na debelom
  3921. klijentu
  3922.  
  3923. – debeli klijenti – JavaFX, .Net, Swing, AWT
  3924. ...
  3925. • debeli klijent zamjenjuje prezentacijski sloj
  3926.  
  3927. 50
  3928.  
  3929. Interoperabilnost klijentskog sloja
  3930. prema prezentacijskom sloju
  3931.  
  3932. 51
  3933.  
  3934. Interoperabilnost klijentskog sloja
  3935. prema prezentacijskom sloju
  3936. • Interoperabilnost klijentskog sloja i
  3937. prezentacijskog sloja
  3938. – vjerojatnija mogućnost
  3939. – primjeri:
  3940. • aplikacija u jeziku Java (tanki klijent,
  3941. applet, debeli klijent JavaFX, Swing,
  3942. AWT) komunicira s .NET aplikacijom
  3943. (npr. ASP.NET artefaktom i sl.)
  3944. • debeli klijent (.NET aplikacija, Windows
  3945. Forms …) komunicira s Java
  3946. aplikacijom (aplikacija, Servlet, JSP …)
  3947. 52
  3948.  
  3949. Interoperabilnost klijentskog sloja
  3950. prema sloju poslovne logike
  3951.  
  3952. 53
  3953.  
  3954. Interoperabilnost klijentskog sloja
  3955. prema sloju poslovne logike
  3956.  
  3957. Interoperabilnost klijentskog sloja prema sloju poslovne
  3958. logike
  3959. – „odustajanje” od prezentacijskog sloja – kada je
  3960. integriran u klijentskom sloju
  3961. – primjer:
  3962.  
  3963. • klijentska Java aplikacija (npr. debeli klijent JavaFX, Swing, AWT …)
  3964. komunicira s komponentama poslovnog sloja (.NET)
  3965. • .NET aplikacija (klijentska, Forms …) komunicira s komponentama
  3966. poslovnog sloja arhitekture Java EE (Servleti, EJB …)
  3967.  
  3968. – izvedba s tankim klijentom – preglednik i klijentsko Web
  3969. sučelje
  3970.  
  3971. • koristi objekt XMLHttpRequest za komunikaciju s poslovnom
  3972. logikom
  3973. • serijalizacija i deserijalizacija XML objekata na razini preglednika
  3974. – AJAX (Asynchronous JavaScript and XML) – uporaba asinkronih poziva
  3975. korištenjem jezika JavaScript i jezika XML
  3976.  
  3977. • na strani poslovne logike – sučelje usluge Weba (SOAP, Web
  3978. Services … )
  3979. • na klijentskom sloju skup tehnologija DHTML
  3980.  
  3981. 54
  3982.  
  3983. Interoperabilnost klijentskog sloja
  3984. i sloja pristupa podacima
  3985.  
  3986. 55
  3987.  
  3988. Interoperabilnosti klijentskog sloja
  3989. i sloja pristupa podacima
  3990. • Interoperabilnosti klijentskog sloja i sloja
  3991. pristupa podacima
  3992. – integracija viših slojeva u jednu cjelinu
  3993. klijentske aplikacije
  3994. • klijentski sloj pristupa izravno sloju pristupa
  3995. podacima
  3996. • praktički klasična dvoslojna arhitektura
  3997. • ne preporučuje se
  3998.  
  3999. – scenarij debelog ili tankog klijenta
  4000. (AJAX, DHTML) koji pristupa objektnoj
  4001. reprezentaciji podataka
  4002. • ostvarivo između arhitektura .NET i Java EE u
  4003. oba smjera
  4004. 56
  4005.  
  4006. Interoperabilnost klijentskog
  4007. sloja – rezime
  4008. • Najčešće komunikacija prema prezentacijskom sloju ili
  4009. prema sloju poslovne logike
  4010. – komunikacija prema drugom klijentskom sloju ili
  4011. prema sloju pristupa podacima vrlo rijedak slučaj –
  4012. ne preporučuje se iz niza razloga
  4013. • Bez obzira kako je izveden klijentski sloj (debeli ili tanki
  4014. klijent) moguće ga je povezati s komponentama nižih
  4015. slojeva izvedenih u arhitekturama .NET i Java EE.
  4016. – aplikacije Weba, Java aplikacije, appleti, JavaFX, Swing
  4017. ili AWT aplikacije, odnosno .NET aplikacije, Windows
  4018. Forms, ASP.NET i slični oblici
  4019. – razni oblici prezentacijskih komponenata, kao što su
  4020. Servleti, JSP stranice, komponente EJB, odnosno
  4021. ASP.NET artefakti i druge komponente .NET
  4022. platforme.
  4023. • Komunikacija – različiti oblici protokola i usluga,
  4024. uključujući Web Services, a kod tankih klijenata
  4025. popularni načelo AJAX i skup tehnologija DHTML
  4026. 57
  4027.  
  4028. Interoperabilnost prezentacijskog
  4029. sloja
  4030. • Prezentacijski sloj
  4031. – osim prikaza korisničkog sučelja, omogućuje i
  4032. upravljanje, koordinaciju i orkestraciju
  4033. elemenata i komponenata korisničkog sučelja
  4034. – može se ostvariti komunikacija s drugim
  4035. slojevima različitih tehnologija ili arhitektura
  4036. – zadužen i za interpretaciju svih korisničkih
  4037. akcija i grafički prikaz svih elemenata
  4038. – zadužen i za održavanje stanja usluge tijekom
  4039. korisničkih sjednica, toka procesa poslovne
  4040. logike i poziva udaljenih metoda ili usluga
  4041. – kod dvoslojnih aplikacija prezentacijski je sloj
  4042. zapravo ugrađen u klijentski sloj, pa za njega
  4043. vrijedi sve što i za interoperabilnost klijentskog
  4044. sloja
  4045.  
  4046. 58
  4047.  
  4048. Interoperabilnost dvaju
  4049. prezentacijskih slojeva
  4050.  
  4051. 59
  4052.  
  4053. Interoperabilnost dvaju
  4054. prezentacijskih slojeva
  4055. • Interoperabilnost dvaju prezentacijskih slojeva
  4056. – s obzirom na probleme održavanja korisničke
  4057. sjednice (session) i stanja aplikacije, ovo nije
  4058. često ni popularno rješenje
  4059. – primjer:
  4060. • s arhitekturama Java EE i .NET to znači da ako je riječ o
  4061. tankom klijentu komponente, kao što su Servleti ili JSP
  4062. stranice, pristupaju komponentama ASP.NET i obrnuto
  4063.  
  4064. – jedna od mogućih implementacije je korištenje
  4065. redirekcije URL-a
  4066. – nešto češća interoperabilnost komunikacijom
  4067. dvaju debelih klijenata
  4068. • npr. Java aplikacije i .NET aplikacije
  4069. • jedna strana poziva određene funkcionalnosti druge
  4070. strane
  4071. 60
  4072.  
  4073. Interoperabilnost prezentacijskog
  4074. i poslovnog sloja
  4075.  
  4076. 61
  4077.  
  4078. Interoperabilnost prezentacijskog
  4079. i poslovnog sloja
  4080. • Interoperabilnost prezentacijskog i poslovnog
  4081. sloja
  4082. – najčešći je scenarij interoperabilnosti između
  4083. tehnologija Java EE i .NET – pogotovo kod
  4084. aplikacijskih poslužitelja
  4085. – primjeri:
  4086. • prezentacijski sloj izveden pomoću JSP stranica,
  4087. Servleta i komponenti JavaBean izravno komunicira s
  4088. komponentama .NET tehnologija, kao što su COM+
  4089. • prezentacijski sloj izveden u ASP.NET tehnologiji
  4090. izravno komunicira sa Servletima i komponentama
  4091. Enterprise JavaBeans (EJB)
  4092.  
  4093. • Druga mogućnost – uporabom usluga Weba
  4094. – skup tehnologija Web Services – preporučeni
  4095. oblik komunikacije u arhitekturi orijentiranoj
  4096. prema uslugama
  4097.  
  4098. 62
  4099.  
  4100. Interoperabilnost prezentacijskog
  4101. i sloja pristupa podacima
  4102.  
  4103. 63
  4104.  
  4105. Interoperabilnost prezentacijskog
  4106. i sloja pristupa podacima
  4107.  
  4108. Interoperabilnost prezentacijskog i sloja pristupa
  4109. podacima
  4110. – moguća kada je uloga sloja poslovne logike
  4111. minimalna
  4112. – izravna veza prezentacije (npr. kroz korisničko
  4113. grafičko sučelje na Webu) i podataka kojima se
  4114. manipulira, predstavljenih od podatkovnog sloja
  4115. – najčešće primjene kod upravljanja podacima,
  4116. administracije matičnih podataka pohranjenih u
  4117. bazama podataka
  4118. – primjeri:
  4119.  
  4120. • prezentacijski sloj (JSP, JSF …) pristupa podatkovnim
  4121. objektima u tehnologiji ADO.NET ili sl.
  4122. • prezentacijski sloj (ASP.NET, WebForms ili WinForms)
  4123. pristupa podatkovnim objektima u tehnologijama Java
  4124. EE (EJB, DAO) ili izravno korištenjem konekcije na bazu
  4125. (JDBC i sl.)
  4126.  
  4127. 64
  4128.  
  4129. Interoperabilnost poslovnog
  4130. sloja
  4131. • Poslovni sloj vrlo često komunicira izravno
  4132. s drugim poslovnim slojem
  4133. – zato jer odrađuje većinu poslovne
  4134. logike
  4135. • manji dio logike mogu odraditi i
  4136. prezentacijski sloj te sloj pristupa podacima
  4137. • validacije, kontrole i povezivanja podataka te
  4138. oblikovanja struktura podataka koje se dalje
  4139. prenose
  4140.  
  4141. – u određenim slučajevima sama relacijska
  4142. baza podataka sadržava različite
  4143. procedure i mehanizme
  4144. • okidači (triggers) i ugrađene ili pohranjene
  4145. procedure (stored procedures)
  4146.  
  4147. 65
  4148.  
  4149. Interoperabilnost poslovnih
  4150. slojeva
  4151.  
  4152. 66
  4153.  
  4154. Interoperabilnost poslovnih
  4155. slojeva
  4156.  
  4157. Interoperabilnost poslovnih slojeva
  4158. – osnovni razlog redukcija ponavljanja istih ili sličnih
  4159. funkcionalnosti i ponovno iskorištavanje dijelova
  4160. poslovne logike
  4161. • radi smanjenja troškova i drugih koristi
  4162.  
  4163. – česta na razini B2B - sustavi različitih poslovnih subjekata
  4164. ili sustavi istoga poslovnog subjekta surađuju kao bi
  4165. ostvarili određenu cjelovitu uslugu
  4166. – unutar jednog poslovnog subjekta obično uključuju
  4167. suradnju sustava ERP (Enterprise Resource Planning), CRM
  4168. (Customer Relationship Management), HR (Human
  4169. Resources) i drugih
  4170. – najčešći primjeri između različitih subjekata su sustavi
  4171. naručivanja, fakturiranja i plaćanja, koji omogućavaju
  4172. elektroničku trgovinu i elektroničko poslovanje u cjelini
  4173. – primjeri:
  4174. • suradnja Java EE i .NET komponenti kao što su Servleti, EJB,
  4175. COM+ i sl.
  4176. • poslovne komponente eksponirane u obliku usluga korištenjem
  4177. tehnologije Web Services
  4178.  
  4179. 67
  4180.  
  4181. Interoperabilnost poslovnog sloja
  4182. i sloja pristupa podacima
  4183. • Interoperabilnost poslovnog sloja i sloja
  4184. pristupa podacima
  4185. – iako nije često moguće je da poslovne
  4186. komponente jedne tehnologije izravno
  4187. pristupaju sloju podataka izvedenom u
  4188. drugoj tehnologiji
  4189. – primjeri:
  4190. • u tehnologiji Java EE predstavljaju
  4191. komponente pristupaju .NET komponentama
  4192. (npr. ADO.NET) ili agentima usluga (Service
  4193. Agents)
  4194. • komponente COM+ i sl. ostvaruju spoj
  4195. korištenjem arhitekture za spajanje JCA (Java
  4196. Connector Architecture)
  4197.  
  4198. 68
  4199.  
  4200. Interoperabilnost sloja pristupa
  4201. podacima i sloja podataka
  4202. • Interoperabilnost sloja pristupa podacima i
  4203. sloja podataka
  4204. – moguće i kod .NET i kod Java EE
  4205. • npr. kod tehnologije .NET za pristup i
  4206. pohranu podataka koristi ADO.NET, a za
  4207. pristup uslugama koriste se adapteri (engl.
  4208. Service Adapters)
  4209. • npr. kod tehnologije Java EE za perzistenciju
  4210. podataka koriste se komponente EJB, JDO i
  4211. ORM (uključujući JPA, POJO, Hibernate i sl.)
  4212.  
  4213. 69
  4214.  
  4215. Interoperabilnost slojeva
  4216. podataka
  4217. • Interoperabilnost slojeva podataka
  4218. – ako je riječ o relacijskim bazama podataka jedna
  4219. baza zove podatke iz druge
  4220. • tehnički izvedivo, upitno korištenje
  4221.  
  4222. – često se koriste dijeljene baze podataka (shared
  4223. databases)
  4224. • teže ostvarive u heterogenim, raspodijeljenim i
  4225. fizičkim dislociranim sustavima
  4226.  
  4227. – moguće je i da određena logika u pohranjenim
  4228. procedurama koristi razne izvore podataka
  4229. – u transakcijskoj logici često da jedna poslovna
  4230. komponenta koristi niz različitih komponenti
  4231. pristupa podacima koji tada izvode dohvat,
  4232. izmjenu ili pohranu podataka na više različitih
  4233. izvora podataka
  4234. 70
  4235.  
  4236. USLUGE
  4237. Uvod i definicije, stanja usluga
  4238. Arhitekture raspodijeljenih sustava
  4239. Interoperabilnost usluga
  4240. Međuoprema i komunikacija porukama
  4241.  
  4242. 71
  4243.  
  4244. Najčešće tehnologije izvedbe
  4245. interoperabilnosti
  4246.  
  4247. Uporabom usluga (service oriented approach) – npr. usluge
  4248. Weba
  4249. Na razini klasa (razreda) (class level approach)
  4250. – križno prevođenje (cross compilation)
  4251. • međukod (Java bytecode ili MSIL (Microsoft Intermediate
  4252. Language)
  4253.  
  4254. – poziv udaljenih procedura (Remote Procedure Calls)
  4255.  
  4256. • udaljene metode (Remote Method Invocation ili .NET remoting)
  4257.  
  4258. – premošćivanje (bridging)
  4259.  
  4260. • međusobni pozivi klasa npr. u tehnologijama Java i .NET koje se
  4261. izvode u JVM-u i CLR-u putem "mosta"
  4262.  
  4263. – porukama (messaging) i redovima poruka (message
  4264. queuing)
  4265.  
  4266. • razmjena poruka korištenjem mehanizama redova poruka (MQ)
  4267.  
  4268.  
  4269. Na razini podataka – razmjenom podataka na različite načine
  4270. – posrednicima, međuopremom, agregatorima i
  4271. integracijskim tehnikama
  4272. – sinkronizacijom i replikacijom dijelova baza podataka
  4273. – uporabom dijeljenih baza podataka
  4274. 72
  4275.  
  4276. Najčešće tehnologije
  4277. interoperabilnosti #1
  4278. • Tehnologije (XML) Web Services
  4279. – interoperabilnost na razini usluga
  4280. – aplikacije ili sustavi razmjenjuju podatke
  4281. korištenjem eksponiranih sučelja
  4282. – razmjena podataka porukama
  4283. • najčešće podaci u obliku XML
  4284.  
  4285. – široko prihvaćeni i relativno jednostavni
  4286. protokoli razmjene
  4287. • najčešće postojeći protokoli HTTP i SOAP
  4288.  
  4289. 73
  4290.  
  4291. Najčešće tehnologije
  4292. interoperabilnosti #2
  4293. • Tehnike eksponiranja razreda i metoda
  4294. – interoperabilnost na razini prosljeđivanja
  4295. poziva metoda
  4296. • između platformi, tehnologija, programskih
  4297. jezika …
  4298.  
  4299. – osnovni preduvjet – postojanje mosta
  4300. (runtime bridge) između tehnologija ili
  4301. uporaba tehnika poziva udaljenih
  4302. procedura (remote procedure call)
  4303. – RPC primjeri: XML-RPC, JSON-RPC, SOAP
  4304. 74
  4305.  
  4306. XML-RPC
  4307. • Udaljeni poziv procedura pomoću XML-a ili XML-RPC
  4308. – specifikacija koja omogućava programima koji se
  4309. izvode na različitim operacijskim sustavima i u
  4310. različitim okruženjima da međusobno izmjenjuju
  4311. pozive procedura preko mreže
  4312. – prijenosni protokol HTTP, poruke u jeziku XML
  4313. – cilj osigurati komunikaciju među različitim
  4314. programskim sustavima – zapravo nije riječ o
  4315. usluzi
  4316. – preteča SOAP-a
  4317. • Načelna arhitektura
  4318. Podaci
  4319.  
  4320. Podaci
  4321.  
  4322. Podaci
  4323. HTTP
  4324. XML
  4325.  
  4326. XML
  4327.  
  4328. Podaci
  4329. Program1
  4330.  
  4331. Podaci
  4332.  
  4333. Podaci
  4334. XML-RPC
  4335.  
  4336. Program2
  4337.  
  4338. 75
  4339.  
  4340. XML-RPC primjer
  4341. • Klijent
  4342.  
  4343. • Poslužitelj
  4344.  
  4345. public class Klijent {
  4346.  
  4347. import org.apache.xmlrpc.*;
  4348. public class Zbrajalo {
  4349.  
  4350. public static void main (String [] args) {
  4351. try {
  4352. XmlRpcClient server =
  4353. new XmlRpcClient("http://localhost/RPC2");
  4354. Vector params = new Vector();
  4355. params.addElement(new Integer(17));
  4356. params.addElement(new Integer(13));
  4357. Object result = server.execute("sample.sum", params);
  4358. int sum = ((Integer) result).intValue();
  4359. System.out.println("The sum is: "+ sum);
  4360. } catch (Exception exception) {
  4361. System.err.println("Klijent: " + exception);
  4362. }
  4363. }
  4364.  
  4365. public Integer sum(int x, int y) {
  4366. return new Integer(x+y);
  4367. }
  4368. public static void main (String [] args) {
  4369. try {
  4370. System.out.println("Starting XML-RPC Server...");
  4371. WebServer server = new WebServer(80);
  4372. server.addHandler("sample", new JavaServer());
  4373. server.start();
  4374. System.out.println("Started successfully.");
  4375. System.out.println("Accepting requests.");
  4376. } catch (Exception exception) {
  4377. System.err.println("JavaServer: " + exception);
  4378. }
  4379. }
  4380.  
  4381. }
  4382.  
  4383. }
  4384.  
  4385. 76
  4386.  
  4387. XML-RPC primjer
  4388. • Poruka zahtjeva
  4389.  
  4390. • Poruka odgovora
  4391.  
  4392. <?xml version="1.0" encoding="UTF-8"?>
  4393. <methodCall>
  4394. <methodName>
  4395. sample.sum
  4396. </methodName>
  4397. <params>
  4398. <param>
  4399. <value>
  4400. <int>17</int>
  4401. </value>
  4402. </param>
  4403. <param>
  4404. <value>
  4405. <int>13</int>
  4406. </value>
  4407. </param>
  4408. </params>
  4409. </methodCall>
  4410.  
  4411. <?xml version="1.0" encoding="UTF-8"?>
  4412. <methodResponse>
  4413. <params>
  4414. <param>
  4415. <value>
  4416. <int>30</int>
  4417. </value>
  4418. </param>
  4419. </params>
  4420. </methodResponse>
  4421.  
  4422. 77
  4423.  
  4424. Najčešće tehnologije
  4425. interoperabilnosti #3
  4426. • Međuoprema orijentirana prema porukama
  4427. (message-oriented middleware)
  4428. – interoperabilnost na razini asinkrone
  4429. razmjene poruka
  4430. – transakcijska okolina
  4431. – sigurnost (kriptiranje podataka i
  4432. autentikacija)
  4433. – pouzdan prijenos podataka (tolerancije na
  4434. mrežne nedostupnosti)
  4435. – nedostaci:
  4436. • teže ostvariva sinkrona komunikacija
  4437. • potencijalni problemi s mrežnom sigurnošću
  4438. (vatrozid)
  4439. 78
  4440.  
  4441. Najčešće tehnologije
  4442. interoperabilnosti #4
  4443. • Dijeljene baze podataka (shared databases)
  4444. – interoperabilnost na razini razmjene
  4445. pohranjenih zapisa s podacima
  4446. – programska sučelja za pristup bazama
  4447. podataka
  4448. • ODBC (Open Database Connectivity), JDBC
  4449. (Java Database Connectivity), mehanizmi
  4450. sinkronizacije baza podataka …
  4451.  
  4452. – preduvjet
  4453. • zajednička dijeljenja jedinstvene baze
  4454. podataka koja koriste istu shemu, odnosno
  4455. model podataka
  4456. – koji razumiju svi sudionici u komunikaciji
  4457. 79
  4458.  
  4459. Najčešće tehnologije
  4460. interoperabilnosti #5
  4461. • Integracijski brokeri (brokers)
  4462. – interoperabilnost kroz razmjenu
  4463. podataka na aplikacijskoj razini
  4464. – brokeri povezuju heterogene tehnologije
  4465. korištenjem izgrađenih sučelja i adaptera
  4466. – služe kao međusloj između različitih
  4467. aplikacija ili sustava
  4468.  
  4469. 80
  4470.  
  4471. USLUGE
  4472. Uvod i definicije, stanja usluga
  4473. Arhitekture raspodijeljenih sustava
  4474. Interoperabilnost usluga
  4475. Međuoprema i komunikacija porukama
  4476.  
  4477. 81
  4478.  
  4479. Međuoprema
  4480. • Definicija međuopreme (middleware):
  4481.  
  4482. /
  4483.  
  4484. – klijent poslužitelj –"slash", "softversko ljepilo", "ono
  4485. između"
  4486. – softver koji posreduje između aplikacijskog programa
  4487. i mreže, tako da upravlja interakcijom nesukladnih
  4488. aplikacija kroz heterogene računalne platforme
  4489. – računalni softver koji spaja softverske komponente i
  4490. njihove aplikacije. Sastoji se od skupa usluga koje
  4491. omogućavaju izvođenje višestrukih procesa na jednom
  4492. ili više računala koje međusobno surađuju.
  4493. Omogućava interoperabilnost kao podršku prelasku
  4494. na usklađene raspodijeljene arhitekture koje izvode
  4495. kompleksne raspodijeljene aplikacije.“
  4496. • Sinonimi: međuprogram, međuprogramska podrška,
  4497. posrednička programska podrška i posrednički
  4498. međusloj
  4499. 82
  4500.  
  4501. Definicija i uloga
  4502. međuopreme
  4503. • Međuoprema je
  4504. – programska podrška (softver) koja posreduje
  4505. između dviju strana i tako omogućuje da
  4506. pojedine softverske komponente ili aplikacije
  4507. surađuju u jedinstvenom funkcionalnom
  4508. smislu, bez obzira na to što je riječ o
  4509. nesukladnim dijelovima koji se izvršavaju na
  4510. tehnološki nespojivim platformama
  4511. • Uloga – omogućuje informacijskim sustavima
  4512. transparentnu komunikaciju bez obzira na fizičku
  4513. udaljenost i nesukladnost komunikacije i platformi
  4514. na kojima su izvedeni
  4515. • Koristi:
  4516. – neovisnost o infrastrukturi mreže
  4517. – pojednostavljena komunikacija
  4518. – zadržavanje semantičke interoperabilnosti
  4519. 83
  4520.  
  4521. Osnovni tipovi međuopreme
  4522.  
  4523. Podatkovna međuoprema
  4524. – spoj podatkovnih izvora i isporuka podataka
  4525. – najčešće povezuju baze podataka i aplikacije
  4526. Objektno orijentirana međuoprema
  4527. – primanje i slanje objekata te zahtijevanja usluga u
  4528. sustavima objektno orijentiranog okruženja
  4529. Međuoprema zasnovana na pozivima udaljenih procedura
  4530. – pozivi procedura koji se nalaze na udaljenim
  4531. računalima, asinkrono i sinkrono
  4532. Transakcijska međuoprema
  4533. – razmjena podataka zasnovana na transakcijama
  4534. Međuoprema usmjerena porukama
  4535. – razmjena poruka opće namjene pohranom poruka u
  4536. međuspremnik
  4537. Portalski i aplikacijski poslužitelji
  4538. – poslužiteljski softver koji omogućuju izvršavanje drugih
  4539. aplikacija najčešće izvedenih s Web korisničkim
  4540. sučeljima
  4541.  
  4542. 84
  4543.  
  4544. Komunikacija zasnovana na
  4545. porukama
  4546. – Međuoprema zasnovana na redovima poruka MQM
  4547. (Message Queuing Middleware)
  4548. – arhitekture pohrane i prosljeđivanja (store-and-forward)
  4549. i redova poruka (message queues)
  4550. – redovi poruka su međuspremnici između strana u
  4551. komunikaciji – prihvaćaju i isporučuju poruke
  4552. • Softverske komponente na svakoj strani – dva tipa:
  4553. – pošiljatelji (sender) ili proizvođači (producer) –
  4554. pohranjuju poruke u red poruka
  4555. – primatelji (receiver) ili potrošači (consumer) – dohvaćaju
  4556. poruke iz tog reda poruka
  4557. • Komunikacija u načelu asinkrona
  4558. • Prijenos poruka pouzdan
  4559. – posrednik se oporavlja od pogrešaka
  4560. • promjena ili gubitak poruke, pogrešna isporuka
  4561.  
  4562. – koriste se postojani redovi
  4563.  
  4564. • tehnološka podloga baza podataka ili datotečni sustav
  4565.  
  4566. 85
  4567.  
  4568. Komunikacija zasnovana na
  4569. porukama
  4570. Komunikacijski protokol nije nužno određen
  4571. – moguće koristiti neki poznati komunikacijski protokol
  4572.  
  4573.  
  4574. • iako nepouzdani, u ovom slučaju su pouzdani
  4575.  
  4576. Red poruka – međuspremnik za pristigle, a nepreuzete
  4577. poruke
  4578. – pohrana na neodređeno vremensko razdoblje – prije nego
  4579. što se dohvati
  4580. – dohvaća se kada je primatelj postao dostupan
  4581. – ne mora se nužno dohvaćati u poretku pristizanja
  4582. – najčešće sadržavaju informaciju o prioritetu
  4583.  
  4584.  
  4585. • postavlja pošiljatelj, a posrednik upravlja porukama, npr. mijenja
  4586. prioritet
  4587.  
  4588. – Izvedbe
  4589.  
  4590. programsko sučelje JMS (Java Message Service)
  4591. protokol AMQP (Advanced Message Queuing Protocol) – otvorena
  4592. norma
  4593. komercijalni: IBM WebSphere MQ, Oracle AQ, MSMQ ...
  4594. OSS: JORAM, ActiveMQ, ØMQ, Qpid, HornetQ, RabbitMQ...
  4595.  
  4596. 86
  4597.  
  4598. —————————
  4599.  
  4600. HTTP 2.0
  4601.  
  4602. Interoperabilnos
  4603. t informacijskih
  4604. sustava
  4605. Aleksander Radovan
  4606.  
  4607. HTTP 2.0
  4608. Problemi postojećih protokola
  4609. SPDY i HTTP 2
  4610. Ostvarivanje HTTP 2 konekcije
  4611. Okviri
  4612. Tokovi i server push
  4613.  
  4614. 2
  4615.  
  4616. Problemi postojećih protokola
  4617. • HTTP 1.1 zahtijeva „trošenje” puno
  4618. vremena na uspostavu konekcije
  4619.  
  4620. 3
  4621.  
  4622. Problemi postojećih protokola
  4623. • Pouzdanost isporuke i poredak podataka
  4624. kod TCP protokola izaziva dodatne
  4625. probleme:
  4626.  
  4627. 4
  4628.  
  4629. Problemi postojećih protokola
  4630. • Ako se izgubi neki paket, poslužitelj ne
  4631. može primiti nove pakete dok ne primi
  4632. izgubljeni paket:
  4633.  
  4634. 5
  4635.  
  4636. Problemi postojećih protokola
  4637. • TCP također tek postepeno povećava
  4638. veličinu paketa kad se ustanovi da
  4639. postoji kapacitet za to („Slow start”):
  4640.  
  4641. 6
  4642.  
  4643. HTTP 2.0
  4644. Problemi postojećih protokola
  4645. SPDY i HTTP 2.0
  4646. Ostvarivanje HTTP 2 konekcije
  4647. Okviri
  4648. Tokovi i server push
  4649.  
  4650. 7
  4651.  
  4652. SPDY
  4653. • Protokol razvijen od strane Googlea
  4654. kako bi riješio probleme s
  4655. performansama na webu
  4656. • HTTP 2.0 je razvijen na temelju SPDY
  4657. protokola
  4658. • Chrome preglednik će prestati
  4659. podržavati SPDY do kraja 2016. godine
  4660.  
  4661. 8
  4662.  
  4663. HTTP 2.0
  4664. • Binarni protokol
  4665. • Zadržava istu semantiku (metode, zaglavlja,
  4666. resursi) kao i HTTP 1.x protokol
  4667. • Rješava probleme TCP protokola
  4668. • RFC 7540 i 7451 (HPACK) dokumenti su
  4669. objavljeni u svibnju 2015.
  4670. • Podržava ga većina Internet preglednika i
  4671. poslužitelja web aplikacija
  4672. • Podržava ga većina najpopularnijih stranica
  4673. • https://http2.akamai.com/demo
  4674. • http://isthewebhttp2yet.com/measurements/
  4675. adoption.html
  4676. 9
  4677.  
  4678. HTTP 2.0 demo
  4679. • https://http2.akamai.com/demo
  4680. • http://http2.golang.org/gophertiles
  4681.  
  4682. 10
  4683.  
  4684. HTTP 2.0
  4685. Problemi postojećih protokola
  4686. SPDY i HTTP 2
  4687. Ostvarivanje HTTP 2 konekcije
  4688. Okviri
  4689. Tokovi i server push
  4690.  
  4691. 11
  4692.  
  4693. Ostvarivanje HTTP 2 konekcije
  4694. • Umjesto u tekstualnom formatu kao kod
  4695. HTTP 1.X protokola, kod HTTP 2 se
  4696. podaci izmjenjuju u binarnom obliku
  4697.  
  4698. 12
  4699.  
  4700. Ostvarivanje HTTP 2 konekcije
  4701. • Kako bi mogao raditi na postojećoj
  4702. arhitekturi, HTTP 2 protokol
  4703. podrazumijeva slanje „upgrade”
  4704. zaglavlja
  4705. • Ako poslužitelj podržava HTTP 2,
  4706. odgovorit će statusom 101 za promjenu
  4707. protokola
  4708.  
  4709. 13
  4710.  
  4711. Ostvarivanje HTTP 2 konekcije
  4712. • U slučaju da poslužitelj ne podržava
  4713. HTTP 2 protokol, odgovara uobičajenim
  4714. statusima (200, 404 itd.)
  4715. • U slučaju HTTPS-a, na poslužitelju se
  4716. mora instalirati proširenje za TLS
  4717. (Transport Level Security): ALPN
  4718. (Application Layer Protocol Negotiation)
  4719. • ALPN omogućava uspostavu protokola
  4720. tijekom TLS „handshake” procesa
  4721.  
  4722. 14
  4723.  
  4724. HTTP 2.0
  4725. Problemi postojećih protokola
  4726. SPDY i HTTP 2
  4727. Ostvarivanje HTTP 2 konekcije
  4728. Okviri
  4729. Tokovi i server push
  4730.  
  4731. 15
  4732.  
  4733. Okviri
  4734. • Okviri (engl. frames) predstavljaju
  4735. osnovnu jedinicu podataka za
  4736. komunikaciju kod HTTP 2 protokola
  4737. • Ima ih 10 različitih vrsta
  4738. • Svaki okvir se sastoji od serije polja za
  4739. zaglavlje
  4740.  
  4741. 16
  4742.  
  4743. Okviri
  4744. • Svaka HTTP 2 poruka (zahtjev i odgovor)
  4745. se sastoji od serije okvira:
  4746.  
  4747. 17
  4748.  
  4749. Podatkovni okvir
  4750. • Podatkovni okvir služi za prijenos
  4751. podataka od poslužitelja do klijenta
  4752. • Osim podataka prenosi i „padding”
  4753. kojim se štiti od raznih napada
  4754.  
  4755. 18
  4756.  
  4757. Okvir zaglavlja
  4758. • Zahtjev može imati jedan ili više okvira
  4759. sa zaglavljima
  4760.  
  4761. 19
  4762.  
  4763. Okvir zaglavlja
  4764. • Prije svih ostalih polja u zaglavlju se kod
  4765. HTTP 2 protokola koriste „pseudo” polja
  4766. u zaglavljima i sadrže sljedeće podatke:
  4767.  
  4768. 20
  4769.  
  4770. Okvir za postavke
  4771. • Također postoji i okvir za postavke koji
  4772. sadrži podatke korištene prilikom
  4773. uspostavljanja veze:
  4774.  
  4775. 21
  4776.  
  4777. HTTP 2.0
  4778. Problemi postojećih protokola
  4779. SPDY i HTTP 2
  4780. Ostvarivanje HTTP 2 konekcije
  4781. Okviri
  4782. Tokovi i server push
  4783.  
  4784. 22
  4785.  
  4786. Tokovi
  4787. • HTTP 2 podržava TCP vezu koja se
  4788. sastoji od više tokova (engl. streams), a
  4789. svaki tok može sadržavati više okvira
  4790. • Time se omogućava maksimiziranje
  4791. paraleliziranja zahtjeva
  4792.  
  4793. 23
  4794.  
  4795. Server push
  4796. • Tehnika koja omogućava slanje resursa
  4797. od poslužitelja prema klijentu, bez da ih
  4798. je klijent zatražio
  4799. • Umjesto da klijent osim HTML stranice
  4800. traži sve ostale povezane resurse, kod
  4801. HTTP 2 protokola poslužitelj ih odmah
  4802. šalje s prvim zahtjevom
  4803.  
  4804. 24
  4805.  
  4806. —————————
  4807.  
  4808. USLUGE WEBA
  4809. (WEB SERVICES)
  4810.  
  4811. Interoperabilnost
  4812. informacijskih
  4813. sustava
  4814. Aleksander Radovan
  4815.  
  4816. USLUGE WEBA
  4817. (WEB SERVICES)
  4818. Definicije
  4819. SOAP
  4820. WSDL
  4821. Usluge Weba 2.0
  4822.  
  4823. 2
  4824.  
  4825. Usluge Weba – definicija
  4826. • Usluge Weba (Web Services, WS)
  4827. – programski sustavi oblikovani na način da
  4828. podržavaju interoperabilne (stroj prema stroju)
  4829. interakcije putem mreže
  4830. – sadrže sučelja koja su opisana u obliku koji je
  4831. moguće obraditi u računalu
  4832. • prvenstveno WSDL
  4833.  
  4834. • Drugi sustavi mogu komunicirati s uslugom Weba
  4835. – na način koji je opisan u njenom opisu
  4836.  
  4837. korištenjem SOAP poruka
  4838. najčešće korištenjem protokola HTTP
  4839. sa XML serijalizacijom
  4840. u suradnji s ostalim normama usmjerenim Webu
  4841.  
  4842. Definicija W3C
  4843. 3
  4844.  
  4845. Značajke usluga Weba
  4846. • Usluge Weba (WS) nisu namijenjene
  4847. krajnjim korisnicima – ljudima!
  4848. – to nisu aplikacije Weba (Web
  4849. applications)
  4850. • Namjena – omogućiti korištenje podataka i
  4851. operacija drugim programima
  4852. – aplikacije ili druge usluge Weba
  4853. • Usluge Weba nisu SOA u punom smislu
  4854. – ali se često poistovjećuju
  4855. – SOA je širi pojam
  4856. – zapravo WS je najrašireniji izvedbeni
  4857. oblik SOA
  4858. 4
  4859.  
  4860. Usluga Weba – konkretnija
  4861. definicija
  4862. • Izvedba:
  4863. – softverski (ili rijetko hardverski) sustav
  4864. koji može primati i slati poruke
  4865. – prema specifikaciji je čest naziv agent
  4866. • Usluga – resurs opisan skupom
  4867. funkcionalnosti koje može pružati
  4868. – ostaje ista bez obzira koji se agent
  4869. koristi za pristup
  4870. – moguće zamijeniti agenta (tehnološki)
  4871. • npr. drugi programski jezik, platforma,
  4872. tehnologija …
  4873. 5
  4874.  
  4875. Sudionici u izvođenju usluge
  4876. Weba
  4877. • Usluga Weba izvodi funkcionalnost za svog
  4878. vlasnika
  4879. • Uloge sudionika WS
  4880. – pružatelj usluge (service provider) – vlasnik
  4881. usluge
  4882. • implementirao WS putem svog agenta
  4883.  
  4884. – zahtjevatelj usluge (service requester) –
  4885. korisnik usluge
  4886. • ima svog vlastitog agenta za komunikaciju
  4887.  
  4888. • Zahtjevatelj usluge koristi agenta zahtjevatelja koji
  4889. komunicira s agentom pružatelja usluge
  4890. – agenti su najčešće programski
  4891. – način komunikacije agent-agent svojstven
  4892. uslugama Weba
  4893. • nema izravnog odnosa s korisnikom ili vlasnikom
  4894.  
  4895. 6
  4896.  
  4897. Ostale definicije
  4898. • Način opisivanja usluge WSD (Web Service
  4899. Description)
  4900. – računalno obradiv opis usluge
  4901. • Jezik za opis usluga WSDL (Web Service
  4902. Description Language)
  4903. • Ugovor o korištenju usluge
  4904. – manje formalan nego kod SOA (vidjet ćemo
  4905. kasnije)
  4906. – eksplicitan ili implicitan, usmen ili pisan
  4907. • ne mora nužno biti u pisanoj formi ili posebno
  4908. dogovoren
  4909.  
  4910. – podoban za obradu na računalu ili napisan da
  4911. bude razumljiv ljudima
  4912. – legalno obvezujući ili samo informativan
  4913. – važna je dobro definirana semantika!
  4914. 7
  4915.  
  4916. Korištenje usluge Weba
  4917. • Koraci:
  4918. 1. međusobno otkrivanje sudionika u procesu
  4919. – norma usluga Weba ovo olakšava
  4920. – dopušta da samo jedna strana bude poznata drugoj
  4921. 2.
  4922.  
  4923.  
  4924. najčešće zahtjevatelj treba otkriti pružatelja
  4925.  
  4926. način dogovora oko opisa sučelja usluge i ugovora za
  4927. njeno korištenje
  4928. – usuglašavanje načina komunikacije među agentima
  4929. zahtjevatelja i pružatelja usluge
  4930. 3. usuglašene uvjete programski ugraditi u svaki od
  4931. agenata
  4932. 4. agenti mogu početi međusobno izmjenjivati poruke
  4933. – zahtjevatelj može početi koristiti uslugu pružatelja
  4934. • Neki od koraka mogu se u potpunosti automatizirati,
  4935. a neki se ipak moraju provesti ručno (npr.
  4936. implementacija agenta)
  4937. 8
  4938.  
  4939. Model procesa korištenja
  4940. usluge Weba
  4941. 1. međusobno otkrivanje
  4942.  
  4943. Zahtjevatelj
  4944.  
  4945. 2. Dogovor oko ugovora i WSD
  4946.  
  4947. Ugovor
  4948.  
  4949. Osoba
  4950.  
  4951. 3. Ugradnja
  4952. Ugovora
  4953. i WSD
  4954.  
  4955. Pružatelj
  4956.  
  4957. WSD
  4958.  
  4959. Osoba
  4960. Ugovor
  4961.  
  4962. Ugovor
  4963.  
  4964. WSD
  4965.  
  4966. WSD
  4967.  
  4968. Agent
  4969. zahtjevatelja
  4970.  
  4971. 3. Ugradnja
  4972. Ugovora
  4973. i WSD
  4974.  
  4975. 4. Korištenje
  4976.  
  4977. Agent
  4978. pružatelja
  4979.  
  4980. 9
  4981.  
  4982. USLUGE WEBA
  4983. (WEB SERVICES)
  4984. Definicije
  4985. SOAP
  4986. WSDL
  4987. Usluge Weba 2.0
  4988.  
  4989. 10
  4990.  
  4991. SOAP
  4992. • Simple Object Access Protocol – SOAP
  4993. – „lagani” komunikacijski protokol
  4994. raspodijeljenih okruženja
  4995. – zasnovan na jeziku XML
  4996. – služi za izmjenu informacija među
  4997. entitetima na mreži
  4998. • Transportni protokol
  4999. – najčešće protokol HTTP (HTTPS) …
  5000. • Informacija – SOAP poruka
  5001. – tekstualna informacija zapisana u jeziku XML
  5002. • Oslanja se na jezik XML i njegove norme
  5003. – XML Schema
  5004. – XML Namespace
  5005. 11
  5006.  
  5007. SOAP – ideja i cilj
  5008. • Interoperabilnost!
  5009. • Neovisan o operacijskim sustavima i
  5010. tehnologijama u kojima su aplikacije
  5011. izvedene
  5012. • Jednostavnost i nadogradivost
  5013. – Two major design goals for SOAP are
  5014. simplicity and extensibility
  5015.  
  5016. 12
  5017.  
  5018. SOAP – povijest i inačice
  5019. • 1998. – osnovna ideja
  5020. – Dave Winer, Don Box, Bob Atkinson i
  5021. Mohsen Al-Ghosein
  5022. – suradnja velikih softverskih tvrtki
  5023. (Microsoft, HP, IBM, SAP ...)
  5024. • 2000. – specifikacija SOAP 1.1
  5025. • 2003. – specifikacija SOAP 1.2
  5026. – SOAP više nije akronim
  5027. • 2007. – specifikacija SOAP 1.2 – 2. izdanje
  5028. (aktualno)
  5029. – http://www.w3.org/TR/soap12
  5030. 13
  5031.  
  5032. SOAP 1.2
  5033. • Specifikacija SOAP Version 1.2 ima 3 dijela
  5034. • Part 0 definira SOAP 1.2 Primer
  5035. – nenormativni dokument s jednostavnim
  5036. tutorijalom značajki SOAP 1.2
  5037. • Part 1 definira SOAP Messaging Framework
  5038. – SOAP Processing Model – pravila za
  5039. procesiranje poruka
  5040. – SOAP Extensibility Model – koncepti značajki i
  5041. modula
  5042. – SOAP Protocol Binding Framework – pravila
  5043. za definiranje povezivanja na protokole
  5044. – SOAP Message Construct – struktura poruka
  5045. • SOAP 1.2 Part 2 – opis skupa dodataka koji se
  5046. mogu koristiti sa SOAP Messaging
  5047. Frameworkom.
  5048. 14
  5049.  
  5050. SOAP poruke
  5051. • Primjer: zapis podataka o studentima u XML-u
  5052. • Kako?
  5053. – programeru prepuštena briga o sintaksi ...
  5054. <student> Ivan Horvat 1234567</student>
  5055. <student>
  5056. <ime>Ivan</ime>
  5057. <prezime>Horvat</prezime>
  5058. <mbr>1234567</mbr>
  5059. </student>
  5060. <student ime="Ivan" prezime="Horvat"
  5061. mbr="1234567" />
  5062.  
  5063. • Valjanost?
  5064. 15
  5065.  
  5066. SOAP poruka - struktura
  5067.  
  5068.  
  5069. SOAP poruka
  5070. – (izvana) običan XML
  5071. dokument
  5072. Struktura
  5073. – omotnica – definira da
  5074. je XML dokument
  5075. zapravo SOAP poruka
  5076. – zaglavlje (neobvezno)
  5077. – definira na koji će
  5078. način informacije iz
  5079. poruke biti procesirane
  5080. – tijelo poruke
  5081. • poruka
  5082. • pogreška (neobvezno)
  5083. – sadržava informaciju
  5084. o pogrešci koja se
  5085. mogla dogoditi
  5086. tijekom prijenosa i
  5087. obrade informacije
  5088.  
  5089. SOAP omotnica
  5090. SOAP zaglavlje
  5091. blok zaglavlja
  5092. blok zaglavlja
  5093. SOAP tijelo
  5094.  
  5095. poruka
  5096. pogreška
  5097.  
  5098. 16
  5099.  
  5100. SOAP poruka – izgled
  5101. SOAP omotnica
  5102. SOAP zaglavlje
  5103. blok zaglavlja
  5104. blok zaglavlja
  5105. SOAP tijelo
  5106.  
  5107. poruka
  5108. pogreška
  5109.  
  5110. • Pravila:
  5111. – u jeziku XML
  5112. – ne sadrži referencu
  5113. na DTD ni naredbe
  5114. procesiranja
  5115. • Mnogo dodatnih
  5116. informacija
  5117. – višak (overhead)
  5118. • Elementi precizno
  5119. definirani u osnovnim
  5120. prostorima naziva:
  5121. – SOAP omotnica
  5122. – SOAP kodiranje i
  5123. tipovi podataka
  5124. • Neobvezni dijelovi –
  5125. sivo
  5126. 17
  5127.  
  5128. SOAP poruka – omotnica
  5129. • SOAP omotnica
  5130. – SOAP 1.1 - http://schemas.xmlsoap.org/soap/envelope/
  5131. – SOAP 1.2 - http://www.w3.org/2003/05/soap-envelope
  5132. – sadržava točno jedno tijelo
  5133. – ako se koristi zaglavlje, ono se mora nalaziti
  5134. neposredno ispod omotnice
  5135. <soap:Envelope
  5136. xmlns:soap="http://www.w3.org/2003/05/soapenvelope"
  5137. soap:encodingStyle="http://www.w3.org/2003/05/soapencoding">
  5138. ...
  5139. </soap:Envelope>
  5140. 18
  5141.  
  5142. SOAP poruka – zaglavlje i
  5143. pogreške
  5144. • SOAP zaglavlje
  5145. – svrha poruke
  5146. – identifikator prijenosa
  5147. – informacija o pošiljatelju i primatelju
  5148. poruke
  5149. • Pogreške:
  5150. • VersionMismatch – pogrešna inačica
  5151. protokola
  5152. • MustUnderstand – poruka nije razumljiva
  5153. • Server – pogreška na poslužitelju
  5154. • Client – problem sa samom porukom
  5155. 19
  5156.  
  5157. SOAP poruka – primjer
  5158. izvedbe
  5159. • 2 razreda (klase): poslužitelj i klijent
  5160. • Na poslužitelju HelloWorldSOAPService
  5161. – prima poruku i vraća String
  5162. – metoda sayHello()
  5163.  
  5164. public class HelloWorldSOAPService {
  5165. public String sayHello(String firstName, String lastName) throws
  5166. Exception {
  5167. String aString = firstName + " " + lastName + ", dobar dan!";
  5168. return aString;
  5169. }
  5170. public String addString(String symbol, String dataType) throws
  5171. Exception {
  5172. String aString = symbol + dataType;
  5173. return aString;
  5174. }
  5175. }
  5176. 20
  5177.  
  5178. SOAP poruka – primjer
  5179. • TestClient
  5180. – pokreće se
  5181. pomoću
  5182. parametara
  5183. – zahtjev se pakira
  5184. u
  5185. poruku
  5186. – prima se
  5187. odgovor
  5188. – ispis
  5189.  
  5190. public class TestClient {
  5191. public static void main(String args[]) {
  5192. try {
  5193. Options opts = new Options( args );
  5194. args = opts.getRemainingArgs();
  5195. Service service = new Service();
  5196. Call call = (Call) service.createCall();
  5197. call.setTargetEndpointAddress( new java.net.URL(opts.getURL()) );
  5198. if( args[0].equals("1") )
  5199. call.setOperationName( new QName("urn:HelloWorld", "sayHello"));
  5200. else
  5201. call.setOperationName( new QName("urn:HelloWorld", "addString"));
  5202. call.addParameter( “p1", XMLType.XSD_STRING, ParameterMode.IN );
  5203. call.addParameter( “p2", XMLType.XSD_STRING, ParameterMode.IN );
  5204. call.setReturnType( XMLType.XSD_STRING );
  5205. call.setUsername( opts.getUser() );
  5206. call.setPassword( opts.getPassword() );
  5207. String res = (String) call.invoke( new Object[] { args[1], args[2] } );
  5208. System.out.println( "Return is: " + res );
  5209. } catch( Exception e ) {
  5210. e.printStackTrace();
  5211. }
  5212. }
  5213. }
  5214.  
  5215. 21
  5216.  
  5217. SOAP poruka – upit
  5218. <?xml version="1.0" encoding="UTF-8"?>
  5219. <soapenv:Envelope
  5220. xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
  5221. …>
  5222. <soapenv:Body>
  5223. <ns1:sayHello
  5224. xmlns:ns1="urn:HelloWorld">
  5225. <p1 xsi:type="xsd:string">
  5226. Ivan
  5227. </p1>
  5228. <p2 xsi:type="xsd:string">
  5229. Horvat
  5230. </p2>
  5231. </ns1:sayHello>
  5232. </soapenv:Body>
  5233. </soapenv:Envelope>
  5234. 22
  5235.  
  5236. SOAP poruka – odgovor
  5237. <soapenv:Envelope
  5238. …>
  5239. <soapenv:Body>
  5240. <ns1:sayHelloResponse
  5241. xmlns:ns1="urn:HelloWorld">
  5242. <ns1:sayHelloReturn xsi:type="soapenc:string"
  5243. xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding">
  5244. Ivan Horvat, ovako izgleda jedan jednostavan primjer SOAP
  5245. poruke koju
  5246. je poslala usluga!
  5247. </ns1:sayHelloReturn>
  5248. </ns1:sayHelloResponse>
  5249. </soapenv:Body>
  5250. </soapenv:Envelope>
  5251. 23
  5252.  
  5253. SOAP poruka – prijenos
  5254. poruka
  5255. • SOAP vrlo fleksibilan prema prijenosnom
  5256. protokolu
  5257. – određuje ga izvedba (programer)
  5258. – najčešće HTTP (zahtjev-odgovor), smjernice
  5259. – puno rjeđe SMTP (inicijalno naveden)
  5260. – potencijalno FTP, POP3 ili izravno putem
  5261. protokola TCP
  5262. – postoji i:
  5263.  
  5264. SOAP-over-AMQP
  5265. SOAP-over-UDP
  5266. SOAP preko Jabber XMPP
  5267. 24
  5268.  
  5269. SOAP poruka – primjer poruke
  5270. zahtjeva
  5271. POST /HelloWorld HTTP1.1
  5272. Host: www.racunarstvo.hr
  5273. Content-Type: text/xml
  5274. Content-Lenght: 543
  5275. SOAPAction: …
  5276. <soapenv:Envelope
  5277. xmlns:soapenv="http://www.w3.org/2003/05/soapenvelope">
  5278. ...
  5279. </soapenv:Envelope>
  5280.  
  5281. SOAPAction govori poslužitelju HTTP zahtjeva što
  5282. treba napraviti prije nego što pokuša dekodirati
  5283. dobivenu poruku
  5284.  
  5285. 25
  5286.  
  5287. SOAP poruka – primjer poruke
  5288. odgovora
  5289. HTTP/1.1 200 OK
  5290. ...
  5291. <soapenv:Envelope
  5292. xmlns:soapenv="http://www.w3.org/2003/05/
  5293. soap-envelope">
  5294. ...
  5295. </soapenv:Envelope>
  5296.  
  5297. 26
  5298.  
  5299. USLUGE WEBA
  5300. (WEB SERVICES)
  5301. Definicije
  5302. SOAP
  5303. WSDL
  5304. Usluge Weba 2.0
  5305.  
  5306. 27
  5307.  
  5308. Web Services Description
  5309. Language (WSDL)
  5310. • Web Services Description Language WSDL
  5311. – jezik za opis usluga weba
  5312. • Usluga weba opisana skupom komunikacijskih
  5313. krajnjih točaka (ports)
  5314. • Krajnja točka se sastoji od dva dijela:
  5315. – apstraktne definicije operacija i poruka
  5316. – specifikacije mrežnog protokola i pojedine
  5317. krajnje točke te formata poruke
  5318. • Opisuje komunikacijske detalje između klijenta
  5319. i usluge
  5320. – strojevi (računala) mogu pročitati WSDL
  5321. – mogu pozvati uslugu definiranu WSDL-om
  5322. • Jedan je od mehanizama koji omogućuje da se
  5323. usluga može otkriti pomoću registra
  5324. 28
  5325.  
  5326. WSDL kao norma
  5327. • WSDL 1.1
  5328. – Web Services Definition Language
  5329. – kao norma predložen 2000. (Microsoft, IBM, Aruba
  5330. …)
  5331. – W3C preporuka 2001.
  5332. • WSDL 2.0
  5333. – W3C preporuka 2007.
  5334. – razlike:
  5335.  
  5336. semantika (viša razina)
  5337. pojednostavljenje poruka
  5338. ukidanje podrške za preopterećenje
  5339. preimenovanje pojedinih ključnih riječi (sučelja, zaključne
  5340. točke ...)
  5341. • može koristiti sve metode zahtjeva HTTP (ne samo GET i
  5342. POST)
  5343.  
  5344. • U širokoj primjeni su još uvijek obje norme
  5345. 29
  5346.  
  5347. WSDL – ključni dijelovi usluge
  5348. • WSDL opisuje 4 ključna dijela svake usluge:
  5349. – sučelja usluge
  5350.  
  5351. • definiraju sve javno dostupne funkcije koje usluga
  5352. može pružiti korisnicima
  5353.  
  5354. – oblik podataka
  5355.  
  5356. • format za korištenje u svim porukama koje se
  5357. razmjenjuju
  5358.  
  5359. – protokol
  5360.  
  5361. • za pristup usluzi
  5362.  
  5363. – adresne informacije
  5364.  
  5365. • kako bi se usluga mogla pronaći i početi koristiti
  5366.  
  5367. • Svaki WSDL dokument ima 2 dijela:
  5368. – apstraktni opis usluge – općenito
  5369. – konkretni opis usluge – detaljno dijelovi usluge
  5370. 30
  5371.  
  5372. WSDL 1.1 i WSDL 2.0 – usporedba
  5373. strukture
  5374. WSDL 1.1
  5375.  
  5376. WSDL 2.0
  5377.  
  5378. definition
  5379.  
  5380. description
  5381.  
  5382. types
  5383.  
  5384. types
  5385.  
  5386. operation
  5387. input
  5388. output
  5389.  
  5390. interface
  5391. operation
  5392. input
  5393. output
  5394.  
  5395. binding
  5396.  
  5397. binding
  5398.  
  5399. service
  5400. port
  5401.  
  5402. service
  5403. endpoint
  5404.  
  5405. Konkretni
  5406. opis
  5407.  
  5408. portType
  5409.  
  5410. Apstraktni
  5411. opis
  5412.  
  5413. message
  5414.  
  5415. 31
  5416.  
  5417. WSDL – dijelovi opisa usluge
  5418. • 6 dijelova opisa usluge Weba:
  5419. – description (definition)
  5420. – types
  5421. – message
  5422. – interface (portType)
  5423. – binding
  5424. – service
  5425. WSDL 1.1
  5426.  
  5427. WSDL 2.0
  5428.  
  5429. definition
  5430.  
  5431. description
  5432.  
  5433. types
  5434.  
  5435. types
  5436.  
  5437. operation
  5438. input
  5439. output
  5440.  
  5441. interface
  5442. operation
  5443. input
  5444. output
  5445.  
  5446. binding
  5447.  
  5448. binding
  5449.  
  5450. service
  5451. port
  5452.  
  5453. service
  5454. endpoint
  5455.  
  5456. Konkretni
  5457. opis
  5458.  
  5459. portType
  5460.  
  5461. Apstraktni
  5462. opis
  5463.  
  5464. message
  5465.  
  5466. 32
  5467.  
  5468. WSDL – primjer
  5469. <?xml version="1.0" encoding="utf-8" ?>
  5470. <description
  5471. xmlns="http://www.w3.org/ns/wsdl"
  5472. targetNamespace= "http://greath.example.com/2004/wsdl/resSvc"
  5473. xmlns:tns= "http://greath.example.com/2004/wsdl/resSvc"
  5474. xmlns:ghns = "http://greath.example.com/2004/schemas/resSvc"
  5475. xmlns:wsoap= "http://www.w3.org/ns/wsdl/soap"
  5476. xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
  5477. xmlns:wsdlx= "http://www.w3.org/ns/wsdl-extensions">
  5478. <documentation> This document describes ... </documentation>
  5479. <types>
  5480. <xs:schema
  5481. xmlns:xs="http://www.w3.org/2001/XMLSchema"
  5482. targetNamespace="http://greath.example.com/2004/schemas/resSvc"
  5483. xmlns="http://greath.example.com/2004/schemas/resSvc">
  5484. <xs:element name="checkAvailability" type="tCheckAvailability"/>
  5485. <xs:complexType name="tCheckAvailability">
  5486. <xs:sequence>
  5487. <xs:element name="checkInDate" type="xs:date"/>
  5488. <xs:element name="checkOutDate" type="xs:date"/>
  5489. <xs:element name="roomType" type="xs:string"/>
  5490. </xs:sequence>
  5491. </xs:complexType>
  5492. <xs:element name="checkAvailabilityResponse" type="xs:double"/>
  5493. <xs:element name="invalidDataError" type="xs:string"/>
  5494. </xs:schema>
  5495. </types>
  5496.  
  5497. <interface name = "reservationInterface" >
  5498. <fault name = "invalidDataFault"
  5499. element = "ghns:invalidDataError"/>
  5500. <operation name="opCheckAvailability"
  5501. pattern="http://www.w3.org/ns/wsdl/in-out"
  5502. style="http://www.w3.org/ns/wsdl/style/iri"
  5503. wsdlx:safe = "true">
  5504. <input messageLabel="In"
  5505. element="ghns:checkAvailability" />
  5506. <output messageLabel="Out"
  5507. element="ghns:checkAvailabilityResponse" />
  5508. <outfault ref="tns:invalidDataFault" messageLabel="Out"/>
  5509. </operation>
  5510. </interface>
  5511. <binding name="reservationSOAPBinding"
  5512. interface="tns:reservationInterface"
  5513. type="http://www.w3.org/ns/wsdl/soap"
  5514. wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/">
  5515. <fault ref="tns:invalidDataFault"
  5516. wsoap:code="soap:Sender"/>
  5517. <operation ref="tns:opCheckAvailability"
  5518. wsoap:mep="http://www.w3.org/2003/05/soap/mep/soap-response"/>
  5519. </binding>
  5520. <service name="reservationService" interface="tns:reservationInterface">
  5521. <endpoint name="reservationEndpoint"
  5522. binding="tns:reservationSOAPBinding"
  5523. address ="http://greath.example.com/2004/reservation"/>
  5524. </service>
  5525. </description>
  5526.  
  5527. 33
  5528.  
  5529. WSDL element – description
  5530. • Glavni element description
  5531. – kod WSDL 1.1 definition
  5532. – definira se naziv usluge Weba
  5533. – označuju se prostori naziva (namespace) koji
  5534. se koriste za opis funkcionalnosti usluge
  5535. • definicija osnovnog prostora naziva
  5536. – za sve elemente bez prefiksa
  5537. – xmlns=http://www.w3.org/ns/wsdl
  5538.  
  5539. • definicija dodatnih prostora naziva
  5540.  
  5541. – npr. ciljni prostor (target namespace), soap, soapenvelope, wsdlx
  5542. – prostori naziva pod nadzorom vlasnika usluge
  5543. (autoritativni izvor)
  5544.  
  5545. – zatvara sve ostale dijelove opisa usluge
  5546. – mora se nalaziti na početku (root element)
  5547.  
  5548. 34
  5549.  
  5550. WSDL element – types
  5551. • Element types
  5552. – opisuje sve tipove podataka koji će se
  5553. koristiti tijekom izvođenja usluge Weba
  5554. – navodi se XML Schema koja će se koristiti
  5555. unutar dokumenta
  5556.  
  5557. • ako se koristi standardna W3C XML Schema i u
  5558. njoj definirani jednostavni tipovi podataka
  5559. (integer, String …), oni se podrazumijevaju te ih
  5560. ne treba posebno definirati
  5561.  
  5562. • Dva načina kreiranja poruka:
  5563. – kao dijete elementa description
  5564. – korištenjem mehanizma import u XML
  5565. Schemi
  5566. • Svaka poruka – jedan element element
  5567. – npr. <xs:element name="ime" type="tip"/>
  5568.  
  5569. 35
  5570.  
  5571. WSDL element – message
  5572. • Element message
  5573. – samo u WSDL 1.1, izdvojen kao zasebna
  5574. cjelina
  5575. – u WSDL 2.0 ga nema - za poruke se koristi
  5576. XML Schema
  5577. – opisuje poruku
  5578. • ne vodi brigu hoće li poruka biti poslana ili
  5579. primljena
  5580.  
  5581. – definira se naziv poruke
  5582. – definira se nijedan, jedan ili više dijelova
  5583. poruke
  5584. • specificiraju se parametri same poruke ili
  5585. očekivani segmenti odgovora na poruku
  5586. 36
  5587.  
  5588. WSDL elementi – interface i
  5589. portType
  5590. • Elementi interface i portType
  5591. – apstraktni opis sučelja usluge
  5592. • razlika WSDL 1.1 i WSDL 2.0
  5593.  
  5594. – naziv sučelja i operacije
  5595. • bez razmaka i dvotočke
  5596.  
  5597. – definiranje operacije koje usluga može
  5598. izvesti
  5599.  
  5600. • svaka operacija definirana pomoću svojih ulaza i
  5601. izlaza
  5602. • opis slijeda poruka (pattern) koje će se
  5603. razmjenjivati
  5604.  
  5605. – unutar jednog elementa moguće definirati
  5606. više operacija
  5607. • onoliko koliko će ih usluga pružati svojim
  5608. korisnicima
  5609.  
  5610. 37
  5611.  
  5612. WSDL elementi – binding i
  5613. service
  5614.  
  5615. Element binding
  5616. – konkretan način izvedbe usluge
  5617. – način korištenja i izgled poruke SOAP
  5618.  
  5619. • za svaku poruku definiranog sučelja (interface)
  5620.  
  5621. – definicija protokola koji se koristi za slanje
  5622.  
  5623. • za SOAP type="http://www.w3.org/ns/wsdl/soap"
  5624. • za HTTP
  5625.  
  5626. wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/"
  5627.  
  5628.  
  5629. Element service
  5630. – definira adresu usluge
  5631.  
  5632. • najčešće URL na kojemu je dostupna funkcionalnost usluge
  5633. • npr. address ="http://www.racunarstvo.hr/reservation"
  5634.  
  5635. – jedno sučelje i lista završnih točaka (endpoints)
  5636.  
  5637. • informacija o korištenim protokolima i prijenosnim oblicima za
  5638. svaku točku
  5639.  
  5640. – naziv usluge i završne točke moraju biti jedinstveni u
  5641. prostoru naziva
  5642.  
  5643. 38
  5644.  
  5645. Prednosti i nedostaci WSDL-a
  5646.  
  5647.  
  5648. Na jednostavan način precizno definira korištenje i pristup
  5649. usluzi
  5650. – no WSDL opis nije dovoljan na semantičkoj razini
  5651. WSDL daje samo osnovni način korištenja usluge
  5652. – informacije o tipovima i obliku poruka te sučelja
  5653. usluge (protokole i adrese)
  5654. Za potpuno razumijevanje načina funkcioniranja usluge
  5655. treba dodatno definirati dokumentaciju o usluzi
  5656. – može uključivati svrhu i način korištenja usluge
  5657. – stvarno značenje svih poruka koje se koriste
  5658. – ograničenja u radu usluge
  5659. – ostale informacije korisniku kako bi razumio i ispravno
  5660. koristio uslugu
  5661. Element documentation (WSDL 2.0)
  5662. – kreiranje ljudima čitljivog opisa usluge
  5663. – često poveznica na vanjski poslužitelj (URL) s detaljnim
  5664. informacijama
  5665. – može poslužiti razvijateljima klijentskih aplikacija
  5666.  
  5667. 39
  5668.  
  5669. Web Service Semantics –
  5670. WSDL-S
  5671. • Cilj: riješiti problem što bržeg
  5672. (automatiziranog) razumijevanja o kojoj je
  5673. funkcionalnosti riječ u pronađenoj usluzi
  5674. • Web Service Semantics – WSDL-S
  5675. – skupina autora Sveučilišta u Georgiji
  5676. – definicija odgovarajućeg semantičkog
  5677. modela
  5678. – uključivanje semantičkog modela u opis
  5679. usluge
  5680.  
  5681. • ne mijenja strukturu WSDL-a
  5682. • nema problema s nekompatibilnosti (korištenje,
  5683. alati ...)
  5684.  
  5685. – za ontologiju se koristi OWL-S
  5686. – definira značenje, preduvjete za rad, ulaze
  5687. i izlaze, učinke izvedbe …
  5688.  
  5689. 40
  5690.  
  5691. USLUGE WEBA
  5692. (WEB SERVICES)
  5693. Definicije
  5694. SOAP
  5695. WSDL
  5696. Usluge Weba 2.0
  5697.  
  5698. 41
  5699.  
  5700. Razvoj standarda usluga Weba
  5701. • Prva generacija usluga Weba nije bila posve integrirana
  5702. – razmjerno teško uključiti druge tvrtke u njihovo
  5703. korištenje
  5704. – uočen velik prostor za različita poboljšanja
  5705. • U međuvremenu prijedlog velikog broja specifikacija
  5706. „usluga Weba druge generacije”
  5707. – usmjereni na rješavanje pojedinih pitanja
  5708. – često sudjelovali veliki proizvođači softvera
  5709.  
  5710. • nove prijedloge specifikacija su odmah i ugradili u svoje
  5711. alate
  5712.  
  5713. – stvorena je početna baza korisnika, s vremenom
  5714. proširena
  5715. • Jedan od glavnih ciljeva uspostave druge generacije
  5716. usluga Weba bilo je stvaranje temelja za tzv. poduzeća
  5717. usmjerenog uslugama (service-oriented enterprise)
  5718. 42
  5719.  
  5720. Temelj poduzeća usmjerenog
  5721. uslugama
  5722.  
  5723. Poduzeće usmjereno uslugama
  5724.  
  5725. – koncentrirano na uslugu – primaran generator nove
  5726. vrijednosti koje to poduzeće stvara
  5727.  
  5728. • donji sloj primarno usmjeren prema sigurnosti
  5729. • gornji sloj namijenjen za integraciju s poslovnim sustavima
  5730. poduzeća partnera
  5731.  
  5732. Sigurnost uslužno
  5733. orijentirane
  5734. aplikacije
  5735.  
  5736. Uslužno
  5737. orijentirana
  5738. integracijska
  5739. arhitektura
  5740.  
  5741. Uslužno
  5742. orijentirana
  5743. arhitektura
  5744. poduzeća
  5745.  
  5746. Model uslužno orijentirane sigurnosti (SOS)
  5747.  
  5748. ...
  5749.  
  5750. WS-Coordination
  5751. WS-Transaction
  5752. WS-ReliableMessaging
  5753. BPEL4WS
  5754. WS-Attachments
  5755. WS-Policy
  5756.  
  5757. WS-Security
  5758. XACML,XrML,XKMS
  5759. SAML, .NET Passport
  5760. SSL
  5761. XML-Encryption
  5762. XML-Digital Signatures
  5763. WS-Trust
  5764. WS-Privacy
  5765. WS-SecureConversation
  5766. WS-Federation
  5767. WS-Authorisation
  5768.  
  5769. 43
  5770.  
  5771. Usluge Weba druge generacije
  5772. • Specifikacije usluga Weba druge generacije –
  5773. WS-*
  5774. – čita se kao "WS-Star"
  5775. – osnovna namjena – povećati stupanj
  5776. automatizacije poslovnog procesa
  5777. • u odnosu na usluge Weba prve generacije
  5778.  
  5779. • Udruga WS-I (Web Services Interoperability
  5780. Organization)
  5781. – pokretač razvoja specifikacija usluga Weba
  5782. druge generacije
  5783. – sredinom 2010. združena s OASIS
  5784.  
  5785. 44
  5786.  
  5787. WS-* primjer – informacija o
  5788. stanju
  5789.  
  5790.  
  5791.  
  5792. Mogućnost zadržavanja informacije o stanju u kojem se usluga
  5793. nalazila u nekom trenutku njezina izvođenja
  5794. – praćenje stanja i jasan kontekst u kojem se usluga odvija –
  5795. osnova za izvođenje raspodijeljenih transakcija
  5796. – transakcijski mehanizmi zahtijevaju statefull usluge
  5797. Specifikacija WS-Coordination – mehanizmi pomoću kojih usluga
  5798. može sačuvati kontekst u kojem se odvija neka njezina aktivnost
  5799. – novi koordinacijski model za usluge
  5800. – sastoji od jednostavnih usluga odgovornih za kreiranje konteksta,
  5801. odabira protokola te registracije koordinatora kontekstom
  5802. – mogućnost korištenja definicije Coordination Type
  5803. Specifikacija WS-Transaction definira dva različita koordinacijska
  5804. tipa:
  5805. – za kratkotrajne atomične transakcije
  5806. • zasebna specifikacija WS-AtomicTransaction – osigurava koordinacijske
  5807. protokole za provođenje širokog spektra transakcija poslovnih aktivnosti i
  5808. podršku za jezike za modeliranje poslovnih procesa
  5809.  
  5810. – za dugotrajne poslovne aktivnosti
  5811.  
  5812. 45
  5813.  
  5814. WS-* primjer – poslovni
  5815. procesi
  5816. • Definicija jezika za pretvaranje poslovnog procesa
  5817. pomoću strukturiranog dijagrama toka u uslugu Weba
  5818. • Jezik Business Process Execution Language for Web
  5819. Services (BPEL4WS)
  5820. – opis poslovnog procesa – slijed događaja zasnovan
  5821. na predefiniranim uvjetima i ugrađenoj logici
  5822. – definira rječnik koji omogućuje da opis nekog
  5823. poslovnog procesa bude prenesen u oblik izvršivih
  5824. skripta
  5825. – skripte se izvode najčešće u nekom obliku procesa
  5826. orkestracije
  5827. – osnovne aktivnosti – jednostavni događaji
  5828. • receive, invoke, reply, throw, wait
  5829.  
  5830. – strukturirane aktivnosti – kreiranje dijelova
  5831. poslovne logike
  5832. • sequence, flow, switch, while
  5833.  
  5834. 46
  5835.  
  5836. WS-* primjer – sigurnost
  5837.  
  5838. Slaba podrška usluga Weba prve generacije za bilo kakav
  5839. oblik sigurnosti
  5840. – osim osnovnih mehanizama (nisu dio norme)
  5841. – korištenje drugih dostupnih mehanizama
  5842. – problemi s javnim objavama i korištenjem od korisnika
  5843. Interneta
  5844. • pogotovo ako je izložen dio vlastitog poslovnog procesa
  5845.  
  5846.  
  5847. Specifikacija WS-Security – uvodi cjelovit model sigurnosti
  5848. temeljen na mnoštvu komplementarnih normi
  5849. – osigurava sigurnosne mjere
  5850.  
  5851. • sigurnost SOAP poruka na cijelom njihovom putu
  5852. • uspostavljanje stupnja povjerenja među stranama koje koriste i
  5853. kreiraju usluge
  5854.  
  5855. – u velikoj mjeri se oslanja na veći broj XML sigurnosnih
  5856. normi, npr.
  5857. • XML Key Management (XKMS)
  5858. • Extensible Access Control Markup Language (XACML)
  5859.  
  5860. 47
  5861.  
  5862. WS-* primjer – pouzdanost i
  5863. sigurnost isporuke
  5864. • Načinu isporuke poruka u sustavu – pouzdanost
  5865. – osigurati potvrdu o prispijeću poruke na odredište
  5866. • Specifikacija WS-ReliableMessaging – pouzdanost
  5867. isporuke poruka
  5868. – definira pravila za isporuku poruka
  5869. – definira redoslijed dostavljanja poruka na odredište
  5870. – oslanja se na poslovna pravila o načinu izvješćivanja o
  5871. dostavljenoj poruci (specifikaciju WS-Policy)
  5872. • Specifikacija WS-Policy
  5873. zajedno s WS-PolicyAssertion i WS-PolicyAttachments
  5874. – skup vlastitih poslovnih pravila, sigurnosnih
  5875. politika i ostalih propisanih postupaka objedinjeni
  5876. u jedinstvenom skupu politika
  5877. – osigurati uspostavu politika
  5878. • korištenjem policy konstruktora
  5879. • uspostavom osiguranja dostave uspostavljenih politika
  5880. • dodavanjem postojećih konstrukta u kreirane politike
  5881.  
  5882. 48
  5883.  
  5884. WS-* primjer – različiti oblici
  5885. podataka
  5886. • Protokolom SOAP nije moguće prenijeti baš sve
  5887. oblike podataka
  5888. • Specifikacija WS-Attachments – tipove podataka
  5889. koje tradicionalno nije moguće prenijeti putem
  5890. SOAP-a pretvara u privitke (attachments) klasičnim
  5891. SOAP porukama
  5892. – prijenos binarnih datoteka i drugih XML
  5893. dokumenata
  5894. – koristi učahurivanje DIME (Direct Internet
  5895. Message Encapsulation)
  5896. • jednostavniji oblik za učahurivanje podataka od MIME
  5897. • prikladniji za uporabu s porukama SOAP
  5898.  
  5899. • Specifikacija SOAP Messages with Attachments
  5900. (SwA)
  5901. – koristi učahurivanje MIME
  5902.  
  5903. 49
  5904.  
  5905. WS-* primjer – razine
  5906. interoperabilnost
  5907. • Specifikacija WS-Basic Profile (WS-BP)
  5908. – još od 2002.
  5909. – trenutno aktualna inačica WS-Basic Profile 2.0 iz
  5910. 2010.
  5911. • koristi SOAP 1.2, UDDI 3 i WS-Addressing
  5912.  
  5913. – lista dostupnih specifikacija za usluge Weba po
  5914. inačicama
  5915. • svaka inačica nije nužno kompatibilna s onom
  5916. prethodnom
  5917.  
  5918. – smjernice za implementaciju interoperabilnih
  5919. usluga Weba
  5920. – ne prejudicira koji će se od raspoloživih normi
  5921. koristiti za razvoj usluge Weba
  5922. – dostupan u velikom broju različitih tehnoloških
  5923. rješenja (Java, .NET … - SAP, Oracle, Microsoft,
  5924. IBM, Apache, SpringWS, Software AG …)
  5925. 50
  5926.  
  5927. WS-* – kako?
  5928. • Jedna od glavnih ideja razvoja sustava
  5929. usmjerenih uslugama je mogućnost
  5930. njihova „slaganja”
  5931. – sastavljanja složenijih usluga iz
  5932. proizvoljnog broja jednostavnih usluga
  5933. – usluge dostupne putem registra, kreirane
  5934. od različitih pružatelja usluga
  5935. • Cilj: izraditi složene usluge što učinkovitije
  5936. i bolje usmjerene prema cilju
  5937. automatizacije poslovnih procesa
  5938. 51
  5939.  
  5940. WS-* – kako?
  5941. • Pravila projektiranja usluge Weba:
  5942. – ograničiti korištenje specifikacija usluga
  5943. Weba samo na nužne
  5944. – izvesti samo one dijelove specifikacije koji
  5945. su potrebni za nesmetani rad
  5946. – ne opterećivati nepotrebnim
  5947. informacijama u zaglavlju SOAP
  5948. • Jedan od glavnih zadataka uspješnog dizajna
  5949. usluga Weba druge generacije je poznavanje
  5950. specifikacija
  5951. – na temelju iskustva uspješno se može
  5952. procijeniti koje od (brojnih) specifikacija i
  5953. njihovih dijelova treba koristiti
  5954. 52
  5955.  
  5956. Odnosi specifikacija
  5957. SOAP
  5958. koristi
  5959.  
  5960. upravlja
  5961. kontekstom
  5962.  
  5963. u
  5964.  
  5965. i zm
  5966.  
  5967. uzdanu dost
  5968. avu
  5969.  
  5970. ac
  5971. nik
  5972. mu
  5973.  
  5974. Usluge Weba
  5975.  
  5976. koristi
  5977.  
  5978. WSCoordination
  5979.  
  5980. ću
  5981.  
  5982. je
  5983.  
  5984. ko
  5985.  
  5986. orkestrira
  5987.  
  5988. osigurava po
  5989.  
  5990. e
  5991.  
  5992. gu
  5993.  
  5994. uj
  5995.  
  5996. opisuje
  5997.  
  5998. Om
  5999. o
  6000.  
  6001. is
  6002.  
  6003. za
  6004.  
  6005. ko r
  6006. isti
  6007.  
  6008. op
  6009.  
  6010. l
  6011.  
  6012. WSDL
  6013.  
  6014. p
  6015. p o o ve
  6016. u z ća
  6017. d a va
  6018. no
  6019. st
  6020.  
  6021. o
  6022. ra mog
  6023. sp
  6024. u
  6025. osigu
  6026. tra odije ćava
  6027. rava
  6028. n
  6029. s
  6030. sigur
  6031. kc l j e n e
  6032. n o st
  6033. ije
  6034. s kra
  6035. ja na
  6036. kraj
  6037.  
  6038. WSReliableMessaging
  6039.  
  6040. vl j a
  6041.  
  6042. ris
  6043. ti
  6044.  
  6045. WSTransaction
  6046.  
  6047. ko
  6048.  
  6049. ko l
  6050.  
  6051. upravlja
  6052. kontekstom
  6053.  
  6054. us
  6055.  
  6056. u
  6057. ug
  6058.  
  6059. na
  6060.  
  6061. iju
  6062.  
  6063. opisuje
  6064. uslugu za
  6065.  
  6066. BPEL4WS
  6067.  
  6068. ž
  6069.  
  6070. e
  6071. es
  6072.  
  6073. upra
  6074.  
  6075. – samo rijetke usluge Weba
  6076. zahtijevaju
  6077. implementaciju svih
  6078. spomenutih specifikacija
  6079. – koriste se samo neke
  6080. specifikacije
  6081.  
  6082. pristupa mu
  6083. se
  6084. korištenjem
  6085.  
  6086. ve
  6087.  
  6088. osigurava
  6089. protokole
  6090.  
  6091.  
  6092. koristi
  6093.  
  6094. va proto
  6095.  
  6096.  
  6097. UDDI
  6098.  
  6099. ću j e
  6100. ogu
  6101. om rivanje
  6102. otk
  6103.  
  6104.  
  6105. Prvotno jednostavan
  6106. sustav se dosta
  6107. zakomplicirao
  6108. Svaka nova specifikacija
  6109. omogućuje rješavanje
  6110. određenog problema
  6111. Međusobni odnos
  6112. nekih specifikacija
  6113. usluga Weba druge
  6114. generacije prema
  6115. komponentama poznatim
  6116. iz prve generacije (sivo)
  6117. Ovisno o funkcionalnosti
  6118. konkretne implementacije
  6119. usluge Weba slika će
  6120. izgledati bitno
  6121. jednostavnije
  6122.  
  6123. osigura
  6124.  
  6125.  
  6126. WS-Policy
  6127.  
  6128. ti
  6129. koris
  6130. WS-Security
  6131.  
  6132. 53
  6133.  
  6134.  
  6135.  
Add Comment
Please, Sign In to add comment