Klijent server Sistemi skripta 1.čas Mnogi teoretičari smatraju da je pronalazak računara jedan od najvrednijih pronalazaka čovečanstva koji je u potpunosti promenio i unapredio život čoveka. Može se slobodno reći da gotovo da nema ni jedne oblasti ljudskog stvaralštva u kojoj računari nisu uzeli dominantnu ulogu. U takvim okolnostima pojavili su se važni zahtevi za računarsku nauku kao i njenu primenu u ljudskom stvaralaštvu kao što su: Potreba za međusobnom razmenom informacija između računara. Zahtev da se smanji cena i vreme razvoja neke aplikacije. Zahtev da se smanje ukupni troškovi kako razvoja tako i uvođenja i obuke osoblja sa aplikacijom. Potreba da se pored informacija razmenjuju i aplikativni programi nezavisno od hardvera i lokacije računara, Svi ovi zahtevi, koji su se iskazali još u ranim sedamdesetim godinama, rešavani su dugo tako da imamo puno različitih rešenja. Međutim sve su to bila parcijalna rešenja koja su zadovoljavala zahteve proizvođaća ali ne i korisnike tih rešenja. Naime, u cilju zaštite svojih investicija, razvoja i proizvodnje, proizvođači računarske opreme dosledno su se držali čuvanja industrijske tajne pokušavajući da na taj način vežu svoje korisnike samo za sebe. Takvi računarski sistemi, koji su napravljeni u specifičnoj tehnologiji poznatoj samo proizvođaču, sa neizbežnim sistemskim softverom, nazivaju se zatvoreni sistemi. Međutim ovakvi sistemi nisu moglu u potpunosti da zadovolje sve veće i veće zahteve korisnika ovih sistema, tako da su vremenom obe strane i korisnici i dobavljači postajali sve nezadovoljniji. Naime,sve veći zahtevi korisnika postajali su sve veći teret dobavljača/proizvođača ove opreme, koji je sada, da bi zadovoljio zahteve, morao da sve više ulaže u razvoj novih tehnologija. Sve te investicije nisu uvek donele i profit novog proizvoda, tako da su mnogi dobavljači počeli da posluju sa gubitcima. Pored toga primena novih proizvoda i rešenja, zahtevali su i određeni vremenski period za razvoj, testiranje i proizvodnju konačnog proizvoda. Za sve to vreme korisnici su stalno ’’gunđali’’ tražeći da dobiju proizvod koji su papreno platili. U takvoj situaciji dobavljaći su često isporućivali nedovoljno završene i testirane proizvode koji su još više izazivali nezadovoljstvo korisnika. Sa druge strane korisnici, da bi mogli da ostvare profit, morali su da prate nove tehnologije i da stalno ulažu u nove proizvode koji nisu adekvatno zadovoljavali njihove zahteve kako po ceni i vremenu, tako i po kvalitetu pouzdanosti i njihovog rada. Do pojave otvorenih sistema računarska industrija je bila više zavisna od sopstvene tehnologije, nego od zahteva tržišta. Važila su dva osnovna principa i to: ljubomornog čuvanja sopstvenog proizvoda i prodaje na način ’’imam proizvod-treba ga prodati’’. Na slici broj 1. prikazani su marketinški porivi koji su doveli do promene strategije u proizvodnji računarskih sistema i velikog ulaska otvorene strategije.
1
Proizvođači ure đaja VAR
ZATVORENI SISTEMI Proizvođači hardvera
Komercijalni korisnici OTVORENI SISTEMI
Specijalni korisnici
Proizvođači softvera Istraživanje Razvoj
Slika broj 1. Danas je savim jasno da računarska industrija mora pronaći način da se razvoj i upotreba informacionih tehnologija mora odvijati potpuno sinhronizovano. Jedini način da se to uradi je uvođenje i primena međunarodnih standarda za informacione tehnologije koje će tačno definisati potrebe i zahteve tržišta, a koje trebaju da zadovolje svi budući proizvodi. U tom smislu potrebno je jasno definisati tri osnovne karakteristike otvorenih sistema: 1. Portabilnost – predstavalja prenosivost aplikativnog softvera između različitih računara bez dodatnih zahteva na menjanju izvornog koda. 2. Skalabilnost - zahteva da se aplikacije mogu izvršavati na različitim generacijama računara, tj. drugim rčima aplikacija koja radi na PC 386 računarima mora da radi i na Pentium IV računarima. 3. Interoperabilnost – omogućuje da postoji veza izmedju novih i starih tehnologija, tj. Nove tehnologije mogu se instalirati i na starim rešenjima bez nekog dodatnog ulaganja i promene cele infrastrukture. Takođe, ona podrazumeva da računari različitih proizvođača koji imaju različiti hardver i sistemski softver, mogu nesmetano da komuniciraju bez obzira na njihovu udaljenost i računarsku snagu. Kada neki sistem zadovoljava ove tri nabrojane karakteristike: portabilnost, skalabilnost i interoperabilnost, kao i kada postoje unapred doneti otvoreni međunarodni standardi, u kojima svako zainteresovan može da učestvuje, kao i kada su ti rezultati svima dostupni,kažemo da se radi o komponenti otvorenog sistema. Skup više ovakvih komonenti čini otvoreni sistem. Kada razgovaramo o prednosti otvorenih sistema nad zatvorenim potrebno je da razmotrimo: 1. Performanse – jasno je da su otvoreni sistemi sporiji ali su zato prilagodljiviji i gledano dugoročno mnogo isplativiji 2. Cena – zbog veće konkurencije jasno je da je cena otvorenih sistema manja ali treba imati u vidu i cenu prelaska sa zatvorenih na otvorene sisteme. Gledano dugoročno i tu su u prednosti otvoreni sistemi. 3. Izbor – sve je veći broj kupaca koji znaju šta hoće da kupe pa je prema tome veći izbor, koji je prisutan kod otvorenih sistema jedna velika prednost. 4. Progres – kod otvorenih isstema to je uvek otvoren proces jer se oni stalno razvijaju i dopunjuju . 5. Prelazak – jasno je da se cena prelaska sa zatvorenih na otvorene sisteme jednom mora platiti ali kao što je ranije rečeno dugoročno se to isplati. 6. Sigurnost – ovo je jedini faktor koji je diskutabilan jer kod otvorenih sistema je svakom sve dostupno tj. sve se može pronači u literaturi. Kako uvek ima ljudi koji žele da naškode drugima, bilo da pokvare ili ukradu, ovo je jedini parametar koji ide u prilog zatvorenih sistema. 2
3
2 čas Proces standardizacije Danas u svetu postoje mnoge organizacije koje imaju važan uticaj na razvoj standarda i u principu mogu se podeliti na tri grupe: javne, korisnčke i industrijske. Kada se govori o standardima onda treba reći da postoje dve vrste standarda i to : de facro i de jure koji predstavljaju latinske izraze za “u stvarnosti” i “po zakonu“, respektivno. De jure standardi su javni standardi koji su stalno podložni otvorenom procesu u kome svako može da učestvuje i čiji su rezultati svima dostupni. Ovakav standard se usvaja tek kada se o svim pitanjima dogovore svi zainteresovani tj. kada se postigne konsenzus po svim pitanjima. De facto standardi su ustvari standardi koje su propisali veliki proizvođači koji su svojom dominantnom ulogom na tržištu uspeli da nametnu svoje proizvode a samim tim i postave standarde za njih ( IBM PC, Intel x86, AT&T, UNIX i td.) Može se desiti da de facto standardi pređu u javne standarde usled jakog pritiska tržišta da se to uradi ( primer UNIX-a). Na formiranje standarda puno puta pored stručnih motiva utiču i neke drugi interesi, pre svega tržišni. Baš zbog toga javne standarde možemo podeliti na minimalne, kompromisne i maksimalne. Minimalni standard je standard koji obuhvata samo one osobine proizvoda o kojima se učesnici mogu lako dogovoriti. On se javlja kao posledica postojanja više dobrih proizvoda na tržištu koji imaju dosta istih ili slićnih osobina. Međutim, između tih proizvoda postoje i velike razlike koje se prevazilaze velikom željom da se i pored tih razlika dođe do nekog opšte prihvaćenog javnog standarda. Ovakav standard je za tržište najlošije rešenje pa se ovakvi minimalni standardi prihvataju kao prelazno rešenje do završetka kompletnog otvorenog procesa. Druga krajnost je maksimalni standard koji daje mnogo bolji rezultat ali je kod njega problem što za nastajanje ovakvog standarda treba duži vremenski period kao i veće promene na proizvodima koji se već nalaze na tržištu. Iz svega ovog dolazi se do kompromisnog standarda koji su i najprisutniji na tržištu. Sve organizacije koje se bave izdavanjem javnih standarda upućene su jedne na druge tj. potrebna je velika saradnja između njih kako bi se izbeglo donošenje standarda koji bi se međusobno preklapali. Na taj način izbegava se mogućnost pojavljivanja više standarda koji bi definisali isti problem a na razlićite načine. Osnovno pravilo koje ovde važi je da se nikad ne definiše nešto zašto već postoji standard ili definicija. Donošenje nekog otvorenog standarda sastoji se iz nekoliko koraka i to: 1. RFT - izdavanja zahteva za standadizaciju novog proizvoda ili tehnologije: zahtev za novi standard 2. DP - komentarisanja predloženog standadrda: izdavanje privremenog predloga, 3. DIS - izdavanja specifikacije: izdavanje privremenog standarda 4. IS – i na kraju usaglašavnja svih pristiglih predloga: izdavanje pravog internacionalnog standarda
ORGANIZACIJA (OSF) 1 RFT (Request for technology) ZAINTERESOVANI
2
3
4
International DP DIS IS Standard Draft Draft Proposal International Standard
ZAINTERESOVANI Slika broj 2. Proces donošenja standarda
4
Konceptualni model računarskog sistema Ovaj model podeljen je na 7 nivoa i to: 7. Korisnički interfejs 6. Aplikacija 5. Programski jezici 4. Softverski alati 3. Operativni sistem 2. Hardverske komonente 1. Mikroprocesor Zajedničko aplikaciono okruženje Potreba za skupom standarda koji će obezbediti potrebne osobine otvorenih sistema prirodno vodi ka standardizaciji i okruženja u kojem se očekuje da će aplikacija biti razvijana i u kojem će raditi. Zato je i X/Open konzorcijum zadužen da definiše i razvije zajedničko aplikaciono okruženje CAE ( Common Application Environment). Njegov cilj je da obezbedi portabilnost aplikacionog softvera definisanjem tri osnovna principa koji se odnose na: zajednički korisnički interfejs, zajednički programerski interfejs i zajednički model za komunikacije. To podrazumeva jedinstveni pristup u komunikaciji između računara i čoveka, jedinstvenu sintaksu kod glavnih programskih jezika i omogučavanje svim korisnicima da mogu da komuniciraju putem mreže bez obzira na vrstu opreme kojom raspolažu. Kopletna definicija zajedničkog aplikacionog okruženja je dosta velika i neiscrpna kategorija tako da se ona stalno dopunjuje i proširava. Sve te definicije smeštene su u seriju knjiga koje pojedinačno opisuju svaki standard i koje su poznate pod imenom X/Open Portability Guide (XPG). U njima se definišu mnogi standardi koji se mogu razvrstati na sedeća područja: - strategija prelaska na otvorene sisteme, - operativni sistemi, - upravljanje podacima, - alati za razvoj aplikacija, - programski jezici, - internacionalizacija, - mreže i komunikacija, - sigurnost i administracija sistema, - interfejs između čoveka i računara. Može se slobodno konstantovati da samo oni aplikacioni programeri koji se pridržavaju svih ovih standarda i preporuka mogu računati na aplikaciju koja će biti opše prihvačena. Računarske mreže Računarska mreža predstavlja jedan komunikacioni sistem preko koga se vrši razmena informacija između više korisnika na manjim ili većim rastojanjima. Jednu mrežu možemo da posmatramo kroz više aspekata i to: njenu topologiju, protokoli za komunikaciju, električni interfejsi, tip modulacije i tip nosećeg signala, medujuma za prenos informacije i td. Topologija mreže predstavlja način na koji su povezani korisnici i mreži. Najšire mrežne topologije su : zvezda, magistrala i prsten (star, bus i ring) Prenosni mediji(kanali) razlikuju se po širini pojasa, brzini prenosa i kapacitetu kanala. Sirina pojasa(bandwith) je električna karakteristika kojom se definiše opseg između najniže i najviše frekfencije unutar kojega signal može de pređe prenosni put bez izobličenja. Brzina prenosa (baud rate) definiše broj promena elemenata ili stanja signala u jedinici vremena a kapacitet kanala je maksimalna brzina koju prenosni put može da izdrži a da se ne generiše greška u prenosu. Tehnike prenosa dele se na analogne ( koriste se digitalni signali za modulisanje nosećeg signala upotrebom aplitudne, fazne ili frekventne modulacije) i digitalna metoda prenosa gde se podrazumeva prenos digitalnog signala na njegovoj osnovnoj frekvenciji bez modulacije. Protokoli predstavljaju skupove sintaksniih i semantičkih pravila kojima se odrćuje ponašanja funkcionalnih jedinica prilikom odvijanja komunikacija. Njima se definiše kako se neka informacija 5
isporučuje, kako se pakuje da sigurno dođe do odredišta , kojim putem da ide, kako se proveravaju i otklanjaju greške u informacijama i td. Pod adresom se u komunikacijama podrazumevaju način kako predajni ili kontrolni čvor bira čvor kome će poslati poruku. Adresa nije ništa drugo veš identifikacija prijemne strane. Postoje logičke i fizičke adrese. Fizička adresa je jedinstvena adresa koja se pridružuje uz svaki uređaj koji je vezan na mrežu. Uz adrese je usko vezan i pojam domena koji predstavlja skup početnih adresa određenih grupa u nekoj većoj mreži. Repeater(pojačalo)- vrši regeneraciju signala na fizičkom i link nivou i prosleđuje ga dalej kroz prenosni sistem. Bridge(most)-razrešava nekompatibilnost između dve mreže na nižem nivou komunikacije – na nivou mrežnog protokola. Router(odašiljač)- služi da prevaziđe nekompatibilnost na nivou transportnog protokola. Gateway- služi da poveže dvr potpuno različite mreže kada su razlike prisutne i na gornjim nivoima komunikacija što se javlja kada se lokalne mreže povezuju u WAN.
Mrežni hardver Mreže se prave i od hardvera i od softvera. Mrežni hardver obezbedjuje fizičke veze izmedju različitih čvorova u mreži i tipično obuhvata: • Mrežne kartice za spregu (NIC - Network Interface Cards), po jednu za svaki PC računar; • Mredžni uredjaje, kao što su čvorišta, mostovi, usmerivači i komutatori, koji su svi zajedno odgovorni za povezivanje različitih segmenata mreže i za osiguravanje da se paketi informacija pošalju na željeno odredište; • Mrežni kablovi (oklopljeni bakarni provodnici slični telefonskim kablovima) koji povezuju svaku mrežnu karticu za spregu sa čvorištem ili prekidačem.
Mrežne kartice za spreku (NIC) Mrežne kartice za spregu, koje se obično označavaju kao NIC, koriste se da povežu PC računare sa mrežom. NIC obezbedjuje fizičku vezu izmedju mrežnog medijuma i unutrašnje magistrale računara, i odgovorna je za omogućavanje "pristupnog metoda" mreži (to su OSI slojevi 1 i 2). Većina mrežnih kartica za spregu su projektovane za odredjeni tip mreže, protokola i medijuma, mada neke od njih mogu da opsluže više mreža. Kartice su raspoložive da podrže gotovo sve mrežne standarde, ukljkučujući tu i najnovije okruženje Fast Ethernet. Mrežne kartice za Fast Ethernet su često u stanju da podržavaju 10/100 Megabita u sekundi i postaviće se automatski odgovarajuću brzinu. Druga opcija je puno dupleksno umrežavanje, gde posebna veza do prekidača omogućava da NIC radi dvostrukom brzinom.
Čvorišta/repetitori Čvorišta/repetitori se koriste da medjusobno povežu dva ili više segmenata mreže bilo koje vrste medijuma. U većim konstrukcijama, kvalitet signala počinje da se pogoršava kada segmenti predju neku maksimalnu dužinu. Čvorišta obezbedjuju pojačanje signala koje je potrebno da bi se segment produžio na veću razdaljinu. Pasivna čvorišta jednostavno usmeravaju pakete podataka koje primaju preko porta od jedne radne stanice na sve svoje preostale portove. Aktivna čvorišta, koja se ponekad takodje nazivaju i "repetitori sa više portova", regenerišu bitove podataka da bi održala jak signal. Čvorišta se takodje koriste u topologijama zvezde kao što je mreža 10BaseT. Čvorište sa više portova za upredene parice dozvoljava da se više segmenata tačka-na-tačku združi u jednu mrežu. Jedan kraj linka tačka-na-tačku je priključen na čvorište, a drugi na računar. Ako je čvorište priključeno na "kičmu", tada svi računari na kraju segmenata upredenih parica mogu da komuniciraju sa svim matičnim računarima na "kičmi". Važna činjenica koju treba zapaziti o čvorištima je da ona samo dozvoljavaju korisnicima da dele Ethernet. Mreža čvorišta/repetitora se naziva "deljeni Ethernet", što znači da se svi učesnici u mreži takmiče za prenos podataka na jednoj mreži (domen sukoba). Drugim rečima, individualni učesnici na deljenoj mreži će dobiti samo izvestan procent raspoloživog mrežnog propusnog opsega. Broj i vrsta čvorišta u bilo kom domenu sukoba za mrežu 10BaseT Ethernet ograničeni su prema sledećim pravilima: Tip mreže
Maksimalni
broj Maksimalno
6
10BaseT 10Base2 10Base5 10BaseFL
čvorova po segmentu 2 30 100 2
rastojanje po segmentu 100m 185m 500m 2000m
Dok repetitori dozvoljavaju lokalnim računarskim mrežama da se produže dalje od normalnih granica rastojanja, oni ipak ograničavaju broj čvorova koji mogu da se podrže. Medjutim, mostovi, usmerivači i prekidači dozvoljavaju lokalnim računarski mrežama da značajno porastu zbog njihove sposobnosti da podrže potpune Ethernet segmente na svakom portu.
Mostovi Mostovi su postali komercijalno raspoloživi u ranim 1980-im godinama. U vreme njihovog uvodjenja, njihova funkcija je bila da povežu razdvojene homogene mreže. Kasnije je premošćivanje različitih mreža na primer, Ethernet i Token Ring - takodje definisano i standardizovano. Mostovi su uredjaji za komunikacije podataka koji u principu rade na Sloju 2 OSI referentnog modela. Kao takvi, oni se često nazivaju uredjajima za sloj linka podataka. Mostovi preslikavaju Ethernet adrese čvorova koji su na svakom segmentu mreže i doz-voljavaju da samo neophodan saobraćaj prodje preko mosta. Kada most primi paket, on odredjuje segmente njegovog izvora i odredišta. Ako su ti segmenti isti, paket se ispušta ("filtrira"); ako su segmenti različiti, paket se sumerava na ispravan segment. Pored toga, mostovi ne usmeravaju oštećene pakete. Mostovi se takodje nazivaju uredjajima za "memorisanje i prosledjivanje", jer oni pregledaju ceo Erthernet paket pre nego što naprave odluke o filtriranju ili prosledjivanju. Filtriranje paketa i njihovo regenerisanje omogućava tehnologiji premošćavanja da podeli mrežu u odvojene domene sukoba. To dozvoljava da se u ukupnom projektu mreže koriste veća rastojanja i više repetitora. Većina mostova su uredjaji sa samoobučavanjem; oni utvrdjuju korisničke Ethernet adrese na segmentu izradjujući tabelu dok paketi prolaze kroz mrežu. Ova sposobnost samoobučavanja, medjutim, dramatično povećava mogućnost pojave mrežnih petlji u mrežama koje imaju mnogo mostova. Petlja predstavlja konfliktnu informaciju o tome na kom segmentu je smeštena odredjena adresa i prisiljava uredjaj da prosledi sav saobraćaj. Do sredine 1990-ih godina, komutaciona tehnologija kao evolucioni naslednik rešenja sprezanja viđe mreža zasnovanih na mostovima. Bolja performansa po propusnoj moći, veća gustina portova, niža cena po portu i veća fleksibilnost doprinele su pojavi komutatora kao tehnologije koja će zameniti mostove i biti komplement tehnologiji usmeravanja.
Usmerivači Usmeravanje je dostiglo komercijalnu popularnost sredinom 1980-ih godina - u vreme kada je sprezanje mreža velikog obima počelo da zamenjuje dosta jednostavna, homogena okruženja koja su do tada bila obrazac. Usmeravanje je čin pomeranja informacija preko mreža, od izvora do odredišta. Ono se često poredi sa premošćavanjem, koje izvršava sličnu funkciju. Glavna razlika izmedju ove dve tehnologije je u tome što se premošćavanje pojavljuje na Sloju 2 (sloj linka podataka) OSI referentnog modela, dok se usmeravanje pojavljuje na Sloju 3 (mrežni sloj). Ova razlika daje usmeravanju i premošćivanju različite informacije koje oni koriste u procesu pomeranja informacija od izvora do odredišta, tako da te dve funkcije ispunja-vaju svoje zadatke na različite načine. Usmerivači koriste informacije unutar svakog paketa da bi ga usmerili iz jedne lokalne računarske mreže u drugu i da komuniciraju medjusobno i dele informacije koje im dozvoljavaju da odrede najbolju putanju kroz složenu mrežu od mnogo lokalnih računarskih mreža. Da bi to izveli, usmerivači rade i održavaju "ujsmerivačke tabele", koje sadrže različite delove informacija o putanjama - zavisno od upotrebljenog algoritma za usmeravanje. Na primer, pridruživanje odredišta sledećem skoku kaže usmerivaču da dato odredište može optimalno da se dostigne ako se paket pošalje odredjenom usmerivaču koji predstavlja "sledeći skok" na putu ka konačnom odredištu. Kada usmerivač primi dolazni paket, on proverava adresu odredišta i pokušava da pridruži tu adresu sledećem skoku.
Komutatori 7
Komutatori lokalne računarske mreže su proširenje koncepta premošćivanja. Oni rade na Sloju 2 (sloj linka podataka) OSI referentnog modela, koji upravlja tokom podataka, opslužuje greške u prenosu, obezbedjuje fizičko (nasuprot logičkom) adresiranje i upravlja pristupom fizičkom medijumu. Komutatori obezbedjuju ove funkcije koristeći različite protokole sloja linka - kao što su Ethernet, Token Ring i FFDI - koji diktiraju specifične algoritme za upravljanje tokom, opsluživanje grešaka, adresiranje i pristup medijumu. Komutatori lokalnih računarskih mreža mogu medjusobno da povežu četiri, šest, deset ili više mreža i imaju dve osnovne arhitekture: prosecanje i memorisanje i prosledjivanje. U prošlosti, komutatori za prosecanje su bili brži, jer su ispitivali adresu odredišta paketa samo pre njegovog prosledjivanja na njegov odredišni segment. Komutator sa memorisanjem i prosledjivanjem, sa druge strane, prihvata i analizira ceo paket pre njegovog prosledjivanja ka odredištu. Potrebno je više vremena da se ispita ceo paket, ali to dozvoljava komutatoru da uhvati neke greške u paketu izadrži ga od daljeg prostiranja kroz mrežu. Do poznih 1990-ih godina, brzina komutatora sa memorisanjem i prosledjivanjem je uhvatila korak sa komutatorima za prosecanje, tako da je razlika izmedju njih postala minimalna. Do tada se pojavio veliki broj hibridnih komutatora koji su davali mešavinu obe ove funkcije.
Primopredajnici Primopredajnici se koriste za povezivanje čvorova na različite Ethernet medijume. Većina računara i mrežnih kartica za spregu sadrži ugradjeni primopredajnik za 10BaseT ili 10Base2, dozvoljavajući im da se direktno povežu na Ethernet vez potrebe za spoljašnjim primopredajnikom. Mnogi Ethernet uredjaji imaju AUI konektor koji dozvoljava korisniku da ih poveže na bilo koji medijum preko spoljašnjeg primopredajnika. AUI konektor se sastoji od 15-pinskog konektora, od koga je ženski deo na strani računara, a muški na strani primopredajnika. Kablovi (10BASE5) takodje koriste primopredajnike za povezivanje. Za mreže Fast Ethernet, razvijena je nova sprega zvana MII (Media Independent Interface - sprega nezavisna od medijuma) koja nudi fleksibilan način za podržavanje veza brzine od 100 Megabita u sekundi. MII je popularan način da se povežu linkovi 100Base-FX sa uredjajima za Fast Ethernet zasnovanim na bakarnim provodnicima.
Kablovi Udruženje za industruju računarskih komunikacija (CCIA) je 1985. godine zatražilo da Udruženje za elektronsku industriju (EIA) razvije generički kablovski standard za komercijalne zgrade koji bi bio u stanju da prenosi sve tadašnje i buduće mrežne sisteme preko zajedničke topologije, koristeći zajednički medijum i zajedničke konektore. Do 1987. godine više proizvodjača je razvilo opremu za Ethernet koja bi mogla da koristi telefonski kabl od upredene parice, a 1990. godine je uveden standard 802.3I Ethernet 10BaseT (gde se "T" odnosi na kabl od upredene parice). EIA je zajedno sa Udruženjem za industriju telekomunikacija (TIA) 1991. godine konačno objavila prvi standard za kablovske telekomunikacije nazvan EIA/TIA 568, čime je rodjen strukturni kablovski sistem. On je bio zasnovan na Neoklopljenom kablu sa upredenim paricama Kategorije 3 (UTP), a uskoro, posle mesec dana, pojavile su se specifikacije UTP višeg stepena, Kategorija 4 i 5. Sledeća tabela prikazuje različite vrste UTP kablova koji se najviše koriste krajem 2000. godine: Tip Karakteristike Koristi se za telefonske komunikacije i nije pogodan za Kategorija 1 prenos podataka Može da prenosi podatke brzinama do 1 Megabita u Kategorija 2 sekundi Koristi se u mrežama 10BaseT i može da prenosi Kategorija 3 podatke brzinama do 16 Megabita u sekundi Koristi se u prstenastim mrežama asa žetonom i može da Kategorija 4 prenosi podatke brzinama do 20 Megabita u sekundi Može da prenosi podatke brzinama do100 Megabita u Kategorija 5 sekundi
8
9
čas 3 TOPOLOGIJE LOKALNE MREŽE Poslednjih 30-tak godina razvijeno je više originalnih mrežnih topologija koje su sve zavisile od različitih kriterijuma i zahteva koje su trebale da zadovolje. Pre razmatranja samih toplogija potrebno je razjasniti dva pojma koja su vezana za topologiju mreža i to: 1. fizička topologija(physical topology ) koja podrazumeva raspored medijuma same mreže tj. fizičkih vodova (bakarni ili optički kablovi) i uređaja u samoj mreži. 2. logička topologija ( logical topology) koja podrazumeva logičke puteve u samoj mreži kojima se stvarno podaci kreću. U većini savremenih lokalnih mreča koriste se sledeće osnovne topologije: 1. topologija magistrale (bus topology) 2. topologija zvezde (star topology) 3. topologija prstena (ring topology) 4. topologija u obliku mreže (mesh topology) 5. mešovita topologija (hybrid topology) Topologija magistrale Jednostavna struktura magistrale bila je prva toplogija koja se koristila u Ethernet mrežama. Ona se sastoji od koaksijalnog kabla koji međusobno povezuje sve računarske komponente koje se nalaze u lokalnoj mreži. Koaksijalni kabli ima više priključaka i svaki od njih se koristi kao tačka povezivanja računarskog sistema. Priključci mogu biti direktno spojeni centralni provodnici koaksijalnih kablova ili BNC račve (T konektori). Kod ovakve realizacije logička i fizička topologija se poklapaju. Pošto se ovde radi o tehnologiji zajedničkog medijuma, javlja se potreba za postojanjem mehanizama koji će regulisati saobraćaj na tom mediju. Zato se ovde definišu dva pojma koja su vrlo bitna za odvijanje saobraćaja tj. razmene podataka između uređaja na mreži i to su: - algoritam za izbegavanje kolizije (collision avoidance) ili algoritam za detektovanje kolizije (collision detection ). - pojam emisije (broadcast ) koji definiše jaćinu signala kako bi podaci nesmetano mogli da dođu do svakog uređaja na mreži Toplogija magistrale se vrlo jednostavno realizuje i ona predstavlja dosta jevtino rećenje jer su troćkovi istaliranja kablova niski. Baš iz tog razloga ona ima i neke nedostatke koji dosta ograničavaju primenu ovakve topologije u lokalnim mrežama: - zahteva odgovarajuče završetke (terminatore) na svakom kraju magistrale kako bi se efikasno prigušili signali i sprečila njihova refleksija ili ponovna pojava prethodnog prenosa. Ukoliko su oni neodgovarajući ili ukoliko ih nema tada će saobraćaj na mreži biti vrlo spor ili ga uopšte neće biti. - sam kabli je izvor otkaza. Njegovo oštećenje ili prekid imaju negativan uticaj na celu mrežu. - instalacija novi stanica na mreži zahteva privremeni prekid na mreži. - bilo kakav problem na mreži se teško detektuje a samim tim i brzo otklanja, a sve to zahteva prekid na mreži. Zbog svih ovih nedostataka i ograničenja, topologija magistrale se obično primenjuje u najmanjim ili najjednostavnijim instalacijama lokalnih mreža. Topologija zvezde Kod ove topologije svaki čvor lokalne mreže povezan je posebnim kablom sa centralnim mestom, koje je obično razvodni orman. Svi kablovi ulaze u jednu mrežnu komponentu poznatu kao hab (hub) ili komutator (switch). Osnovna uloga ovog uređaja je da ponavlja ili komutira saobraćaj ka ostalim čvorovima mreže. Ovde su očigledni nedostaci ovakve topologije: sama mrežna komponenta je izvor otkaza a i zahteva se obimno kabliranje koje nije tako jevtino. Međutim ovakva topologija ima i velike prednosti u odnosu na topologiju magistrale koje se ogledaju u sledećem: - upravljanje mrežom je skoncetrisano oko habova i komutatora. Većina ovih komponenti poseduju svoju inteligenciju koja omogućava administratorima da vrše nadgledanje protoka
10
saobraćaja kroz ove uređaja a samim tim omogućavaju da se tačno odrede mesta zagušenja i greške u radu mreže već na nivou portova, a to znači brzo i efikasno otklanjanje problema. - Inteligentni uređaji omogućavaju da se automatski onemoguće portovi koji premašuju pragove upotrebe ili greške ćime se dodatno povećava stabilnost mreže. - kablovska instalacija ima manji uticaj i ne remeti servise lokalne mreže kada se dodaju ili uklanjaju čvorovi. - prekid kabla ili neispravan konektor eliminiše samo jedan čvor ili segment a ne sve komponente u lokalnoj mreži. - električni završetci ovde nisu ptrebni. Danas je ovakva topologija najrasprostranjenija u gotovo svim fizičkim realizacijama mreža. Topologija prstena Topologije prstena su nešto složenije za izvođenje u odnosu na topologije zvezde i topologije magistrale. Ovde čvorovi logički komuniciraju u formaciji prstena ali se zato fizička realizacija najćešće sprovodi u vidu zvezde. Ovde svaki čvor komunicira samo sa neposrednim susedima – dolaznim i odlaznim. U ovoj topologiji kontrola pristupa vrši se pomoću tokena koji se prosleđuje od čvora do čvora i koji služi kao mehanizam arbitraže. Svaki čvor čeka svoj red da zatraži korišćenje tokena koji se prosleđuje od čvora do čvora dok ne stigne do odredišnog čvora. Kada ga ovaj primi, on ga modifikuje kako bi potvrdio da ga je primio i prosledi ga dalje. Na kraju čvor pošiljalac prima paket koji je obišao ceo krug, prima potvrdu da je podatak koji je on poslao primljen i ako je sve u redu oslobađa token za prihvatanje i transport novog podatka. Prednosti ove topologije su odmah vidljive: - pristup kontrolisanim tokenom nudi širi koristan propusni opseg jer nema potrebe za korišćenjem algoritma za detekciju ili izbegavanje kolizije. - prenos paketa obavlja se u utvrđenimvremenskim intervalima tako da svaki čvor lako može da utvrdi potrebno vreme za prenos sledećeg podatka. Ovaj kvalitet prenosa je vrlo bitan u proizvodnim okruženjima gde je vremenski raspored najvažniji. - lako detektovanje greške u prenosu jer svaki čvor preoznaje koji mu je dolazni a koji odlazni čvor. Ovakva topologija iskorišćena je kod FDDI (Fiber Distributed Data Interface) – optički prenos podataka. Ovde se koriste udvojeni prstenovi gde su smerovi prosleđivanja tokena međusobno suprotni. Na taj način dobija se komunikacija koja je otporna na greške. Jedan od najvećih nedostataka ove topologije je mala brzina zbog firmvera koji je neophodan kod svake mrežne kartice a koji nam upravlja prenosom tokena. Topologija mreže Ova topologija podrazumeva preplitanje više veza između čvorova. Osnovna zamisao je da se obezbede više puteva između čvorova mreže kako bi se postigla veća pouzdanost i otpornost na greške. Ovde razlikujemo potpune (full) i delimične (partial) mreže. Potpuna mreža nije praktična jer zahteva da svi čvorovi na mreži budu vezani sa svakim čvorom što u mnogome komlikuje kabliranje. Troškovi kabliranja su veliki a negde oko 90 % svih fizičkih puteva nikada neće biti korišćeni. Delimična mreža je projektovana da obezbedi udvajanje samo onde gde je to neophodno. Na projektantu sistema je da predvidi dodatno povezivanmje koje bi obezbedilo potreban propusni opseg i otpornost na greške. Mešovita topologija Povezivanjem mrežnih uređaja habova i komutatora i korišćenjem svih do sada pomenutih topologija dobile su se mešovite topologije od kojih su najpoznatije: stablo, hijerahijska zvezda i bežićna zvezda. Stablo predstavlja kombinovanu topologiju koja grupiše radne stanice u zvezdu a te zvezde su međusobno povezane sa linearnom magistralom.Glavni problem magistrale ovde je ukonjen jer radna stanica ne može da zaustavi saobraćaj na celoj lokalnoj mreži. Radne stanice mogu da međusobno komuniciraju ćak i u slućaju da dođe do prekida glavne magistrale. Danas se za sprovođenje ovakve topologije koriste i razlićiti fizički mediji pa se tako za kabliranje magistrale koriste optički kablovi a za kabliranje zvezde UTP kablovi.
11
Hijerarhijska zvezda povezuje više habova sa priključenim stanicama pomoću centralnog haba. Sinhronizovanje i adresni prostor su odlučujući faktori o broju habova koji se povezuju u ovakvoj vrsti topologije. Usred napredtka tehnologije bežičnog prenosa pojavila se nova hibridna topologija bežične lokalne mreže gde su stanice povezane u topologiji zvezde. Pristupne tačke (acess point) povezane su zvezdu a sve radne stanice koje žele da komuniciraju moraju biti u blizini tih pristupnih tačaka.
Vrste kablova 1. Koaksijalni – BNC predstavlja kabli koji se sastoji od centralno postavljenog provodnika koji je smešten u izolacioni materijal preko koga se nalazi metalni oklop. Kako ovaj kabli zadržava sva elektomagnetna polja unmutar sebe potrebno je da se spoljni oklop uzemlji kako bi se sprećile smetnje u prenosu podataka. Koriste se dva tipa kabla i to tanki (thinnet)-10BASE-2 i debeli (thicknet) kablovi-10BASE-5. Max. brzina do 10 Mbyte. 2. UTP (Unshielded Twisted Pair)– telefonski kabl, upredena parica koja smanjuje kapacitivnost između žica i eliminiše preslušavanje između njih. Većina kablova koje se koriste u lokalnim mrežama ima četri para provodnika. Taj kabli je postao standard i označava se sa EIA/TIA568B standard kabliranja. Max. brzine 100Mbyte-1Gbyte. Kategorija 5 do 100MHz, kategorija 6 do 250 MHz i kategorija 7 do 600 MHz. 3. Optički kablovi su u mnogome razlikuju od bakarnih kablova jer se za prenos podataka koristi tehnika svetlosti koja se prenosi kroz vlakna koja su debljine dlake. Optički kablovi omogučavaju šire propusne opsege i manje gubitke signala što nam omogućava prenose podataka na razdaljinama od preko 2000m (kod bakarnih vodova to je bilo max.100m. Takođe se postižu i znatno veće brzine prenos podataka koje se kreću preko 1Gbyte. Najveći nedostatak bakarnih vodova je u tome da se sa povećanjem učestanosti signala povećavaju i gubitci pa je tako gubitak na 100MHz mnogo veći nego na 10MHz. što kod optičkih kablova to ne postoji. Optički kabli je i lakši od bakarnog i to 25% do 50%. 4. Bežične komunikacije oko 40Mbyte.
Mreža ravnopravnih računara U mrežnoj arhitekturi ravnopravnih računara (peer-to-peer, ili P2P), svaki računar (radna stanica) ima podjednake mogućnosti i odgovornosti. Nema servera, a računari su jednostavno povezani medjusobno u radnoj grupi, da bi delili datoteke, štampače i pristup Internetu. To je praktično za radne grupe od dvanaest računara ili manje, što je često u mnogim SOHO okruženjima, gde svaki PC računar radi kao nezavisna radna stanica koja pamti podatgke na svom sopstvenom čvrstom disku, ali može i da ih deli sa svim drugim PC računarima u mreži. Softver za mreže ravnopravnih računara je uključen uvećini modernih operativnih sistema za stone računare, kao što su Windows i Mac OS, bez potrebe da se kupuje specijalni "mrežni" softver.
Klijent-server Arhitekture mreža tipa klijent-server postale su popularne krajem 1980-ih i početkom 1990-ih godina, kakda su mnoge aplikacije prešle sa centralizovanih miniračunara i velikih centralnih računara na mreže personalnih računara. Projektovanje aplikacija za distribuirano računarsko okruženje zahtevalo je da one budu podeljene na dva dela: klijenta (prednji kraj) i servera (zadnji kraj). Arhitektura mreže na kojoj su one bile implementirane odslikavala je ovaj model klijent-servera pomoću korisnikovog PC računara (klijenta) koji se tipično ponašao kao mašina koja postavlja zahteve i moćnije serverske mašine - na koju je klijent bio povezan preko lokalne ili regionalne računarske mreže - koja se ponašala kao mašina koja obezbedjuje traženu uslugu. Njihova unutrašnja skalabilnost čini klijent-server mreže pogodnim za poslovanje srednjeg i velikog obima, gde se serveri po kapacitetu rangiraju u opsegu od vrhunskih PC računara do velikih centralnih računara, već prema potrebi. Klijent-server mreže zahtevaju pored normalnog operativnog sistema i dodatni softver posebnog Mrežnog operativnog sistema (NOS - Network Operating System).
12
P2P računarstvo Do početka 2000. godine dogodila se revolucija u potpuno novom obliku računarstva izmedju ravnopravnih računara P2P (peer-to-peer). Osvetljeno izuzetnim uspehom velikog broja veoma dobro reklamiranih aplikacija "P2P računarstvo" - kako se ovaj novi pristup obično naziva - najavilo je novi model računarstva za doba Interneta i postiglo je, u kratkom vremenuu, značajno privlačenje korisnika velikih centralizovanih računara i pripadnika industrije PC računara: • Aplikacija Napster MP3 za deljenje muzičkih datoteka je oživela u septembru 1999. godine i privukla je više od 20 miliona korisnika do sredine 2000. godine. • Do kraja 2000. godine, preko 100 kompanija i brojni istraživački projekti bili su angažovani na P2P računarstvu. • Do početka sledeće godine, program SETI@home, koji koristi distribuiranu obradu za analizu radioteleskopskih podataka, privukao je više od 2,6 miliona korisnika koji su uložili preko 500000 godina vremena centralne procesorske jedinice lovu na vanzemaljsku inteligenciju. P2P računarstvo obezbedjuje alternativu tradicionalnoj arhitekturi klijent-server i može jednostavno da se definiše kao deljenje računarskih resursa i usluga pomoću direktne razmene. Dok koristi postoje mreže, servere i klijentsku infrastrukuturu, P2P nudi model računarstva koji je ortogonalan na model klijent-server. Dva modela koegzistiraju, presecaju se i medjusobno komplementiraju. U modelu klijent-server, klijent postavlja zahtev serveru na koji je priključen preko mreže. Server, koji je tipično samostalan sistem, odgovara na zahteve i preduzima potrebne radnje u vezi sa njima. U P2P računarstvu, svaki učesnički računar - koji se naziva ravnopravnim uredjajem (peer) - deluje kao klijent sa slojem serverske funkcionalnosti. To omogućava ravnopravnom uredjaju da deluje istovremeno i kao klijent i kao server unutar konteksta date aplikacije. Ravnopravni uredjaj može da unese zahteve, a može i da odgovori na zahteve sa drugih uredjaja u mreži. Sposobnost direktnih razmena sa drugim korisnicima nudi brojne prednosti - tehničke i društvene - kako individualnim korisnicima tako i velikim organizacijama. Tehnički, P2P računarstvo daje mogućnost da se široko koriste veliki resursi na koje učesnici nisu direktno priključeni i koji bi inače ostali neiskorišćeni. Ovi resursi obuhvataju procesnu moć za izračunavanja velikog obima i ogromni memorijski potencijal. P2P dozvoljava eliminaciju "uskih grla" pojedinačnih uzroka. P2P može da se upotrebi za raspodelu podataka i upravljanja i za ravnotežu opterećenja zahtevima preko Interneta. Pored toga što pomaže da se optimizuje performansa, mehanizam P2P može takodje da se upotrebi za eliminaciju rizika od jedne tačke otkaza. Kada se P2P koristi unutar preduzeća, to može da zameni neke skupe funkcije centra podataka raspodeljenim uslugama izmedju samih klijenata. Memorija, za dobijanje podataka i njihove rezervne kopije, može da se smesti kod korisnika. Pored toga, infrastruktura P2P dozvoljava direktni pristup i deljeni prostor, što može da omogući sposobnost daljinskog održavanja. Privlačnost P2P računarstva je velikim delom posledica društvenih i psiholoških činilaca. Na primer, korisnici mogu lako da formiraju svojs sopstvene autonomne onlajn Internet zajednice i da ih koriste kada ih zajednički odaberu. Mnoge od ovih P2P zajednica će se stalno dinamički menjati kako korisnici dolaze i odlaze, ili su aktivni, odnosno neaktivni. Drugi korisnici će uživati u tome da zaobidju centralizovanu kontrolu. U stvari, P2P računarstvo ima moć da mnoge korisnike učini nezavisnim.
13
4 čas. Nastanak klijent server tehnologije Model klijent server sistema predstavlja prirodan nastavak razvoja otvorenih sistema koji su zadnjih 10-tak godina predstavljali dominantnu organizaciju računarskih sistema i aplikacija. Zahvaljujuči novim tehnologijama kao što su objektno orjentisano programiranje kao i GUI (Graphical User Interfaces), kao i sve većem razvoju personalnih računara, polako je vršena selidba aplikacija sa moćnih mikroračunara i mainframe-računara na desktop računare. Postoje četri uslova koja su doprinela velikom razvoju klijent serverskih sistema: 1. veliki pad cena procesora i računarskih komponenti, 2. ogormno povečanje resursa računarskih komponenti, clok procesora, memorija 3. veliki broj prilagođenih softverskih standarda, 4. veliki razvoj objektno orjentisanih tehnologija. Zadnjih godina svedoci smo, možemo slobodno reći već istorijskog trenda razvoja hardware-a računara, koji postaju sve manji, brži, snažniji a jevtiniji. Sa druge strane organizacije danas očekuju da za svoja ulaganja dobiju sve veće vrednosti i sve više podataka koji će biti pravovremeni i tačni. Brzina dobijanja podataka je danas odlučujući faktor kod donošenja velikih poslovnih odluka. Novac koji treba uložiti u tehnologije koje će omogućiti poslovodstvu da donese pravovremene odluke postaje sve više minorni faktor. Mnogo veći faktor predstavlalja kompletan reinženjering poslovnog procesa kao i cena i vreme potrebno da bi se sistem razvio. Ne treba zaboraviti i kompletnu edukaciju ljudstva od koga se zahteva dodatan napor kako bi savladalo nove tehnologije. Puno puta to može da predstavlja i najveći izdatak za jednu organizaciju. Otvoreni sistemi omogučuju organizacijama da ulože novac u jednostavna i relativno jevtina rešenja koja će im rešiti njihove poslovne zahteve. Standardi koji su doneti u otvorenim sistemima jasno definišu formate u kojim će se podaci razmenjivati, kako pristupati udaljenim moćnim serverima i kako pozivati servise koji nisu dostupni na personalnim računarima. Veliki broj različitih tehnologija kao što su: objetno orjentisani razvoj, relacione i objektno orjenitisane baze podataka, multimedija, ekspertni sistemi, geografski informacioni sistemi(GIS), prepoznavanje glasa, tekstualni procesori i td. Predstavljale su veliki izazov za poslovne organizacije koje nisu mogle da odole ovolikom izazovu koji se nudio po vrlo malim cenama. Klijent server model organizacije omogućavao je idealnu platformu koja je objedinjavala sve ove mogućnosti u samo jednoj običnoj desktop mašini. Zahvaljujući razvoju svih ovih tehnologija došlo je do kompletnog zaokreta tj. reinženjeringa poslovnog procesa. Organizacije su tražile nove načine kako bi upravljale svojim biznisom a koji bi im doneo veći profit. Globalizacija Svet polako postaje jedna velika pijaca jer se mnoge barijere brišu Kvalitet, cena , različiti proizvodi i servisi postaju ključni faktori i najvažniji marketinški prioriteti. Sve više se zahteva bliži kontakt sa kupcem i zadovoljenje njegovih prohteva. Decentralizacija upravljanja Kvalitet i fleksibilnost zahtevali su donošenje odluka od strane mnogih individualaca koji su u direktnom kntaktu sa kupcima. Nove tehnologije su morale da omoguće i takvim osobama da donesu pravilnu odluku o kojoj će i uravn poslovodsvo biti brzo informisano. Mrežno upravljanje Kao se biznis vodio sa velikog broja decentralizovanih lokacija, tehnologija je morala da omogući da se sve te decentralizovane lokacije povežu u jednu i da predstavljaju jednu jedinstvenu centralizovanu jedinicu. Dostupnost informacija Da bi neki proizvod imao dobru prođu mora se obezbediti da informacije o njemu budu dostupne svima. Kupac mora da oseti da ima sigurnost u neku organizaciju od koje kupuje proizvod. Niska cena Zahvaljujući standardizaciji proizvoda omogučeno je velikombroju prizcođaća da se oprobaju i izardi tako da je velika ponuda smanjila cenu proizvoda a povećala kvalitet. Različite hardveske platforme Zbog raznolikosti hardware-a trebalo je omogučiti da se svi oni međusobno vide. Tj. da mogu da komuniciraji jedan sa drugim bez obzira na tip računara-procesora. Minimalno poznavanje tehnologije Zbog porasta broja ljudi koji su se uključivali u rad sa ražunarima trebalo je omogučiti jednostavan pristup svim tim informacijama kao i da se vreme obuke za rad svede na najmanju moguću meru. Zato se i razvijene mnoge tehnologije pre svega vizuelnog pristupa 14
informacijama. Danas se sve više razvijaju i nove tehnologije koje se svode na to da se računarima obračamo glasom. Različita softverska rešenja Ogroman razvoj softvera koji je mora da nahrani računare sa odgovarajučim programima zahtevao je i razlićite softverske alate koji su opet morali da budu kompatibilni kako bi mogli da sa međusobno sporazumevaju. Različite baze podataka Ogroman broj podataka razvio je i odgovarajuče softverske alate za unošenje, ažuriranje i pregled tih podataka. SQL (Structured Query Language) predstavlja jedan od osnocnih postulata kod baza podataka. Ne posroji ni jedna ozbiljnija baza podataka koja ne podržava ovaj vid komunikacije sa njom.
4.1. Pojam “klijent-server” Klijent-server je arhitektura gde su korisnik (klijent) i server (davalac usluga) odvojeni ili neravnopravni. Najočitiji je primer pregledavanja Internet stranica. Korisnikov računar i Internet program su klijent – oni zahtevaju, dok su računar i baza podataka koji čine web stranicu server – on daje usluge. Klijent je obično aktivan korisnik, koji šalje zahteve i čeka dok se isti ne ispune, dok je server pasivan, čeka na zahteve te ih ispunjava i šalje korisniku. Serveri su obično veoma jaka računara s dobrim konfiguracijama i karakteristikama zbog toga što istovremeno moraju preraditi mnogo zahteva koji rastu iz dana u dan. Obično servere pokreću i posebni operativni sistemi za razliku od običnih – klijent operativnih sistema, serverski operativni sistemi su u više segmenata bolji i sadrže naprednije opcije. Klijent/server model je baziran na distribuciji funkcija između dva tipa nezavisnih i autonomnih procesa: servera i klijenta. Klijent je bilo koji proces koji zahteva specifične usluge od server procesa. Server je proces koji osigurava usluge za klijenta. Klijent i server mogu biti smješteni u istom računaru ili u različitim računarima povezanim preko mreže. U slučaju da su klijent i server procesi smješteni u dva ili više nezavisnih i umreženih računara, server proces može osigurati usluge za više od jednog klijenta. Pored toga, klijent može zahtevati usluge i od više servera iz okruženja bez obzira na njihove lokacije ili fizičke karakteristike računara na kojima se nalaze server procesi. Mreža služi povezivanju servera i klijenata zajedno osiguravajući medij kroz koji klijenti i serveri komuniciraju.
15
Slika2. Model klijent- server (http://www.ahyco.ffri.hr/ritehmreze/images/fig1-1.gif, 27.03.2008.) Klijent-server arhitektura i klijent-server model obrade podataka se javlja početkom devedesetih godina 20 veka, priznanje doživljava već polovinom istog desetljeća, a razvijen je kao rezultat nastojanja da se što bolje iskoristi resurs osobnih računara, kroz njihovu integraciju u jedinstven sistem za obradu podataka. Klijent-server model obrade podataka je model distribuirane obrade podataka, gdje se funkcije jednog korisničkog programa raspodjeljuju na najmanje dva procesa koji međusobno komuniciraju. Ta dva procesa obrade podataka su: klijentski i serverski. Logika komunikacije klijentskog i serverskog procesa je sljedeća: klijentski proces šalje poruku serverskom procesu, tražeći određenu uslugu, a serverski proces izvršava traženi zadatak i šalje poruku klijentskom procesu o rezultatu (uspehu ili neuspehu) izvršenog zadatka. Klijentski i serverski procesi su specijalizirani za izvršavanje određenih tipova zadataka i uvek komuniciraju oni delovi procesa koji su nadležni za traženi zadatak. Oba procesa se mogu izvršavati na jednom računaru, ali pun opseg mogućnosti se realizira distribucijom ovih procesa na veliki broj, fizički dislociranih računara. Tada je računarkoji izvršava klijentski dio procesa klijent-računaro, ili kraće klijent, a po analogiji, isto važi i za server. Dakle, za punu primjenu klijent-server arhitekture, potrebna su najmanje dva računara, povezana komunikacijskom mrežom, s instaliranim mrežnim operativnim sistemom i uspostavljenom komunikacijom. Elementi koji čine klijent-server sistem jesu: · jedan ili više klijenata, · jedan ili više servera, · klijentski procesi, · serverski procesi, · komunikacijski međusloj (komunikacijski hardver i softver).
2.2 Način funkcioniranja klijent – server Tipičan (ali ne i obavezan) scenario po kojem radi klijent/server arhitektura je sledeći: Server proces započinje na nekom računaru (na kojem je smešten), pokreće se, a zatim prelazi u sleep mod i čeka da ga neki klijent proces kontaktira i zatraži neku uslugu od njega. o Klijent proces započinje na istom ili nekom drugom računaru koji je preko mreže povezan sa računarom na kome se nalazi server. Klijent procesi se često pokreću od strane interaktivnih korisnika koji zahtevaju izvršenje određenih naredbi. Klijent proces šalje zahtev putem mreže do servera tražeći određenu uslugu od njega. 16
o Kada server proces završi posao (servis) koji je od njega zatražen od strane klijenta, prelazi ponovo u sleep mod i čeka sledeći zahtev za nekom uslugom. o Klijent/server arhitektura se zasniva na hardverskim i softverskim komponentama koje spajanjem na taj način čine sistem. Ovaj sistem sadrži tri komponente: klijent, server i komunikacioni posrednik. o Klijent je bilo koji računarski proces koji zahteva usluge od servera. Klijent, poznat još i kao glavna aplikacija, odražava činjenicu da je krajnji korisnik obično u interakciji sa klijent procesom. o Server je bilo koji računarski proces koji čeka na zahteve od klijenata i osigurava potrebne usluge za klijente shodno pristiglim zahtevima. Poznat je i kao pozadinska aplikacija. Komunikacioni posrednik je bilo koji računarski proces čijim posredstvom komuniciraju klijent i server. Sastavljen je od nekoliko softverskih nivoa koji pomažu pri prenosu podataka i upravljačkih informacija između klijenta i servera. Komunikacioni posrednik je obično povezan sa mrežom. Svi klijentovi zahtevi i odgovori servera putuju kroz mrežu u obliku poruka koje se sastoje od informacija za kontrolu i prenos podataka. Slika 3. Klijent- Server
Klijent Server tehnologija Klijent predstavlja jednokorisničku radnu stanicu koja omogučava predstavljenje traženih informacija u vidu izračunavanja, povezivanja ili servisa baze podataka koji se odnose na poslovne zahteve. Server predstavlja radnu stanicu sa jednim ili više procesora koji omogučava višekorisnički (multiuser) rad, koji treba da omoguči što brži odziv i davanje tražene informacije klijentima. Ideja ovog modela je da se napravi kooperacija procesa između servera koji obezbeđuju servise i klijenata koji servise zahtevaju. Ova paradigma se koristi na nivou aplikacije podjednako kao i na nivou operativnog sistema. Svaki proces u iterakciji igra ili ulogu servera ili ulogu klijenta. Sa druge strane, proces koji se ponaša kao server može biti zahtevati servis od drugog servera da bi izvršio neki zadatak, time dobijajući i ulogu klijenta. Mašina može biti jedan klijent, jedan server, više klijenata ili servera ili mešavina klijenata i servera. Logička komunikacija između klijenata i servera je bazirana na razmeni zahteva i odgovora i to na sledeći način: 1. klijent šalje zahtev serveru i blokira se. 2. server prihvata zahtev, obavlja traženi zadatak-posao i varća odgovor klijentu. 3. klijent prima odgovor i nastavlja izvršavanje. Fizički, zahtevi i odgovori se prosleđuju dotičnom kernelu, i šalju kroz komunikacionu mreču ciljnim kernelima i procesima. Iz jednostavnosti ovog modela proizilazi potreba za samo dva komunikaciona sistemska poziva kernelu: send (pošalji) i receive (primi) poruku. Vačno pitanje je kako klijent locira server ako on promeni lokaciju ili postoji više servera. Zbog fleksibilnosti serveri se identifikuju preko imena. Serveri, nazvani vezujuši serveri (binder servers) spajaju klijente i servere. Procedura koja izvršava ovo spajanje je nazvana dinamičko povezivanje (dinamic bindig).Kada se server startuje on šalje povezivaču podatke o svojoj lokaciji.Tada klijenti preko povezivača zanaju lokaciju odgovarajućeg servera.Kao dodatak, povezivači mogu pomagati u autentifikaciji klijenata za servere. KOMPONENTE I ARHITEKTURA KLIJENT/SERVER SISTEMA Klijent/server arhitektura se zasniva na hardverskim i softverskim komponentama koje interaguju formirajući na taj način sistem. Ovaj sistem sadrži tri komponente: klijent, server i komunikacioni posrednik. o o
Klijent je bilo koji računarski proces koji zahteva usluge od servera. Klijent, poznat još i kao čeona aplikacija, odražava činjenicu da je krajnji korisnik obično u interakciji sa klijent procesom. Server je bilo koji računarski proces koji čeka na zahteve od klijenata i obezbeđuje potrebne usluge za klijente shodno pristiglim zahtevima. Poznat je i kao pozadinska aplikacija. 17
o
Komunikacioni posrednik je bilo koji računarski proces čijim posredstvom komuniciraju klijent i server. Sastavljen je od nekoliko softverskih nivoa koji pomažu pri prenosu podataka i upravljačkih informacija između klijenta i servera. Komunikacioni posrednik je obično povezan sa mrežom. Svi klijentovi zahtevi i odgovori servera putuju kroz mrežu u obliku poruka koje se sastoje od informacija za kontrolu prenos i podataka.
Za ilustraciju interakcije komponenata može da posluži primer kada klijent zahteva servise od procesa baze podataka. Izvršenje aplikacije je razdvojeno na dve glavne i nezavisne komponente, klijent i server, a komunikacioni posrednik omogućava klijent i server procesima da rade zajedno. Najpre klijent proces šalje zahtev do komunikacionog posrednika. Komunikacioni posrednik prosleđuje SQL zahtev do server procesa za baze podataka koji prima zahtev, potvrđuje ga i izvršava. Potom server šalje selektovane podatke komunikacionom posredniku koji ih prosleđuje i formatira za klijent proces, a ovaj prima podatke i prikazuje ih korisniku. Klijent proces je odgovoran za interfejs krajnjeg korisnika, neku proveru lokalnih podataka, neku obradnu logiku i prikaz podataka. Komunikacioni posrednik obezbeđuje da poruke između klijenta i servera ispravno putuju kroz mrežu i stignu na svoje odredište. Obrada SQL zahteva se vrši na serveru. Server proces potvrđuje izvršavanje zahteva i šalje rezultat klijentu.
Komponente klijent/server arhitekture moraju da zadovolje neke osnovne principe kako bi međusobno delovale ispravno. Ovi principi moraju biti jednoznačno upotrebljivi u komponentama klijenta, servera i komunikacionog posrednika. Pri razvoju i upotrebi klijent-server tehnologije treba se držati sledećih principa, koji moraju biti ispunjeni i to: 1. Hardverska nezavisnost je postignuta kada klijentski, serverski i procesi komunikacionog međusloja uspešno funkcionišu na različitim hardverskim platformama (IBM, DEC, Apple itd.) bez ikakve funkcionalne razlike, odnosno kada izmene u hardverskoj konfiguraciji sistema ne utiču na funkcionisanje klijent-server sistema. 2. Softverska nezavisnost je postignuta kada klijentski, serverski i procesi komunikacijskog posrednika mogu funkcionirati na različitim operativnim sistemima (DOS, Windows, Unix, OS/2), uz upotrebu različitih mrežnih protokola (TCP/IP, SPX/IPX) kao i da podržavaju različite aplikacije (baze podataka, radne tabele, elektronska pošta itd.). 3. Otvoren pristup servisima je ostvaren kada klijentski proces ima mogućnost da, po potrebi, bez ograničenja, koristi usluge svih serverskih procesa u mreži, nezavisno od lokacijske udaljenosti klijenta i servera. Svi klijenti u sistemu moraju imati otvoren pristup svim servisima svih servera koji postoje u mreži i to onoliko puta koliko oni to zahtevaju. Servisi ne smeju zavisiti od lokacija klijenata i servera u mreži. Ključna stvar je da se servisi obezbeđuju na zahtev klijenata. 4. Funkcionalna distributivnost je ostvarena kada klijentski, serverski i procesi međusloja predstavljaju nezavisne činitelje u obradi podataka i imaju precizno definirane namene, zadatke i granice. Funkcionalna distributivnost treba omogućiti "zamenjivost" delova softvera, što podrazumijeva da tekuća verzija nekog klijentskog, serverskog ili programa u međusloju klijentserver arhitekture, može zameniti novom, a da to ne utiče na funkcionisanje ostalih komponenti softvera. Celokupna obrada podataka je distribuirana između klijenta i servera. Podela opterećenja obrade mora se povinovati sledećim zahtevima:
18
Klijent i server procesi moraju biti autonomni, sa jasno definisanim granicama i funkcijama. Ova osobina omogućuje jasno definisanje funkcionalnosti obe strane.
Lokalno korišćenje resursa (i klijenta i servera) je maksimalno. Procesi klijenta i servera moraju potpuno koristiti snagu obrade glavnog računara. Ova osobina omogućuje dodelu zadataka računaru koji najviše funkcionalno odgovara.
Potrebno je da procesi budu takvi da mogu biti lako i što bolje izvršeni na više snažnih hardverskih platformi. Potrebno je još da bude ispunjen i uslov prenosivosti softvera između različitih mašina bez potrebe da se interveniše na izvornom kodu, već je potrebno samo izvršiti prevođenje i povezivanje kako bi softver odmah moga da se upotrebi.
5. Interoperabilnost i integracija zahtevaju da procesi klijenta i servera budu integrisani u "bezšavnu" formu sistema, tj. različite aplikacije imaju mogućnost razmene podataka između različitih hardverskih platformi i operativnih sistema bez obzira na udaljenost, opremu, tip operativnog sistema i dr. Izmene server procesa moraju biti transparentne za klijent procese. 6. Standardizacija ima za cilj da osigura što viši stepen hardverske i softverske nezavisnosti, kao i nezavisnost korisničkog programa od podataka. Korisnički interface, pristup podacima i mrežni protokol, kao i drugi elementi klijent-server arhitekture trebaju biti pokriveni odgovarajućim standardima. Svi principi moraju biti bazirani na standardima primenjenim unutar klijent/server arhitrkture. Na primer, po standardima se mora upravljati korisničkim interfejsom, pristupom podacima, mrežnim protokolima, međuprenosnom komunikacijom, itd. Univerzalni standardi još uvek ne postoje već ima mnogo različitih standarda koji se mogu primeniti. Na primer, aplikacija može biti bazirana na ODBC (Open DataBase Conectivity) umesto IDAPI (Integrated Database Application Programing Interface) za pristup podacim i može koristiti SPX/IPX umesto TCP/IP mrežne protokole
Prednosti klijent server tehnologije Osnovna prednost dvoslojne klijent-server arhitekture je ta što bazu podataka čini nezavisnom od aplikacija, jer integritet baze podataka osigurava njenu nezavisnost od aplikacija koje nad njom rade. Jedini mehanizam potreban za komunikaciju aplikacije sa bazom podataka je SQL upit, koji se prosleđuje direktno ili kroz neku računarsku mrežu. Ipak, značajan deo aplikacije se veže za klijenta, što prouzrokuje osnovne nedostatke ovakve arhitekture. Povezivanje dinamičkog ponašanja sistema (logike sistema) za klijenta, zbog čestih izmena u korisničkom okruženju, prouzrokuje skupo održavanje sistema a zbog čestih izmena u tehnologiji korisničkih interface-a i skupo održavanje. Osnovne prednosti koje nam klijent server arhitektura omogućava sastoje se u sledećem: 1. Pristup ogromnoj količini podataka - čak se može reći pristup neograničenoj količini podataka. 2. Integrisani servisi na jednom mestu ( E-mail, grafika, baze podataka, tekstovi, kao primer prikazati benzinsku pumpu.) 3. deljeni resursi na različitim platformama 4. zamenljivost podataka i interoperatibilnost 5. maskirani fizički pristup podacima – putem lozinki dozvoljava se ogranićeni pristup podacima ( firewall) 6. nezavisne lokacije procesiranja i pamčenja podataka 7. centralizovano upravljanje
19
20
5 čas Klijent server komponente – KLIJENT U klijent server modelu, bilo koju radnu stanicu (desktop workstation) koju koristi jedan korisnik smatramo klijent radnom stanicom ili samo klijentom. Ukoliko toj istoj stanici pristupaju istovremeno više korisnika simultano, tu istu stanicu nazivamo serverom. Iz ovoga proizilazi da u klijent server modelu ne postoje neke tehnološke razlike, sa stanovništva računara, između klijenta i servera. Za vreme poslednjih 30 godina performanse radnih stanica su dramatično menjale tj. napredovale. Za istu cenu,performanse CPU povećale su se 500 puta (4,7MHz->2,4GHz), veličina RAM-a (operativne memorije) 4000 puta ( 256kB -> 1GB) i kapacitet hard diskova 30000 puta (10MB-> 300GB). Ovako veliki napredak tehnologije učinio je da aplikacije koje su se izvršavale na desktop računarima postanu jako sofisticirane tj. u mogućnosti su da rešavaju jako teške i zahtevne probelme počev od jednostavnog tekst editora pa sve do vrlo složenih multimedijalnih problema. Sa druge strane ovakav veliki razvoj tehnologije desktop računara prouzrokovao je i veliki razvoj drugih računarskih tehnologija a pre svega komunikacionih (razvoj velikog broja protokola) i mrežnih ( LAN i WAN mreže). Danas je prosto nezamislivo da imamo neki desktop računar koji nije umrežen sa nekim drugim računarom na bilo koji način: bilo to direktnom vezom dva računara, bilo u vidu lokalnih mrežnih sistema ili pak putem interneta. Klijent je bilo koji proces koji zahteva usluge od serverovog procesa. Klijent započinje konverzaciju sa serverom. Klijent sadrži hardverske i softverske komponente i poželjno je da one poseduju sledeće karakteristike: o o o o
Ne toliko snažan hardver Operativni sistem koji je sposoban da podrži multitasking Grafički korisnički interfejs (GUI – Graphic User Interface) Komunikacione sposobnosti
Hardver klijenta je obično stoni računar (PC ili radna stanica, a u poslednje vreme se koristi i Xterminal koji jedan de potrebnog klijent/server softvera drži u ROM-u, a ostatak se puni u RAM memoriju sa servera preko mreže). Klijent bi trebalo da poseduje operativni sistem sa nešto malo multitasking mogućnostima. Postoji široki opseg različitih operativnih sistema koji mogu da zadovolje minimalne zahteva da bi bili klijentsji operativni sistem. Od već starih DOS/Windows operativnih sistema do današnjih WinXP i Win 7 operativnih sistema koji su trenutno najkorišćenije klijent platforme. Mada DOS ima jaka ograničenja u pogledu memorije i podrške multitaskinga, Windows 3.1 obezbeđuje primitivne multitasking osobine i GUI. WinXP kao samostalan operativni sistem podržava multitasking i sve više zamenjuje DOS/Windows kombinaciju. Ove osobine kao i mnoštvo razvijenih aplikacija za ove operativne sisteme čine ih vrlo pogodnim za klijent/server implementaciju. Kombinacija hardvera i operativnog sistema mora obezbediti adekvatno povezivanje sa raznim mrežnim operativnim sistemima. Servisi mogu biti raspoređeni na različitim mrežama i klijent računari moraju biti sposobni da pristupe svim tim servisima. Zbog toga, bez obzira na popularnost DOS/Windows kombinacije i Windows-a XP, kao bolja rešenja za klijent operativne sisteme se javljaju OS/2, Unix ili Linux. Klijent aplikacija se startuje pod nekim operativnim sistemom i povezuje se sa komunikacionim posrednikom radi pristupa slobodnim servisima na mreži i ove aplikacije su uglavnom zasnovane na grafičkom korisničkom interfejsu sa namerom da se sakrije kompleksnost od krajnjeg korisnika. Klijent aplikacija interaguje sa operativnim sistemom radi korišćenja multitaskinga i grafičkog korisničkog interfejsa koje on obezbeđuje. Ona još interaguje i sa mrežnom softverskom komponentom komunikacionog posrednika radi pristupa servisima. Hardverska komponenta komunikacionog posrednikam (mrežna kartica i mrežni kabl) fizički transportuje zahteve i odgovore na zahteve između klijenta i servera. Dok se zahtev izvršava na serveru, klijent je slobodan da izvršava druge poslove. 21
Uloga klijenta U klijent server modelu klijent je u osnovi potrošač servisa kojima ga snabdeva jedan ili više servera. Ovaj model omogučuje jasnu podelu funkcija između klijenta i servera jer server treba da omogući određene servise klijentu u odnosu na njegove zahteve. Vrlo je važno da se razume da radna stanica može da funkcioniše kao klijent i kao server, sve u zavisnosti kako se posmatra ta stanica. Na primer u LAN mrežama jedna stanica može da funkcioniše kao klijent za jednog korisnika koji na njoj radi a istovremeno kao print server za druge korisnike u mreži. Jedan od osnovnih servisa koji se izvršavaju na klijen radnoj stanici je prezentacioni servis. On podrazumeva ulazni i izlazni servis koji kontroliše prihvatanje i prikazivanje podataka. Današnje tehnologije omogućile su grafički korisnički servis (GUI – Graphical User Interface), a nove multimedijalne tehnologije koje su danas u velikom razvoju omogući će nam u budućnosti audio-vizuelni pristup podacima. Tehnika višestrukih prozora ( windowing enviroment) omogućuje klijentu korisniku da bude uključen u nekoliko simultanih sesija. Tako funkcije kao što su unošenje teksta, slušanje muzike, praćenje E-maila i grafičko prikazivanje podataka mogu potpuno simultano da se odvijaju na jednom klijent računaru. Normalno da bi sve ovo mogli da pratimo potrebni su nam odgovarajući operativni sistemi koji podržavaju multitasking rad kao što su WIN2000, WINXP ili LINUX. Mogućnosti kao što su DDE ( Dynamic Data Echange) dinamička razmena podataka, OLE ( Object Level Embedding) i CORBA (Communicating Object Request Broker Architecture) omogućuju prostu operaciju cut and paste između tekst procesora, baza podataka, tabelarnih prikaza, grafičkih prikaza u različitim višestrukim prozorima. Klijent servis Idealna klijent server platforma operiše u jednom otvorenom sistemskom okruženju i koristi serverske servise na bazi postavljenih zahteva ( tehnika zahtev/odgovor ) koji su svi bazirani na ranije dobro definisanim i usvojenim standardima. Zahvaljujući ovim osobinama omogućeno je da veliki broj potpuno različitih i hardverskih i softverskih rešenja međusobno vrlo dobro sarađuju i rade. Serveri mogu da se dograđuju i da menjaju svoj operativni sistem ili hardversku platformu a da se sa gledišta klijenta to uopšte i ne oseti tj. nije potrebno da se menja aplikacija sa strane klijenta. Jedini uslov je da se sve te promene odvijaju po unapred definisanim i usvojenim standardima. Što se tiče klijenta i tu je priča ista. Klijenti mogu da menjaju takođe svoj operativni sistem, aplikaciju ili hardversku platformu a da to server uopšte i ne primeti. Tako sa gledišta klijenta možemo da imamo običnu 386 mašinu ili neku RISC-baziranu mašinu i da obe mašine zahtevaju od servera isti servis. Prvi klijent server sistemi nisu imali grafičko okruženje GUI (Graphical User Inteface). Sve informacije koje su dolazile od strane servera bile su u obliku tekstualnih podataka koji su puno puta bili dosta nepregledni. Današnji sistemi imaju kvalitet više pa pored tekstualnih podataka imaju i GUI prikaz i audio vizuelni prikaz koji podrazumeva i ton i sliku. Kolika je to prednost najbolje se ilustruje kod sistema zaštite prostora. Ta zaštita se najčešće radi sa više tehničkih sredstava kao što su kamere, mikrotalasne barijere i različitim vrstama senzora. Na svako narušavanje prostora automatski se uključe kamere i slika nam se prikaže na ekranu monitora sa svim potrebnim pratečim podacima u vidu teksta. Na drugoj strani prednos ovakvog prikaza je u vrlo jednostavnoj i skračenoj obuci personala za rad sa ovakvim sistemima. Neke studije su pokazale da primena GUI može da poveća produktivnost i efikasnost i do 200 % više u odnosu na obične tekstualne aplikacije. Fukcionalnost klijentskog procesa može biti i povećana na strani klijenta dodavanjem logike koja nije implementirana u aplikaciju koja se izvršava na serveru. Lokalno sređivanje teksta, sposobnost davanja HELP informacija, automatski ulaz podataka predstavljaju samo neke servise koji u mnogome unapređuju klijent serverski proces. Ako se mnoge greške detektuju i otklone na strani klijenta, tada se u mnogome povećava brzina serverske strane pa se samim tim i povećava funkcionalnost celokupnog klijent server sistema. Da vidimo sada kako se odvija ta komunikacija između klijenta i servera. Klijent radna stanica zahteva neki servis od servera. Kad god je taj server isti kao i radna stanica ili pak predstavlaj neki mrežni server aplikacioni format zahteva je isti. NOS (Netware Operative System) softver prenosi ili dodaje specificirani zahtev od izvora do ciljnog servera na kome se izvršava neka aplikacija, IPC (InterProcess Communication) 22
predstavlja generički izraz koji se koristi da opiše komunikaciju između dva ili više procesa koji se izvršavaju. U klijen server modelu ti procesi mogu biti na istom računaru, na računarima koju su povezani u LAN mrežu ili pak u WAN mreži. Najćešći servis koji NOS pokreće u takvim slučajevima je servis redirekcije. Ovaj servis prihvata pozive od klijentskog operativnog sistema i prenosi – preusmerava ih prema serverskom operativnom sistemu. Na taj način zahtevi za direktorijume na disku, disk fajlovima, printerima, printer redovima, serijskim uređajima, aplikacionim programima se presreću putem redirekcionog softvera i preusmeravaju se prema korektnom serveru. Dugi niz godina programeri su se trudili da razvijaju modularni kod koristeći strukturnu tehniku i logiku poziva podprograma. Danas se zahteva da ti podprogrami (subroutines) budu ipamćeni negde kao objekti koji će sada biti dostupni svima ko želi da se koristi njima. Tehnika poznata kao RPC (Remote Procedure Call) upravo omogućava ovakav vid programiranja. RPC zbog toga predstavlja srce klijent server modela i suštini predstavlja program koji može da pozove bilo koju proceduru u mreži sa ciljem da zadovolji zahteve klijenta. Pri tome čak i ne mora da zna ni fizičko mesto gde se tražena procedura ili servis nalazi i izvršava. Klijent upućuje svoj zahtev i dobija odgovor preko samo jedne send primitive, što znači da RPC troši samo jednu operaciju jezgra. Takođe u ovom mehanizmu pojednostavljeno je baferisanje jer u istom baferu umesto zahteva u povratku može da se smesti traženi odgovor. RPC omogućava da se poziv i izvršenje zahteva može odvijati na potpuno različitim operativnim sistemima i potpuno različitim hardverskim platformama. Mnogi RPC omogućavaju i servise translacije. Oni podrazumevaju da se vrši prevođenje (translacija) podataka između procesora sa različitim fizičkim formatima podataka. Ti standardi se stalno usavršavaju i prilagođavaju zahtevima tržišta. Vrste klijent servisa kojise odvijaju na klijentskoj strani: Fax/Print servis NOS ( mrežni operativni sistem) omogućuje klijentu da generiše zahtev za štampanjem bez obzira što je tog trenutka printer zauzet. Taj se zahtev prenosi putem NOS redirektora i smešta u print server red kojim upravlja print server manager. Klijentska stanica može da vidi status print red u bilo koje doba i tako se informiše kada će traženi servis biti omogućen tj. izvršen. Vešina print servera obaveštava klijensku stanicu kada se njen zahtev izvrši. Fax servis se izvršava na potpuno isti način kao i print zahtev. E-mail servis – funkcioniše na isti način kao i gore opisani servis. Window servis – servis prozora označava da se na klijentskom računaru mogu istovremeno otvoriti više prozora u okviru kojih se mogu izvršavati različite aplikacije. Mogućnost da se aktivira, vidi, pomera, smanji ili poveća, sakrije određeni prozor omogućena je baš zahvaljujići ovom servisu. Ovaj servis je edan od osnovnih servisa u klijent server modelu jer je on u neposredom kontaktu sa servisom poruka koji je zadužen da obavesti korisnika o događajima koji se dešavaju na serveru. Kod pisanja aplikacija nije potrebno voditi računa o servisu prozora jer se on automatski prenosi na alikaciju. Svaka aplikacija se piše tako da se predpostavlja da ona ima na raspolaganji jedan virtuelni prozor putem kojeg ona komunicira sa korisnikom. Taj virtuelni prozor je poizvoljne velićine i može biti veći nego što je fizički prozor. Aplikacija koja koristi GUI smešta podatke u taj virtuelni prozor, a servis prozora sada vodi računa o smeštanju i prikazivanju tog prozora u realnim uslovima. To u mnogome pojednostavljuje pisanje aplikacija jer programer nema potrebu da vodi računa o servisu prozora. NOS omogućuje klijentskoj radnoj stanici, bez obzira u kojoj se aplikaciji trenutno nalazila, da putem popup prozora obaveštava klijenta o nekim dešavanjima na serverima kao što su: završetak štampanja, probel u šampanju, novoj pošti u E-mail sandučetu, pristiglom FAX-u i td. Remote Boot Service Neke aplikacije mogu da se izvršavaju na klijentskim radnim stanicama bez bilo kakvog lokalnog diska sa koga bi se učito opertativni sistem ili aplikacija. Primer X-terminala. Da bi to moglo da funkcioniše klijent mora da obezbedi odgovarajući softver koji se nalazi u EPROM memoriji koja je u klijenskoj radnoj stanici i osnovna namena tog programa je da startuje IPL (initial program load) tj. proces punjenja ili butovanja. Backup Service Predstavlja servis koji se može pozvati sa klijentske strane a koji se izvršava na serveru kaoko bi se uradila zaštita fajlova tkz. Backup-iranje. Utility Service Operativni sistem omogućava lokalne funkcije kao što su: kopiranje, premeštanje, editovanje, upoređivanje i funkciju helpa koji se izvršava na lokalnoj radnoj stanici. 23
Message Service Poruke se mogu primati i slati potpuno sinhronizovano na mrežu. Ovaj servis omogućava baferovanje (skladištenje), pozadinsko prikazivanje (scheduling) i servis izbora poruka (arbitration service) da bi mogao u potpunosti da izvrši sve zahteve kojise stavljaju pred njim. Network Service Klijentska radna stanica komunicira sa mrežom putem više servisa i API-a koji kreiraju, šalju, primaju i formatiraju mrežne poruke. Da bi to sve moglo da se obavi neophodna je podrška za komunikacione protokole kao što su: NetBIOS, IPX, TCP/IP, APPC, Ethernet, Token Ring, X.25 i td. Application Service Podrazumeva da mnoge aplikacije imaju sopstveni RPC kojim se koriste da bi mogle da pozovu neke servise sa udaljenog servera. Database Service Zahtevi za podacima iz baze podataka zasnivaju se na SQL sintaksi. SQL predstavlja industrijski standardizovani jezik za uparvljanje bazama podataka. Netware Mangment Service-Alerts Većina mrežnih interfejs kartica (NIC-netware interface cards) može da generiše alerte-upozoravajuće poruke koje obaveštavaku klijenta o pojavi grešaka na mreži u vrlo ranom stadijumu- na fizičkom nivou. To je jako dobro jer je moguće problem razrešiti u ranoj faze pre nego što ta greška doprinese da ona bude katastrofalna.
24
6 čas
Programska podrška klijenta
Sve veći zahtevi koji su se postavljali pred programerima kod pisanja aplikacija kao i veliki razvoj novih tehnologija zahtevali su od razvojnih timova veliko poznavanje svih tih tehnologija kao i osobina najnovijih operativnih sistema na kojima su se te aplikacije izvršavale. Sve su to bili krupni zahtevi koji su u mnogome usporavali razvoj aplikacije. Prosto je nemoguće bilo da se sa jednom aplikacijom objedine sve te tehnologije kao i da se vodi računa o upravljanju svi deljivim resursima servera (kao što su memorija ili procesorsko vreme), da se vodi računa o upravljanju kontekstom ili rukovanju nitima. To bi zahtevalo da se svaka transakcija koja se dešava u sistemu posebno programira a takve aplikacije bi bile jako teške i skupe za održavanje. To je jedan od glavnih razloga što je razvoj komponentnih modela postao popularan i dožive veliki razvoj poslednjih godina. Komponente u kojima je implementiran mehanizam izvršavanja transakcija u mnogome oslobađaju programere od ovog teškog zadatka i predstavljaju jedan od najefikasnijih načina da se brzo i kvalitetno naprave aplikacije koje će u potpunosti zadovoljiti zahteve tržišta. Komonentni model razvijanja aplikacije omogučava lakše izmene a samim tim i jednostavno odžavanje aplikacije. Sa druge strane vreme potrebno za razvijanje, pisanje i implementaciju aplikacije se drastično smanjuje jer postoji veliki broj već razvijenih komponenti koje se mogu sa lakoćom primeniti i iskoristiti. Ovakav pristup impementaciji transakcija se naziva deklerativnim pristupom. Trenutno najpopularniji komponentni modeli kod razvijanja aplikacije su COM+ (Component Object Model), EJB (Enterprise Java Beans) i CORBA (Common Object Request Broker Architecture) Pre nego što pređemo na razmatranje ovih komponentnih modela potrebno je da ukažemo i na još nekoliko pojmova-tehnika koje su u mnogome doprinele razvoju ovakvih komonentnih modula tj. bili su neophodni preduslovi koji su doprineli da se dođe do ovakvih rešenja na nivou globalne distribuirane mreže računara. To su: o Dynamic Data Excange (DDE) -predstavlja funkciju koja omogućava klijentu da razmenjuje podatke između različitih aplikacija zahvaljujiči jedinstvenom API-u. Na primer grafički prikaz nekog podatka može biti povezan sa podacima u bazi podataka. Kako se ti podaci menjaju tako se i grafički prikaz menja. o Object Linking and Embedding (OLE)- OLE predstavlja jedno proširenje DDE koje je omogučilo da sa objekti kreiraju sa objektim softverskim komonentama. To znači da postoji referenca između objekata i odgovarajučeg softvera kojim su te komponente formirane. Na primer ako u nekom tekst dokumentu imamo neke slike koje su kreirane sa nekim grafičkim softverom (Corel ili Photoshop) kada god kliknemo na tu sliku, iako se nalazimo u okviru tekst procesorra ( WORD ), automatski se otvara program kojim je ta slika formirana.Tu se pokreću dva programa viewer(pregledanje) i launcher(izvršavanje). Sa viwer-om korisnik može da vidi objekat sa jednim softverskim paketom dok radi u drugom paketu, a sa launcher-om on poziva softverski paket koji je kreirao taj objekat i na raspolaganju su mu sve funkcije tog paketa. OLE je 1992 god. razvio Microsoft koji je kasnije 1995 god. prerastao u COM (Component Object Model). Od 1996 godine COM počinje sa podrškom distribuiranog procesiranja i dobija ime DCOM (Distributed COM). o Distributed Computing Environment (OSF DCE)- predstavlja komunikacioni mehanizam koji nam dozvoljava kako rad tako i razvoj distribuiranih aplikacija baziranih na klijent server modelu. Filozofija klijent server sistema podrazumeva veoma visok nivo komunikativnosti između računara bez obzira na njihovu veličinu, hardversku platformu ili vrste operativnog sistema tj. softverske aplikacije koja se na njima izvršava. Bez obzira na različite ciljeve i okruženja na kojima se te aplikacije izvršavaju sve one imaju neke zajedničke osnove koje moraju da zadovolje a to su: - RPC (Remote Procedure Call) je osnovna premisa distribuiranih heterogenih komunikacija. Ranije smo već govorili o RPC kao servisu-programu koji predstavlja srce klijent server modela. Međutim, RPC se može posmatrati i kao protokol na nivou prezentacije ISO OSI modela standardizovanog komunikacionog okruženja. Tako posmatrani PRC može se opisati preko pet osnovnih komponenti i to: stubovi, protokol za uspostavljanje veze (binding protocol), reprezentacija podataka, transportni protokol, upravljački protokol kao 25
što je prikazano na slici br 1.
Da bi se ove nabrojane komponente mogle da objasne potrebno je da razvoj i upotrebu distribuirane aplikacije posmatramo kroz tri faze: vreme potrebno za kompilaciju, vreme uspostavljanja veze i vreme poziva. Podrazumeva se da se programiranje klijent server modula vrši na način kao da će oba modula biti linkovana tj. povezana zajedno. Server implementira poseban interfejs napisan u nekom opisnom jeziku (IDL – interface description language) čiji se opis onda procesira proizvodeći dva stuba: klijentov i serverov stub. Klijentov stub se linkuje sa klijentom koji ga sada vidi kao server i obrnuto server posmatra svoj stub kao klijent. Mehanizam stubova odvaja klijenta i srevera od detalja uspostavljanja veze (a to je proces kada se klijent pridružuje serveru) i transporta (kada se argumenti i podaci stvarno razmenjuju između klijenta i servera). RPC mehanizam takođe ovde upravlja sinhronizacijom, kodiranjem podataka, timeout-ima( proble kada računar iz nekog razloga ne odgovori unutar nekog predviđenog vremena zbog pada računara ili preopterećenja mreže) i zaštitnim informacijama. - administracija imena resursa je od izuzetne važnosti jer distribuirani sistemi upotrebljavaju imena da opiću različite resurse kao što su računari, fajlovi, adresari, programi, korisnici i td. Osnovni zahtev je da se ova imena mogu identifikovati na jedinstven način u celom distribuiranom sistemu ma kakav on bio heterogen i razuđen. Koegzistentnost imena se zahteva i onda kada se promeni lokacija nekom od ovih resursa. Baš iz tog razloga, sa obzirom na potencijalno veliki broj resursa, jasno je da kreiranje i upravljenje resursima mora biti maksimalno pojednostavljeno. - rešenje mora biti nezavisno od broja računara u mreži, - rešenje mora da obezbedi zaštitu integriteta podataka.Jasno je da u jednom distribuiranom računarskom sistemu zaštita podataka mnogo kopleksija nego kod samostalnih računarskih sistema. Posebni serveri zaštite, kriptovanje podataka, sistem autentičnosti, lozinke, specijalni protokoli i mnogi drugi mehanizmi su razvijeni da bi se obezbedila potpuna zaštita podataka. Zahvaljujući OSF DCE komunikacionom mehanizmu obezbeđen je jedan potpuno novi ambijent za razvoj aplikacija u distribuiranim mrežnim okruženjima. Omogućeno je da se vrlo složeni programi mogu razvijati na više razasutih lokacija širom sveta. U veoma kratkom vremenu, koristeći svaki za sebe najbolje lokane resurse (znanje i opremu) kao i prilazeći već razvijenim programima na drugim lokacijama, programerima je omogućeno da razvijaju jako moćne i 26
složene aplikacije. Koristeći RPC, klijent može pozvati proceduru na udaljenom sistemu na našin kao da je to lokalni poziv procedure. RPC sa sobom nosi potrebne argumente i vraća rezultat. Server sada predstavlja udaljeni ekvivalent biblioteke procedura, dok je klijent programaplikacija koja poziva te procedure. Problem povezivanja klijenta i servera se odvija na posebnom serveru na kome se izvršava proces povezivanja. Ako se zna da RPC troši samo nekoliko milisekundi ( u zavisnosti od kvaliteta mreže i njene opterećenosti), a sve ostalo vreme je isto kao i u lokalnim uslovima, onda je jasno zašto je ovakav komponentni pristup rešavanju probelma doživeo ovoliki procvat.
27
7 čas S obzirom da se sistemi zasnovani na distribuiranim objektima razvijaju već decenija unazad, na tržištu postoji veliki broj različitih platformi (tehnologija) za implementaciju višeslojne arhitekture. Pri odabiru distribuirane tehnologije treba obratiti pažnju na sledeće parametre: - prenosivost (portabilnost) klijentske i serverske platforme - prenosivost programskog jezika - performanse pri izvršavanju - jednostavnost razvoja - sigurnost Rezultati testiranja sa različitim komunikacionim modelima za udaljeno pozivanje komponenata do danas su rezultirali nekoliko najpoznatijim tehnologijama o kojima će biti daljer reći. 7.1 Componet Object Model (COM+ / DCOM ) COM+ predstavlja evoluciju starije tehnologije COM (Component Object Model). COM je specifikacija za objekte koja definiše interfejs preko koga različiti objekti mogu da komuniciraju. COM je nezavisan od programskog jezika ukoliko implementira COM interfejs. Teoretski može da se implementira na različitim operativnim sistemima, međutim nijedan drugi operativni sistem nije prihvatio COM objekte osim Microsoft Windows-a. Da bi se omogućilo da COM objekti sa različitih sistema međusobno razmenjuju informacije, COM specifikacija je proširena i nastao je DCOM (Distributed COM). DCOM poseduje znatno kompleksniji model konfiguracije i sigurnosti. Za potpuno razumevanje COM+ komponentnog modela prvo je potrebno razjasniti Windows DNA (Distributed interNet Aplication architecture).Windows DNA je platforma koja opisuje kako razvijati višeslojne, skalabilne distribuirane aplikacije visokih performansi za rad u mreži. Cilj DNA je dobavljanje enterprise level rešenja. Srce DNA je integrisani programski model baziran na COM+. Drugim rečima DNA je put za obezbeđivanje enterprise based rešenja Microsoft-a. Alati
COM+ Prezentacioni sloj DHTML, Forme … Sloj poslovne logike WEB Server (IIS), Transakcije (MTS) Sloj pristupa podacima DBMS, File system, mail, txt …
Sistemski servisi Administracija Mrežni servisi
Zaštita Osnovni servisi
Kao što je prikazano na slici Windows DNA se sastoji od tri sloja: 1. Prezentacioni sloj - predstavlja sloj koji je odgovoran za prikupljanje informacija od korisnika, vršenje osnovnih provera unetih podataka, njihovo slanje sloju poslovne logike, primanje rezultaa od sloja poslovne logike i prezentacija dobijenih rezultata korisniku u razumljivom formatu. Ovaj sloj sačinjavaju VB, HTML, DHTML, Win32 aplikacije, klijent-server skriptovanje, java apleti, ActiveX kontrole i td. 2. Sloj poslovne logike – ovo je sloj odgovoran za primanje podataka od prezentacionog sloja, iterakciju sa slojem za pristup podacima radi procesiranja podataka i slanje obrađenih informacija prezentacionom sloju. Ovaj sloj obezbeđuje poslovna pravila i servise koji pomažu tokom pisanja skalabilnih aplikacija. Ovi servisi su čvrsto integrisani jedan sa drugim i sa operativnim sistemom i dostupni su preko COM-a. Oni uključuju sledeće: a. Web servise, putem Microsoft Internet Information Server-a (IIS) b. Transakcionog i servisa komponenti, putem Microsoft Transaction Server-a (MTS). c. Asihronih i servisa redova, putem Microsoft Message Queue Server-a (MSMQ). d. Serverskog skriptovanja, putem Active Server Pages (ASP). 3. Sloj za pristup podacima – Ovaj sloj direktno interaguje sa podacima koji obično egzistiraju u bazi podataka kao što su SQL Server ili Oracle. Ovaj sloj je odgovoran za smeštanje, pronalaženje i 28
održavanje podataka kao i integrititeta podataka. Pristup podacima preko Windows DNA naziva se Universal Data ACCess (UDA). UDA je skup modela sistemskog i aplikacionog nivoa zvanih OLE-DB, ADO i RDO. Prvi početak razvoja COM+ objekata datira još od 1992 god. kada je Microsoft razvio OLE (Object Linking and Embedding) koji je kasnije (1995) nazvan COM (Component Object Model). 1996 COM počinje sa podrškom distribuiranog procesiranja i dobija ime DCOM (Distibuted COM). Istovremeno Microsoft razvija novi transakcioni server koji dobija naziv Microsoft Distributed Transaction Coordinator (MTDC) koji je 1997 unapređen u Microsoft Transaction Server (MTS). 1997 Microsoft razvija još jedan server koji dobija ime Microsoft Message Queue Server (MSMQ). Nakon svih ovih proizvoda, 1999, Microsoft kombinuje sve dotada razvijene servise u integrisano runtime okruženje – COM+. Drugim rečima, COM+ je integrisano okruženje koje programerima obezbeđuje pristup COM, MTS, MSMQ i drugim servisima. Na prvi pogled moglo bi se reći da je COM+ kombinacija COM-a i MTS-a, no COM+ je mnogo više od toga. COM+ je proširena verzija COM-a sa dve glavne razlike. Prvo – on uključuje proširenu i nadgrađenu verziju MTS-a – MTS 3, i četiri glavna servisa uključujući MSMQ, Load Balancing, Event Services i IMDB. Sve ove komponente i servisi rade zajedno radi obezbeđivanja integrisanih enterprise rešenja. Na kraju, može se reći da COM+ predstavlja:
COM+ = COM + MTS (nadgrađena verzija) + Servisi Dakle, COM+ predstavlja jedno integrisano runtime okruženje koje u sebi kombinuje sve do sada razvijene tehnologije distribuirane obrade od strane Microsofta i to: - COM objekte, - MTS (Microsoft Transaction Server) - MSMQ (Microsoft Message Queue Server) služi da bi se podržao queuing servis, koji omogučuje klijentu da može automatski izvršiti pozive metoda osim ako komponenta nije ofline. MSMQ pozive metoda snima i stavlja u redove čekanja automatski uvek kada je komponenta dostupna. Ovaj servis je naročito koristan za online aplikacije koje se moraju izvršiti do kraja. Na primer online bankarstvo, rezervacija avionskih karata i td. - Load Balancing koji predstavlja mehanizam za distribuciju klijentskih poziva ka više servera. Prva potreba distribuiranih aplikacija je skalabilnost. Drugim rečima, mrežni saobraćaj i broj klijenata ne sme da utiče na perfomanse aplikacije (što je u nemoguće u realnim uslovima). COM+ omogućuje korišćenje dve vrste load balancing-a – dinamičko i statičko. COM+ podržava load balancing na nivou komponenti. Kada klijent uputi zahtev za specifičnom komponentom, prvo se konektuje na load balancing ruter koji sadrži informacije o serverima. Ovaj ruter nakon toga prosleđuje zahtev dostupnim serverima. Ako je server dostupan, klijent dobija instancu komponente na serveru. Najbolja stvar u ovome je da ako server počne da “spušta” sistem, COM+ automatski rutira klijentski zahtev ka drugom serveru. Windows 2000 ima ovaj servis i naziva se Clustering service. - Object pooling je vrsta “recikliranja” objekata. Kada klijent završi sa radom sa instancom komponente, umesto uništavanja instance (oslobađanja memorije zauzete instancom komponente), COM+ je “reciklira”. Kada neki drugi klijent uputi zahtev za instancom iste komponente, COM+ vraća “recikliranu” instancu. Pošto je skup instanci komponente učitan u memoriju, one su neposredno spremne za korišćenje od strane klijentskih aplikacija. - Just-In-Time Activation U COM+ -u kada klijent prosledi zahtev za kreiranje instance objekta, COM+ obezbeđuje da klijent referencira kontekst objekta umesto da referencira objekat. Klijent dobija referencu na objekat tek kada pozove metodu tog objekta. Ova tehnika se naziva Just-In-Time Activation (pravovremena aktivacija). Pretpostavimo da imate hiljadu klijenata koji žele da instanciraju određenu komponentu ali samo nekoliko od njih želi da da pozove neku metodu te komponente. U tom slučaju, javio bi se veliki overhead ako bi se kreirale instance komponente za svakog klijenta. - Event Services čiji je zadatak da obrađuje događaje između dva objekta. U COM-u, događaji su se mogli obrađivati na dva načina, prvi je bio korišćenje povratnog mehanizma interfejsa gde klijent implementira neki interfejs koji koristi komponenta. Događaji ili notifikacije su tada bivali inicirani pozivanjem preko klijentskog interfejsa. Drugi način je Connectable Objects, 29
-
koji koristi standardni COM IconnectionPoint interfejs. Kada dva modula komuniciraju, jedan prosleđuje informacije a drugi ih prima. U COM+ modul koji prosleđuje informacije naziva se Publisher, a modul koji prima informacije naziva se Subscriber. U COM-u je postojalo nekoliko problema koji su rešeni u COM+ -u: • Publisher i Subscriber su bili tesno povezani zbog potrebe za “poznavanjem” definicija interfejsa jedno drugog u vreme kompajliranja . • Dodavanje Publisher-u podrške za multi-kasting ili povećani broj izlaza zahtevalo je mnogo kodovanja. • Arhitektura je samo opisivala set interfejsa. Programeri su i dalje morali da implementiraju te interfejse. • Connection point interfejsi su kreirani bez podrške za distribuirana okruženja i nisu bili efikasni u tim scenarijima. IMDB (predstavlja robustan, kratkotrajni i izvršni keš koji povećava performanse distribuiranih aplikacija). IMDB koristi OLE_DB i ADO i obezbeđuje brz pristup podacima koji se nalaze u bazama podataka. Umesto učitavnja u runtime modu, IMDB čuva bazu i kešu. Role-Based Security predstavlja način da pridružite različita prava pristupa komponenti različitim korisnicima ili grupama korisnika. Na primer, možete napraviti komponentu koja će menadžeru projekta omogućiti da čita, piše ili menja specifikaciju projekta, dok će programeri moći samo da čitaju specifikaciju. Prava pristupa se mogu određivati korišćenjem COM+ kataloga ili programskim putem (programiranjem).
7.2 Common Object Request Broker Architecture (CORBA) Veliki razvoj PC računara kao i pad njihove cene, doveo do velikog razvoja mrežnih tehnologija. pocetkom ’90-ih godina. Međutim, velika raznolikost umreženih sistema kao što su različiti hardver računara, različita mrežna oprema kao i veliki broj mrežnih protokola doveo je do jako otežanog razvoja mrežnih aplikacija. Sa ciljem da premosti jaz između programa koji su bili pisani na različitim programskim jezicima, izvršavali se na računarima na kojima su se izvršavali različiti operativni sistemi, koji su bili povezani preko različitih mrežnih tehnologija korišcenjem različitih mrežnih protokola, nastao je standard CORBA –Common Object Request Broker Architecture. CORBA je prvi, najvažniji i pre svega najambiciozniji middleware projekat pokrenut u istoriji. Proizvod je konzorcijuma OMG (Object Management Group) koji broji preko 700 clanova (što pojedinaca što velikih softverskih kompanija). CORBA je „papir“, tj. specifikacija na preko hiljadu strana. Prva specifikacija CORBA modela datira od 1991 god. i do danas je doživela nekoliko različitih verzija. CORBA je bila veoma popularna sredinom devedesetih, pre nagle ekspanzije Internet-a. OMG je sporo reagovao (pre svega zbog velikog broja članova) i nisu na vreme odgovorili na zahteve tržišta koje se preorijentisalo prema WEB-u i zbog toga su bili „pregaženi“. Razlozi zbog kojih CORBA nije postala ono za šta je bila namenjena leže u sledečim činjenicama: - skup razvoj aplikacija - CORBA je često suviše komplikovana - mnoge implementacije su pune raznih propusta (bug-ovi, sigurnosne rupe, itd.) Međutim, sigurno je da je glavni razlog polakog posustajanja CORBA-e nedovoljno brzo pračenje zahteva tržišta. Tržištu je bio potreban otvoren standard koji bi omogućio komunikaciju između različitih aplikacija kroz otvoreni Internet. CORBA komunikacija koristi više portova i zato ne prolazi kroz zaštitne zidove (firewall). Bez obzira što su CORBA poruke bile binarne i iz tog razloga su se prenosile jako brzo, prva tehnologija koja je značajnije zapretila CORBA-i je bila SOAP (Simple Object Access Protocol), koji je izdat 1999. godine. SOAP koristi XML poruke koje se lako prenose Internet-om i čitljive su i za računare i za ljude. Iako su XML poruke tekstualne, što znači da količina prenetih podataka nije optimalna, SOAP je brzo nadirao zbog lakoće upotrebe i lakog prolaženja kroz Internet (korišćenjem HTTP protokola bez problema prolazi kroz večinu firewall-ova). Sledeći događaj koji je isto doprineo gubitku tržišnog ucešca je bio kada se 2000. i 2001. „izduvao“ Internet balon i kada su mnoge kompanije koje su koristili CORBA-u nestale sa tržišta. Danas CORBA ima jako mali deo tržišnog ucešća, bez obzira na njene mnogobrojne pozitivne karakteristike. 30
CORBA je nezavisna od jezika i implementirana je na većem broju platformi nego COM. Međutim, postoje nekompatibilnosti između implementacija različitih proizvođača. CORBA predstavlja object bus koji omogućava klijentu da poziva metode sa objekta na serveru uz nezavisnst programskog jezika i lokacije objekta. Interakcija je omogućena preko ORB (Object Request Brokers) komponenata na klijentu i na serveru a komunikacija se odvija preko IIOP (Internet Inter-ORB Protocol). Mogućnosti CORBA objekata definisane su pomoću IDL (Interface Definition Language). Već smo rekli da CORBA predstavlja industrijski standard koji je definisao OMG (Object Management Group). OMG pokušava da pretvori u stavrnost ideju o mogućnosti da se komponente softvera mogu koristiti ako su već jednom napisane, ili da se mogu kupiti gotove od drugih proizvođača. Ovaj standard definiše interfejs koji bi trebalo da omogući da komponente napisane u različitim jezicima međusobno sarađuju. To je ostvareno definisanjem seta metoda koje su vidljive za ostale komponente. Od početka se pošlo sa predpostavkom da komponente mogu da budu postavljene na različitim čvorovima u mreži. Bez obzira da li su na istom serveru ili su distribuirane kroz mrežu, komponente komuniciraju zahvaljujući uslugama ORB (Object Request Broker). Klijent i server komponente slobodno komuniciraju kroz mrežu i pozivaju udaljene funkcije. To je upravo ono što je neophodno za ostvarenje koncepta aplikativnog servera kao srednjeg sloja u kome izvršenje posla aplikacije zavisi od ispunjenja zahteva upućenog serveru koji je zadužen za logiku aplikacije. CORBA dakle predstavlja model koji potpuno podržava ideju troslojne arhitekture, koja po prirodi ima aplikaciju distribuiranu između klijenta, aplikativnog servera i servera baze podataka. Već smo napomenuli da sve koponente u arhitekturi CORBA komuniciraju putem ORB-a. ORB ima mehanizam za poziv udaljenih procedura (RPC), kojim za komponente potpuno maskira mrežu i sve komunikacione tehnologije ispod, čime omogućava da se pozivi funkcija vrše kao da su lokalni bez obzira gde se nalaze. Ni klijent ni server na taj način više ne moraju brinuti o lokaciji, jeziku na kome je komponenta pisana niti o načinu na koji se vrši transport podataka kroz mrežu. ORB može biti implementiran kao proces na host-računaru kome klijent pristupa, kao proces na nekom centralnom računaru kroz koji klijent i server komuniciraju, ili kao servis operativnog sistema. U komunikaciji se koristi IIOP protokol (Internet Inter-ORB Protocol) a za definiciju interfejsa između dva CORBA objekta koristi se IDL (Interactive Development Language) specifikacija tj. interaktivni generator programa. IDL specifikacija je kompajlirana pomoću IDL kompajlera u svakom ciljnom jeziku i on treba da omogući impementaciju svih ovih metoda koji treba da budu potpuno nezavisno od vrste interfejsa. Ovde je jezik vezan za različite programske jezike (C, C++, Java, Smalltalk, Ada95, COBOL …). Ako je potrebno najednostavnije definisati CORBA specifikaciju može se reći da ona predstavlja mogućnost da se na jednom desktop računar omogući da mogu da se razmenjuju objekti koji se nalaze na računarima u mreži bez obzira na hardversku i softversku platformu na tim računarima. Drugim rečima moguće je da neki tekst procesor koji se izvršava na windows desktop računaru uključi u okviru sebe neku grafiku koja se generisala na nekom LINUX računaru koji se nalazi u mreži. Primena CORBA je specifikacija koja teoretski dozvoljava da dva CORBA programa komuniciraju bez ikakvih promena iako su: - pisana na različitim programskim jezicima (npr. C++ i Java) - izvršavaju se na različitim operativnim sistemima (npr. Windows i UNIX) - koriste različite mrežne protokole (npr. TCP/IP i Modbus) - izvršavaju se na različitom hardveru (npr. Intel 32 bitni procesori i Alpha procesori) - koriste različite mrežne tehnologije (npr. 100 Mbps Ethernet i token ring mreža) Na ovako složene zahteve CORBA odgovara tako, što se „useli“ između operativnog sistema i aplikacije i „sakrije“ složenost operativnog sistema (a zajedno sa OS-om sakriva složenost mrežnih protokola, hardvera računara i mrežnog hardvera). CORBA je izbor onih, kojima je potrebna brzina i nezavisnost od isporučioca hardvera, proizvođača operativnog sistema i/ili mrežne tehnologije. Oni koji se odluče za CORBA-u ne moraju da trpe politiku proizvođača kada dođe do prelaska na sledeću verziju operativnog sistema/hardvera. Kada određeni OS ili hardver postane nedostupan, CORBA 31
bazirane aplikacije se uz neznatne modifikacije mogu preneti na drugi hardver/operativni sistem. Kod CORBA-e se podaci prenose binarno. Ovakav tip prenosa je puno brži od prenosa tekstualnih sadržaja (npr. XML poruke kod SOAP-a). CORBA danas jedino na tržištu embedded sistema ima porast tržišnog ucešća. Sem te oblasti postoje instalacije u: - rezervacije avio karata - komunikacija između e-commerce aplikacija - telefonskim kompanijama (transakcije) - finansijskim sistemima Implementacije Kao što je vec ranije rečeno, CORBA je samo „papir“, tj. specifikacija na više od hiljadu stranica teksta. Ova specifikacija je bila ispred svog vremena kada je izašla (početkom devedesetih godina dvadesetog veka) i softverska zajednica je sa entuzijazmom prihvatila ovaj novi standard. Krenulo se u pisanje većeg broja implementacija. Implementacija je fizička realizacija CORBA specifikacije koja radi na jednom ili više operativnih sistema i/ili na određenoj hardverskoj platformi. U poznatije CORBA specifikacije spadaju omniORB 2.6, TAO 3.0, ORBit2 2.4, MICO 3.0, IIOP.NET 2.3, Visibroker 2.6 i orbacus 2.6. Arhitektura
Slika 7.1. Opšta arhitektura CORBA-e Prikazana slika je relativno loša, ali se najvažniji elementi lepo vide: - Object impl – server. Preciznije: serverski objekat - Client – klijent, koristi „usluge“ servera - Object Request Broker – sloj koji „sedi“ na operativnom sistemu i sakriva njegovu složenost - ORB Interface – API preko koga i klijent i server pristupaju ORB-u - IDL Skeleton – kod dobijen prevođenjem IDL-a. Mapiranje tipova (tzv. marshaling) i bazne klase koje serverski objekat treba da implementira - IDL Stubs – poput IDL Skeleton-a, služi za mapiranje tipova - Object adapter – povecava portabilnost serverske implementacije jer omogučava pisanje koda servera koji je nezavisan od korišcene CORBA implementacije Postoje dve verzije object adapter-a: - BOA (Basic Object Adapter) i - POA (Portable Object Adapter) POA je novijeg datuma i prakticno razdvaja implementaciju serverskog objekta od objekta koji obraduje zahteve (servant). Od svih objekata sa slike 1., programer koji radi na razvoju CORBA aplikacije piše samo klijenta i implementaciju serverskog objekta. Enterprice Java Beans (EJB) Predstavlja distribuirani, transakcioni, serverski komponentni model. EJB nije proizvod već specifikacija koju je izdao Sun Microsystems za Java Platformu. EJB je nezavisna od platforme, ali ne i od jezika. Svi EJB objekti moraju biti napisani u jeziku Java. Za komunikaciju izmenu različitih 32
sistema, EJB koristi varijantu IIOP nazvanu RMI preko IIOP (Remote Method Invocation over IIOP). Daljinsko pozivanje metoda (RMI) Pre nego što pređemo na objašnjavanje EJB specifikacije potrebno je objasniti RMI Remote Method Invocationss –metod udaljenog poziva). Nešto slično kao što je RPC (Remote Procedure Call) u klijent server modelu to je RMI u Java modelu. On omogućava Java – Java komunikaciju i pozivanje metoda iz udaljenih Java aplikacija od strane Java apleta, Java IDL jezika (jezik kojim se definišu interfejsi po CORBA standardu i preko ORB-a (Object Request Broker) pozivaju metode u programima napisanim u bilo kom programskom jeziku koji podržava CORBA standard) i JDBC (Java DB Connectivity) koji predstavlja veoma moćnu tehnologiju u upravljanju bazama podataka tj. to je prvi standardizovan set objekata i metoda za interakciju sa bazama podataka i predstavlja sastavni deo Java Entrprise API-a.. RMI mehanizam vam omogućava da uradite nešto što zvuči jednostavno. Ako imate pristup objektu na drugoj mašini, možete da pozovete metodu udaljenog objekta. Naravno, parametri metode moraju nekako biti prosleđeni drugoj mašini, server mora biti obavešten da izvrši metodu, i povratna vrednost mora biti vraćena nazad. RMI rukuje ovim detaljima. Na primer, klijent tražeći informaciju o nekom proizvodu može da postavi upit Warehouse objektu na serveru. On poziva udaljenu metodu, find, koja ima jedan parametar: Customer objekat. Metoda find vraća objekat klijentu: Product objekat (slika 7.2).
Slika 7.2 U RMI terminologiji, objekat čija metoda pravi daljinski poziv se naziva klijentski objekat. Daljinski objekat se naziva serverski objekat. Važno je zapamtiti da se klijent/server terminologija odnosi na samo jedan poziv metodi. Računar na kome se izvršava Java kod koji poziva udaljenu metodu je klijent samo za taj poziv, a računar koji sadrži objekat koji obrađuje poziv je server samo za taj poziv. Skroz je moguće da se uloge kasnije obrnu. Server prethodnog poziva može i sam da postane klijent ako pozove daljinsku metodu objekta koja se nalazi na drugom računaru. RMI je protokol rezervisan samo za Javu.. Sve ove tehnologije pružaju jaka sredstva za pisanje distribuiranih, višeslojnih i višekorisničkih klijent server aplikacija za pristup relacionim bazama podataka. Java programeri su dobili snažno oruđe koje im omogućava da primene koncept “nezavisna platforma-nezavisna baza”. Java apleti i aplikacije sada mogu podjednako lako pristupati bilo kojoj bazi podataka na bilo kojoj platformi. Iako je u nazivu JDBC pomenuta baza podataka ona ne predstavlja bazu podataka u užem smislu reći. Naprotiv ona predstavlja mnogo širi pojam kao što su oblik, lokacija ili organizacija podataka. Korišćenjem odgovarajućeg drajvera omogućeno je da se
33
podaci koji se dobijaju iz klasične baze podataka ili iz audio-video signala sa satelita, potpuno isto tretiraju i obrađuju. Za razliku od RMI tehnologije čija je implementacija sastavni deo Java jezika, EJB specifikacija ne proširuje nijednu određenu implementaciju, već dozvoljava proizvođačima da sami prave sopstvene implementacije. Specifikacija je dovoljno precizno definisana tako da obezbedi da se softver koji koristi EJB tehnologiju može instalirati u različita EJB okruženja bez modifikacije. Dobra strana je što ovakav pristup omogućuje da se poslovna logika potrebna aplikaciji može razvijati bez potrebe da se brine o okruženju u kome će se ona izvršavati. Sana EJB specifikacija definiše model serverskih komponenti za razvoj višeslojnih arhitektura sa distribuiranim objektima. Važno je primetiti da se EJB ne bavi klijentskom stranom već definiše okruženje u kome žive EJB komponente. EJB arhitekturu čine EJB server i EJB kontejner. Funkcije EJB servera i kontejnera nisu strogo razdvojene. U principu je zamišljeno da EJB server i kontejner budu nezavisni jedan od drugog što bi omogućilo izgradnju EJB okruženja kombinovanjem komponenti različitih proizvođača. Za sada u praksi to nije moguće tako da svaki proizvođač nudi svoj par server/kontejner koji se ne može razdvojiti. JDBC je otvorio velike mogučnosti komunikacije sa bazama podataka preko Intraneta i Interneta. U saradnji sa RMI i CORBA, primena JDBC u višeplatformskom i višebaznom okruženju postaje praktično neograničena. Koristeći sigurnosne mehanizme Jave, sistem postaje veoma upotrebljiv na Internetu, pa zato i ne ćudi pojava velikog broja baza podataka na WEB-u. Ovakva tehnologija omogućava da zaposleni noseći svoj notebook sa Java enabled browser-om, pristupaju podacima iz baza svoje kompanije sa bilo koje tačke na planeti, što je otvorilo neslućene poslovne mogućnosti. Podatak da se danas u svetu najviše traže programeri sa znanjem COM+, JDBC, RMI i CORBA tehnologija dovoljno govori u kome će se pravcu razvijati distribuirano upravljanje bazama podataka. Enterprise JavaBeans 3 EJB predstavlja jednu od nekoliko Java API specifikacija za Java EE platformu. EJB standard definiše model serverskih komponenti koje enkapsuliraju poslovnu logiku i koriste se za modularan razvoj višeslojnih arhitektura sa distribuiranim objektima. EJB specifikaciju originalno je razvio 1997. godine IBM, da bi njen dalji razvoj preuzeo Sun Mycrosistems (EJB 1.0 i 1.1). Kasnije verzije EJB specifikacije razvijane su kroz JCP (Java Community Process) i definisane su odgovarajućim JSR dokumentima (EJB 2.0 – JSR 19, EJB 2.1 – JSR 153, EJB 3.0 – JSR 220). Aktuelna verzija, EJB 3.0, kompletirana je 2006.godine a na njenom razvoju radila je ekspertska grupa koju čine Sun, IBM, Apache, BEA Systems, Oracle, Sybase i drugi. EJB 3.0 specifikacija podeljena je u tri dela: EJB osnovni zahtevi – dokument koji definiše interfejse isporučioca servisa (SPI – Service Provider Interface) između instance bean-a i kontejnera, protokole, veze kontejnera i komponenata, razne servise koje kontejner treba da obezbedi bean-u, i druge detalje vezano za razvoj i pakovanje svih vrsta EJB komponenti. 2. EJB 3.0 pojednostavljen API – dokument koji predstavlja priručnik za upoznavanje sa onim delovima prethodnih verzija EJB specifikacije koji su znatno uprošćeni u cilju lakšeg razvoja i korišćenja EJB komponenti. 3. JPA (Java Persistence API) – dokument koji specificira razvijanje i manipulisanje perzistentnim entitetima koje karakteriše POJO (Plain Old Java Objects) stil. Iako je JPA sastavni deo EJB specifikacije, izvesno je da će se njen dalji razvoj u budućnosti odvijati nezavisno, obzirom da se perzistentni entiteti mogu koristiti u bilo kojoj vrsti Java aplikacija, ne samo u EJB aplikacijama. 1.
Kako je EJB rezultat sporazumnog razvoja standardnog načina kreiranja i korišćenja serverskih distribuiranih komponenti, u kom su učestvovali i brojni proizvođači aplikacionih servera, EJB komponente se mogu izvršavati na gotovo bilo kom aplikacionom serveru. Drugim rečima, proizvođači aplikacionih servera su implementiranjem EJB specifikacije odabrali da osiguraju svoje poslovanje pružajući viši nivo kvaliteta, umesto “vezivanja“ korisnika za svoje proizvode nestandardnim, proizvođačkim servisima komponenti. 34
EJB specifikacija definiše arhitekturu serverskih komponenti za sloj poslovne logike. Komponenta se u ovom kontekstu može opisati kao zatvoren entitet koji se može uvek iznova koristiti od strane iste, ili potpuno druge aplikacije, sve dok su zadovoljena pravila semantike. Komponenta mora biti spakovana zajedno sa svim potrebnim informacijama kako bi mogla da pruži nezavisnu postojanost izvan okvira originalne aplikacije, sa mogućnošću višestruke upotrebe. Poslovna ili sistemska aplikacija se zatim može realizovati tako da sadrži brojne softverske kompenente koje su portabilne, mogu se koristiti više puta i od kojih je svaka zadužena za obezbeđivanje određene funkcionalnosti. EJB komponente su serverski orijentisane, namenjene za izvršavanje složenih algoritama ili sigurno izvođenje transakcionih operacija. Serverske komponente se izvršavaju u okruženjima koja moraju biti raspoloživa (24x7), otporna na greške, transakciona, višekorisnička i sigurna. Aplikacioni serveri obezbeđuju takvo okruženje za EJB komponente, kao i servise potrebne za njihovo funkcionisanje. Korišćenje EJB komponenti na više načina pojednostavljuje razvoj velikih, distribuiranih aplikacija. Na prvom mestu, obzirom da EJB kontejner obezbeđuje servise sistemskog nivoa bean-u (kao što su upravljanje transakcijama i sigurnosni servisi), programer može da se fokusira na rešavanje problema vezanih za poslovnu logiku. Kao drugo, pošto bean-ovi sadrže pravila poslovne logike, a ne klijenti, programer klijentske aplikacije može da se usredsredi na prezentacioni aspekt. Kao rezultat, klijent je veoma rasterećen što je veoma bitno za klijentske aplikacije koje su ugrađene u razne vrste uređaja sa ograničenim resursima (npr. mobilni telefon, palm top). Najzad, budući da su EJB komponente prenosive, nove aplikacije mogu koristiti postojeće bean-ove. Ove aplikacije se mogu izvršavati na bilo kom Java EE-kompatibilnom serveru koji implementira standardne API specifikacije. Tipično, EJB komponente izvršavaju sledeće zadatke: Implementacija poslovne logike – na primer, slanje konfirmacionog mejla prilikom potvrde narudžbine, putem JavaMail APIa; izračunavanje troškova u online kupovnoj listi; utvrđivanje privilegija menadžera pri pokušaju odobravanja narudžbine. Pristup bazi podataka – na primer prilikom poručivanja knjiga, transfera novca između dva bankovna računa, ili pozivanja memorisane procedure. Jedan od mnogih načina pristepena bazi podataka posredstvom EJB komponenti je i korišćenje JDBC interfejsa. Integracija sa drugim sistemima – na primer pozivanje transakcionog CICS sistema (Customer Information Control System) pisanog u C jeziku za utvrđivanje izloženosti riziku novom korisniku osiguranja. 1.1. Vrste EJB komponenti Postoje dve vrste EJB komponenti - session i message-driven, dok je treća vrsta koja je bila definisana u okviru ranijih verzija EJB specifikacije kao EJB entity komponente, danas opisana JPA specifikacijom kao izdvojena celina pod jednostavnim imenom - entiteti. Definisanje neke komponente na jedan od ovih načina je deklarativno – dovoljno je u konfiguraciji komponente napisati kojoj vrsti pripada. U nastavku teksta na početku je dat kratak opis EJB komponenti koje su orijentisane na poruke, a detaljnije se opisane session komponente i entiteti. 1.1.1. EJB komponente orijentisane na poruke Komunikacija putem poruka predstavlja alternativu RMI protokolu. Razmena poruka se vrši preko dodatnog međusloja (MOM - Message Oriented Middleware) između pošiljaoca i primaoca poruka. Pošiljaoc je nakon slanja poruke slobodan da nastavi sa drugim zadacima, dok se srednji sloj brine o samoj isporuci poruke primaocu. Na primer, prilikom online kupovine knjiga, moguće je nastaviti sa pretraživanjem sajta tokom procesa autorizacije kreditne kartice. Ukoliko se proces završi regularno, kupac će biti obavešten o uspešnoj narudžbini konfirmacionim mejlom.
35
Vrsta EJB komponenti koja je orijentisana na poruke (MDB – Message-Driven Beans) kombinuje funkcionalnost session komponenti sa JMS (Java Messaging Service) osluškivačem, omogućavajući na taj način asinhronu razmenu poruka između EJB komponenti. Klijentima nije omogućen pristup MDB bean-ovima putem poslovnog interfejsa, zapravo, ne postoji način da klijent uopšte identifikuje MDB bean i ostvari komunikaciju sa njim. Jedini način interakcije klijenta sa bean-om jeste kroz srednji sloj baziran na porukama, kao što je JMS. Zalihama MDB instanci upravlja EJB kontejner, koji prima poruke od srednjeg sloja i dodeljuje ih slobodnim bean-ovima.
slika 1. Životni ciklus MDB komponente Životni ciklus MDB instance uključuje dva stanja: stanje kada instanca još ne postoji (Does Not Exists) i stanje kada se instanca nalazi u zalihama i spremna je za korišćenje (Ready). Kontejner može odlučiti da, u cilju uštede resursa, ukloni neki bean iz zaliha pozivanjem metode remove(). 1.1.2. EJB session komponente Session komponente generalno reprezentuju akcije u poslovnom procesu. One predstavljaju privremenu komunikaciju sa klijentom, i implementiraju pravila poslovne logike, na primer u slučaju bankarskih transakcija, narudžbina, kontrole zaliha ili operacija nad bazom podataka. Mogu se koristiti samo od strane jednog klijenta u istom trenutku, a po završetku sesije, session bean sa svim svojim podacima nestaje. Session komponente mogu biti realizovane na dva načina: session komponente bez stanja i session komponente sa stanjem. Session komponente bez stanja (Stateless Session Bean) predstavljaju distribuirane objekte koji nemaju pridružene podatke o stanju, stoga dozvoljavaju konkurentan pristup. Očuvanje vrednosti atributa u okviru jedne instance nije garantovano, ali je memorijsko premašenje tokom održavanja veze sa pozivajućom aplikacijom znatno manje u odnosu na session komponente sa stanjem. Na primer, prilikom verifikacije kreditne kartice, bean zadužen za verifikaciju će prvo uzeti podatke o broju kartice, roku važenja kartice, nosiocu kartice i iznosu na kartici. Zatim će nakon provere, bean vratiti da/ne odgovor, zavisno od validnosti kreditne kartice. Po okončanju ovog zadatka, bean je slobodan da usluži narednog klijenta i nema više nikakve podatke o prethodnom. Obzirom da nijedan atribut instance ne čuva klijent-specifične podatke, EJB kontejneru je omogućeno da kreira zalihu (pool) session bean-ova. Zbog ove osobine, session komponente bez stanja su izuzetno skalabilne u slučaju velikog broja korisnika, a takođe obezbeđuju i dobre performanse pošto ne postoji potreba da kontejner pomera bean iz memorije i skladišti podatke na disku. Životnim ciklusom session bean-ova upravlja kontejner, a na slici 14 je prikazan životni ciklus jedne session komponente bez stanja.
36
slika 2. Životni ciklus session komponente bez stanja Postoje samo dva stanja u slučaju session komponente bez stanja: stanje kada instanca ne postoji (Does Not Exists) i stanje kada je instanca spremna za korišćenje (Ready). Nakon što kontejner kreira novi bean pomoću metode newInstance(), on poziva metode za postavljanje okruženja unutar bean-a setSessionContext(). Time je omogućena tranzicija u drugo stanje, kada je bean spreman za korišćenje. Klijent onda može koristiti poslovne metode bean-a. Kontejner poziva preDestroy() metodu kada instanca više nije potrebna, što ima za posledicu povratak bean-a u početno stanje (radi jasnije analize životnog ciklusa, uloga pool-a biće zanemarena). Session komponente sa stanjem (Stateful Session Bean) sadrže i podatke o stanju, odnosno prate sa kojom aplikacijom interaguju tokom sesije i pamte svoje stanje između poziva od strane istog klijenta. Kontejner skladišti i obnavlja session komponente sa uspostavom stanja prilikom pomeranja iz radne u dugotrajnu memoriju. Zbog ovih osobina, EJB komponente sa stanjem unose veće premašenje u sistem i manje su skalabilne od stateless bean-ova. Tipična primena ovog tipa session komponenti je prilikom online kupovine, gde svaki kupac ima svoj nalog i pri svakom prijavljivanju, detalji o njegovoj “korpi“ za kupovinu se od strane bean-a povlače iz baze.
slika 3. Životni ciklus session komponente sa stanjem Sa slike 15 se vidi da ova vrsta session komponenti ima i treće stanje – stanje kada je bean pasivan (Passive). Tranzicija iz stanja Ready u stanje Passive dešava se kada kontejner perzistira podatke iz bean-a u sekundarnu memoriju a sam bean smesti u pool, pozivanjem metode 37
prePassivate(), u cilju oslobađanja resursa. Kada klijent ponovo pozove neku od poslovnih metoda tog bean-a, kontejner obnavlja sadržaj bean-a a zatim ga, pozivanjem metode preActivate()“budi“ iz pasivnog stanja i bean je ponovo spreman da opsluži zahteve klijenta. 1.2. EJB kontejner EJB komponente smeštene su unutar kontejnera na aplikacionom serveru. Specifikacijom je definisan način na koji se obavlja interakcija između EJB komponente i njenog kontejnera, kao i interakcija klijentskog koda sa kontejnerom. Najvažnija funkcija kontejnera jeste da obezbedi sigurno, distribuirano, transakciono okruženje koje je kao takvo pogodno za egzistenciju EJB komponente unutar njega. EJB kontejner se ponaša kao posrednik između klijenta i bean-a. Zahvaljujući kontejneru, bean je potpuno izolovan u odnosu na klijenta i ne može mu se direktno pristupiti. Kada klijentska aplikacija pozove udaljenu metodu EJB komponente, kontejner je prvo presreće kako bi utvrdio da su pravila vezana za perzistenciju, transakcije i sigurnost adekvatno primenjena na svaku operaciju koju klijent želi da izvrši. Kontejner vodi računa o više bean-ova istovremeno, na sličan način kao što Web server opslužuje više servleta. Kada bean nije u upotrebi, kontejner ga smešta u pool kako bi mogao da ga koristi novi klijent. EJB komponenta u potpunosti zavisi od kontejnera; na primer, ukoliko joj je potrebna JDBC konekcija ili servis koji pruža druga EJB komponenta, kontejner će joj to obezbediti. EJB komponenta komunicira sa kontejnerom na tri načina: pozivanjem callback metoda, pomoću EJBContext interfejsa, ili JNDI interfejsa. Callback metode. Svaki session bean može da implementira EnterpriseBean interfejs koji definiše razne callback metode. Svaka od ovih metoda obaveštava bean u trenucima kada dolazi do promena stanja u njegovom životnom ciklusu, a kontejner ih poziva kako bi obavestio bean da se sprema da ga aktivira, perzistira njegovo stanje u bazi podataka, završi transakciju, ukloni ga iz memorije. Callback metode omogućavaju bean-u da završi poslove koji su u toku, pre ili nakon događaja koji sledi. EJBContext. Svakom bean-u se pridružuje EJBContext objekat, koji predstavlja njegovu direktnu vezu sa kontejnerom. Interfejs EJBContext obezbeđuje metode za interakciju sa kontejnerom tako da bean može putem njih zahtevati informacije o svom okruženju, na primer informacije o klijentu, ili status transakcije. JNDI interfejs predstavlja standardno proširenje Java platforme za pristup imenovanim servisima kao što su LDAP, NetWare, sistemi datoteka itd. Svaki bean automatski ima pristup specijalnom imenovanom sitemu ENC (Environment Naming Context). ENC sistemom upravlja kontejner a bean mu pristupa putem JNDI interfejsa. JNDI ENC omogućava bean-u da pristupa resursima kao što su JDBC konekcije, druge EJB komponente, i specijalna osobine i servisi koje pružaju te komponente.
38
slika 4. EJB kontejner sa pripadajućim EJB komponentama različitih vrsta Poslovni (business) interfejs navodi metode koje nudi EJB komponenta, kako bi one bile vidljive klijentima. Zavisno od lokacije klijenta, business intefejs se dalje može podeliti na lokalni i udaljeni. 1.3. Entiteti i menadžer entiteta Entiteti predstavljaju perzistentne objekte koji ne nestaju po završetku komunikacije sa klijentom, i više klijenata može istovremeno deliti jedan entitet. Životni vek im je vezan za životni vek podataka koji predstavljaju, a ne aplikacije koja ih koristi. Njima su tipično predstavljeni podaci uskladišteni u jednom redu tabele u bazi podataka. Takođe, entiteti imaju atribute za potrebe identifikacije (koji odgovaraju primarnim ključevima u tabeli) koji mogu biti prosti ili složeni, a mogu imati i definisane veze sa drugim entitetima. Poslovna logika implementirana kroz session komponente, a uz pomoć servisa za perzistenciju, vodi računa da podaci iz entiteta budu trajno sačuvani. U okviru JPA dela EJB 3 specifikacije koji se bavi entitetima i načinom njihove perzistencije, definisani su interfejsi neophodni za izvođenje operacija nad entitetima. Entiteti se razlikuju od EJB komponenti po tome što reprezentuju podatke koji se skladište u bazi. Takođe, entiteti se mogu koristiti i u J2SE aplikacijama, za razliku od session ili MDB bean-ova. Menadžeru entiteta, koji implementira potrebne interfejse za perzistenciju definisane JPA specifikacijom, delegirani su svi zadaci vezani za kreiranje, čitanje, izmenu i brisanje entiteta. Bez menadžera, entitet nije ništa drugo do regularan, plain old, Java objekat (POJO), dok sam menadžer predstavlja instancu klase EntityManager. Kada menadžer entiteta referencira jedan entitet, za taj objekat se kaže da je upravljan (managed) od strane menadžera. Set upravljanih instanci entiteta pod nadležnošću jednog menadžera u datom trenutku predstavlja kontekst perzistencije (persistence context). U jednom vremenskom trenutku samo jedna Java instanca sa istim identifikatorom može postojati u okviru konteksta perzistencije. Interfejs EntityManager obezbeđuje metode za tri tipa opracija: upravljanje životnim ciklusom entiteta, sinhronizacija sa bazom podataka, pretraga entiteta i izvršavanje upita. 1.3.1. Upravljanje životnim ciklusom entiteta Životni ciklus jedne instance entiteta određen je sa dva glavna aspekta koji se odnose na vezu instance sa specifičnim kontekstom perzistencije, i sinhronizaciju stanja instance sa stanjem u bazi podataka. Menadžer entiteta razlikuje četiri stanja u životnom ciklusu entiteta: Nova instanca (New). Instanca entiteta je kreirana u memoriji ali joj još uvek nije dodeljen identifikator ili kontekst perzistencije. U ovom trenutku stanje entiteta još uvek nije sinhronizovano sa stanjem u bazi i menadžer ne zna za postojanje novog entiteta. Upravljana instanca (Managed). Entitet poseduje identifikator i kontekst perzistencije. Promene na entitetu će biti sinhronizovane sa bazom kada se transakcija uspešno izvrši (commited) ili u slučaju eksplicitno zahtevane sinhronizacije pomoću flush() operacije. Entitet dolazi u upravljano stanje na mnogo načina: pozivima persist(), merge() ili refresh() metoda, kao i u slučaju da je entitet rezultat pretrage ili upita. Neupravljana instanca (Detached). Entitet i dalje poseduje identifikator ali nije više asociran sa kontekstom perzistencije i menadžer više njim ne upravlja. Uklonjena instanca (Removed). Entitet je još uvek vezan za kontekst perzistencije ali je raspoređen za uklanjanje iz baze podataka.
39
slika 5. Tranzicije stanja entiteta Operacijom remove() mogu se rasporediti za uklanjanje iz baze podataka jedino entiteti koji se nalaze u upravljanom stanju. Pomoću ove operacije podaci u bazi se raspoređuju za uklanjanje, što će se zaista i desiti kada se transakcija uspešno izvrši, ili kada se pozove operacija flush(). Pomoću operacije merge() moguće je neupravljanim entitetima ponovo dodeliti kontekst perzistencije. Entitet dolazi u Detached stanje po prestanku postojanja konteksta perzistencije ili kada se isporuči klijentu kao serijalizovan objekat. 1.3.2. Sinhronizacija sa bazom podataka Izmene na lokalnim entitetima se obično sinhronizuju sa bazom podataka u vreme potvrđivanja transakcije (commit). Međutim, ponekad je važno izvršiti sinhronizaciju pre potvrđivanja operacija transakcije. Na primer, izmene entiteta mogu uticati na rezultate upita u okviru iste transakcije. U tom slučaju, neophodno je obaviti sinhronizaciju pre izvršavanja upita. Izvršavanje prevremene sinhronizacije kontroliše se postavljanjem flush režima rada za željene metode korišćenjem anotacija, ili globalno za kontekst perzistencije pomoću setFlushMode() operacije. Dostupne opcije vezane za flush režim rada uključuju COMMIT za sinhronizaciju samo u vreme potvrđivanja transakcije, i AUTO za sinhronizaciju stanja entiteta i u vreme potvrđivanja transakcije i pre izvršavanja upita. Operacija flush() obavlja sinhronizaciju stanja svih entiteta u okviru konteksta perzistencije sa entitetima u bazi ali ne uključuje i ažuriranje lokalnih entiteta na osnovu njihovog stanja u bazi. Za potrebe ažuriranja, mora se eksplicitno pozvati operacija refresh(). 1.3.3. Pretraga entiteta i izvršavanje upita U cilju identifikacije entiteta koje prethodi referenciranju instance istog, potrebno je ili direktno adresirati individualan entitet korišćenjem primarnog ključa, ili izvršiti upit koji će kao rezultat vratiti set entiteta na osnovu zadatih uslova. Menadžer entiteta obezbeđuje metodu find() za potrebe adresiranja entiteta na osnovu primarnog ključa. Ova metoda će kao rezultat vratiti upravljan entitet odgovarajuće klase u slučaju ispravno navedenog identifikatora, u suprotnom, rezultat će biti null vrednost. U većini slučajeva identifikator entiteta nam je nepoznat, ili nam je potrebno više od jednog rezultata, ili je neophodno postaviti jedan ili više uslova za pronalaženje entiteta; odnosno, potrebno je formulisati upit. Postoje brojni način za definisanje pretrage koje nudi interfejs EntityManager, ali su generalni koraci pri tom uvek isti: pravljenje nove javax.persistance.Query instance od strane menadžera, postavljanje parametara upita i gornju granicu veličine rezultujećeg seta (ako je potrebno), 40
izvršavanje upita. Prvi korak obavlja menadžer entiteta, dok druga dva koriste Query interfejs. Moguće je odabrati korišćenje upita pisane u EJB-QL (EJB Query Language) jeziku ili nativnom SQL-u. EJB-QL je objektni upitni jezik koji je po sintaksi veoma sličan SQL-u. Osnovna razlika između EJB-QL i SQL jezika jeste u tome što EJB-QL koristi entitete za model podataka i garantuje kompletnu portabilnost između heterogenih baza podataka. SQL, i pored toga što predstavlja ISO standard, često ne ispunjava zahteve portabilnosti usled velikog broja različitih proizvođačkih dodataka i SQL dijalekata koji postoje. Postoje dve vrste EJB-QL upita koje se mogu koristiti – dinamički i statički. Metoda createQuery() koristi se za kreiranje dinamičkih upita, odnosno upita koji su definisani u okviru koda koji implementira poslovnu logiku aplikacije. Metoda createNamedQuery() služi za upotrebu statičkih, ili imenovanih upita, koji se definišu pomoću @NamedQuery anotacije i mogu se pozivati više puta pomoću imena upita. Naveden je primer korišćenja ove dve metode za dobijanje spiska svih radnika: /* kreiranje dinamičkog upita */ Query query = manager.createQuery("SELECT r FROM Radnik r"); /* kreiranje imenovanog upita */ @NamedQuery( name="sviRadnici", query="SELECT r FROM Radnik r"); /*pozivanje imenovanog upita*/ radnici = manager.createNamedQuery("sviRadnici"); 1.4. Metapodaci Svakom entitetu su pridruženi metapodaci u određenoj količini koji ga opisuju. Ovi metapodaci omogućuju sloju za perzistenciju da prepozna, interpretira i upravlja na odgovarajući način entitetom od učitavanja, preko izvršavanja do uklanjanja. Količina metapodataka koji su zaista neophodni da bi se opisao entitet je zapravo mala, međutim, kao i u svim sofisticiranim tehnologijama metapodacima je moguće specificirati sve relevantne detalje. Metapodaci entiteta mogu biti specificirani na jedan od tri načina – pomoću XML deskriptora, XDoclet komentara ili pomoću anotacija. Uprkos razlikama u sintaksi moguće je svakim od navedenih pristupa postići isti nivo konfiguracije. 1.4.1. Anotacije Anotacije predstavljaju osobinu programskog jezika koja omogućava struktuiranim i tipiziranim metapodacima da budu deo izvornog koda. Pojam anotacija uveden je u Java SE 5, i predstavlja ključni deo EJB 3.0 i Java EE 5 specifikacija. One se mogu koristiti kao alternativa standardnim XML deskriptor fajlovima, ili u kombinaciji sa njima. Definicije metapodatka unutar Java koda upotrebljavaju se, u različitim oblicima, od samog nastanka Java jezika. Prvi primer bili su Javadoc tagovi u okviru komentara koji su se koristili za generisanje API dokumentacije u HTML formatu. Ideja je bila da se metapodaci nalaze u specijalnom obliku komentara unutar koda, koje zatim posebni kompajleri ili nezavisni alati obrađuju i upravljaju dobijenim informacijama. Najistaknutiji predstavnik ove tehnike jeste popularni XDoclet alat, koji je zapravo pretprocesor izvornog koda. Bitno je istaći da su u okviru Javadoc/XDoclet pristupa metapodaci smešteni unutar komentara, što znači da ih ne obrađuje Java kompajler. Metapodaci se ne kompajliraju u regularnu klasu i dostupni su samo u vreme kompajliranja. Sintaksa i semantika metapodataka se ne proverava od strane kompajlera, što može uzrokovati kasno otkrivanje grešaka.
41
SOAP (Simple Object Access Protocol) je kompletno kreiran na postojećim, proverenim i široko prihvaćenim tehnologijama kao što su HTTP i XML. SOAP koristi XML za prenos podataka izmenu aplikacija, a pošto je XML univerzalni standard, sve platforme mogu da pristupe i obrade informaciju. Pošto koristi HTTP, jednostavno prolazi kroz port 80, tako da firewall-ovi ne predstavljaju problem. Pristup različitim aplikacijama na raznim platformama sa SOAP-om postaje jednostavan, Java aplikacija na Unix-u jednostavno može da poziva metode COM objekta na Windows serveru. Klijentska aplikacija na iMac-u pristupa objektu na mainframe računaru. Sve ovo postaje transparentno i ne zahteva bilo kakvu posebnu administraciju. SOAP je možda nekad bio jednostavan, ali je i on postao kompleksan, dok je prikupljao sve više osobina koje ima CORBA. XML protokol ima prednost u tome što je manje – više čitljiv za ljude tako da je nešto lakši za debagovanje. Sa druge strane XML procesiranje predstavlja svojevrsno usko grlo za performanse. Sve u svemu, CORBA je mnogo efikasniji, premda je SOAP bolje prilagođen mrežnoj arhitekturi. Ako se oba objekta koji komuniciraju međusobno implementiraju u javi onda je sva uopštenost i kompleksnost CORBA-e ili SOAP-a nepotrebna. Sun je razvio jednostavniji mehanizam, nazvan Remote Method Invocation (RMI), specijalno za komunikaciju između java aplikacija. HTML (HyperText Markup Language) HTML je jednostavan jezik koji se koristi za izradu hipermedijskih dokumenata od kojih se sastoji WEB. Temelji se na oznakama (tags) kojima se oblikuje izgled dokumenta koji se sastoje od teksta, slike, zvuka, filma i drugih međusobno povezanih objekata. Razvijen je početkom devedesetih godina na temeljima SGML jezika (Standard Generalized Marup Language) kojim je definisana sintaksa elemenata za oznake. Evolucijom tehnologija razvijao se i proširivao, pa je od jezika sa statičkim hipertekstualnim osobinama prerastao u jezik pogodan za iterakciju korisnika i WEB servera i prikaz dinamičkih multimedijalnih objekata. Danas razvojem dinamičkog HTML-a (DHTML) postaje nezamislivo kreiranje stranica koje ne sadrže dinamičke objekte i napredne komponente kao što su naredbe skriptnih jezika. Upotreba HTML jezika podrazumeva korišćenje struktuiranih tekstualnih datoteka u kojima se nalaze podaci i oznake jezika koje prepoznaju određene aplikacije na strani klijenta i pravilno ih interpretiraju (na primer WEB čitači). Moderni Web čitači (Microsoft Internet Explorer, Netscape Navigator ili Opera) naprednim osobinama diktiraju razvoj HTML i DHTML te olakšavaju interpretaciju i kvalitet stranica. Obogačen ugrađenim skript-programima koji se izvršavaju na strani klijenta ili servera, HTML predstavlja odličan jezik za prezentaciju kako stručnih i poslovnih tako i zabavnih sadržaja. Ukartko svaki HTML dokument se sastoji od određenih oznaka (tag) i tekstualnih podataka. Svaki dokument se sastoji od sekcije zaglavlja i sekcije tela. … … XML (eXtensible Markup Language) Danas, kada funkcionalnost poslovnog softvera u sve većoj meri zavisi od njegove sposobnosti da se integriše i razmenjuje informacije sa drugim poslovnim softverima, od vrhunskog značaja je postojanje i kontinuirani razvoj standarda za razmenu podataka. Ovi standardi postoje da bi komunikaciju i integraciju poslovnih softvera učinili efikasnom i prepoznatljivom i smanjili napor u implementaciji odgovarajućih interfejsa. Može se reći da je tehnološki razvoj, naročito u segmentu razvoja interneta, odnosno weba, danas ustanovio jedinstvenu tehnologiju za modeliranje struktura podataka koje se razmenjuju izmenu poslovnih softvera. Ta jedinstvena tehnologija je XML jezik. Najednostavnije rečeno XML predstavlja proširivi jezik za označavanje. To je prost i fleksibilan jezik zasnovan na SGML-u(Standard Generalized Marup Language). Prestavlja jezik za označavanje koji može da se pokrene na bilo kojoj platformi, operativnom sistemu ili okruženju i napravljen je tako da dizajnerima pruža mehanizme za bolje opisivanje njihovog sadržaja. Prvobitno je razvijen za izdavačke kuće i njihove projekte, ali je kasnije razvijen za efikasnu i lakšu razmenu podataka na 42
Webu. XML to radi na taj način što dozvoljava dizajnerima da napišu sopstvene definicije tipova dokumenata (documet type definitions DTD) koje opisuju skupove oznaka i atributa koji mogu da se koriste za opisivanje specifične vrste sadržaja. DTD-ovi su pravila vladanja jezika za označavanje koja definišu koji elementi označavanja mogu biti upotrebljeni za opisivanje dokumenata.XML je dovoljno robustan i proširiv da može da opiše ne samo sadržaj već i metapodatke. Metapodaci su informacije koje opisuju druge informacije. Primer metapodataka su kataloške oznake knjiga u biblioteci. Svaka kartica ili stavka u računarizovanom katalogu jeste informacija koja pruža informaciju o drugom izvoru informacija.Unutar svoje ljušture XML pruža šire značenje opisivanja sadržaja dokumenata ili mehanizma za opisivanje metapodataka, koristeći metod koji će raditi na svim računarima, bez obzira na platformu i operativni sistem. Na taj način XML će učiniti da se potrošači i proizvođači informacija lakše pronađu tj. mnogi poslovi vezani za pretraživanje ili razmenu informacija mogu se automatizovati pomoću XML-a., pružajući opšti okvir za predstavljanje informacija. XML jezik za modeliranje strukture podataka XML (eXtensible Markup Language) jezik predstavlja standardni način za modeliranje struktura podataka u elektronskom poslovanju. Iako je prvobitno namenjen primeni u web aplikacijama, postao je standard za predstavljanje podataka u poslovnim procesima, prihvaćen u potpunosti od strane najvećih proizvonača softvera i razvojne zajednice. Ideja je bila da se stvori jezik koji će i ljudi i računarski programi moći jednostavno da čitaju. XML definiše opštu sintaksu za označavanje podataka pomoću odgovarajućih tagova koje imaju poznato ili lako razumljivo značenje. Format koji obezbenuje XML za računarske elemente može se prilagoditi najrazličitijim oblastima, kao što su elektronska razmena podataka, čuvanje podataka, odvajanje podataka od prezentacije, vektorska grafika, sistemi glasovne pošte, izrada novih specijalizovanih jezika za označavanje. Osnovna svrha XML-a je da olakša deljenje podataka kroz različite informacione sisteme, posebno kroz one sisteme koji su povezani sa Internetom. XML je nastao iz potrebe da se same informacije sa HTML strana fizički odvoje od načina na koji se prikazuju unutar web strana (dizajna). Sam HTML je zasnovan na SGML-u (Standard Generalized Markup Language), opširnijem meta jeziku koji je postojao i pre pojave Web-a. SGML definiše gramatiku za sve markup jezike dokumenata. SGML dokumenti nose svoju gramatičku definiciju sa sobom u obliku Document Type Definition-a (DTD) datoteka. DTD datoteke definišu sve oznake (tagove) koje se koriste u jednom dokumentu kao i njihovu sintaksu. Struktura XML datoteke je hijerarhijska – sastoji se od otvorenih i zatvorenih tagova, unutar kojih su drugi tagovi. Tagovi su opisani u DTD (Document Type Definition) datoteci, koja predstavlja svojevrsnu gramatiku jezika. Za razliku od SGML-a, HTML-a i drugih markup jezika, XML dozvoljava korisniku slobodno kreiranje gramatike jezika. Iz tog razloga se za formiranje strukture podataka, mogu koristiti i prirodni jezici. Za tumačenje XML strukture i transformaciju u odrenenu strukturu podataka, koriste se tzv. parseri, programski moduli, napisani u odgovarajućem jeziku.
Slika 16. Primer XML dokumenta Iako XML ne zahteva striktnu specifikaciju gramatike dokumenta, dobra je praksa da se ona formira, da bi odgovarajući parseri mogli da izvrše validaciju dokumenta opisanog XML datotekom. Najvažnije prednosti korišćenja XML standarda za modeliranje podataka u poslovnim web aplikacijama su: - Samodokumentovanje. Korišćenje prirodnih jezika za opis strukture podataka. Kriva učenja XML jezika je mnogo strmija od učenja predstavljanja struktura podataka npr. U relacionim bazama. Jedan od osnovnih ciljeva XML specifikacije je integrisanje nove tehnologije za opis podataka u najkraćem mogućem roku. - Veliki stepen konzistentnosti sa HTML jezikom – jezikom web-a. Poznavanje HTML jezika dramatično ubrzava usvajanje XML. 43
- XML je danas usvojen kao de fakto i de jure standard za EDI (Electronic Data Interchange). On omogućava očuvanje konzistentnosti dokumenata prilikom razmene i ukida potrebu za prevodiocima u i iz različitih formata. - XML reprezentacija kompletne baze ili nekog njenog dela može poslužiti za backup, nezavistan od RDBMS (sistema za upravljanje relacionim bazama podataka), ili za migraciju podataka sa jednog sistema na drugi (npr. Oracle > SQL Server). Migracija se može izvesti na dva načina, pisanjem koda koji će vršiti svaku pojedinačnu migraciju ili uz pomoć takozvanog centralnog XML hub-a. Prednost centralnog hub-a je u tome da su za dodavanje novog formata baze potrebna samo dva nova konvertora, dok je istovremeno bez hub-a, za šest sistema prikazanih na drugoj slici potrebno 30 filtera.
Slika 17. Backup podataka iz relacionih baza primenom XML-a - Nezavisnost prikaza XML u odnosu na web browser, kod browser-a koji podržavaju XML. U ovom trenutku, najnovije verzije gotovo svih vodećih browser-a podržavaju XML. Ovo je posebno važno ukoliko je potrebno da se podaci iz baza prezentuju na Internetu, gde postoje različiti browser-i, za razliku od korporativnih mreža (intraneta), gde je browser uglavnom unificiran. Trenutno je najčešći način za prikaz XML-a na Internetu korišćenje XSLT-a (XML Style Language Transformation) za konverziju XML-a u HTML (simultana konverzija).
44
8 čas
Klijent server komponente – SERVER
Šta je to Server ? Sa hardverske strane, najprostiji odgovor na ovo pitanje je da je to računar koji istovremeno mogu da koriste više korisnika, a sa softverske strane Server je bilo koji proces koji obezbeđuje servise za klijente. On je reaktivan jer uvek čeka na zahteve klijenta. Ne postoje neka ograničenja niti neki posebni uslovi koji su potrebni da se neki računar pretvori u server. Poželjno je da računar koji radi kao server bude mnogo snažniji od uobičajenih klijent računara zato što server procesi moraju da zadovolje konkurentne zahteve više klijenata. Ovi računari obično imaju veću procesorsku snagu (ne retko i više snažnijih procesora), veći kapacitet operativne memorije i veći kapacitet diskova nego računari klijenata. Ono što opredeljuje da neki računar bude proglašen serverom predstavlja softver tj. operativni sistem. Zato se za server bira računar u zavisnosti od zahteva aplikacije koja treba na njemu da se izvršava. Da bi jedna klasična klijent server aplikacija mogla da se najbolje izvršava, potrebno je konfigurisati računar-server tako da operativni sistem na njemu podržava sledeće uslove: o deljivu memoriju (shared memory), o nezavisne aplikacije (application isolation), o multitasking sa pravom prečeg prioriteta (preemptive multitasting). Operativni sistem na serveru mora da omogući i kontroliše da više korisnika može istovremeno da pristupi zajedničkim resursima kojima taj server raspolaže. On ne sme da dozvoli da se zbog nedostupnosti nekog resursa, koji je zauzeo neki proces, blokira neki drugi proces i tako stopira izvršenje tog procesa. Princip prioriteta je jedan od glavnih arbitražnih faktora koji stoji na raspolaganju operativnom sistemu kod odlučivanja koliko vremena i kom procesu treba dodeliti neki resurs. Isti princip je vezan i za deljivu memoriju, s tim da se ovde treba voditi računa da ne dođe do mešanja memorijskog prostora dva ili više procesa koji se istovremeno izvršavaju u memoriji (problem se još više komplikuje ako imamo dva ili više procesora). Aplikacije koje se izvršavaju na serveru pored toga što dele zajedničke resurse moraju da ispunjavaju i još jedan uslov: izvršavanje jedne aplikacije ne sme da se meša u izvršavanje druge aplikacije. Operativni sistem je taj koji treba da vodi računa da ne dođe do toga i tako obezbedi da se greška u izvršavanju jedne aplikacije ne manifestuje u izvršavnju ostalih aplikacija koje se izvršavaju na isom serveru. Multitastig sa pravom prečeg prioriteta mora da obezbedi da se svi procesi na jednom serveru izvršavaju u određenim vremenskim razmacima tj. da se svako procesu dodeli određeni kvant vremena (mali vremenski preiod) u okviru koga taj proces raspolaže glavnim procesorom u serveru. Ne sme se dozvoliti da neki jednostavan proces zauzme sve resurse u sistemu i tako spreči izvršavanje ostalih procesa. Definisanje relativnog prioriteta različitih procesa koji se izvršavaju na serveru je posao operativnog sistema a oni zavise od vrste i svrhe zadataka koji ti serveri treba da izvrše. Kod klasičnih klijent server aplikacija definisanje tih prioriteta je znatno važnije nego što je kod file server aplikacija. Za razliku od klijent server aplikacija kod file server aplikacija izvršava se samo jedan proces vezan za file servis pa tako nema potrebe za nezavisnu aplikaciju (appication isolation) i multitasking (preemptive multitasking). Već smo napomenuli da ne postoji neka strikno određena hardverska tehnologija za proizvodnju servera. To se isto odnosi i na servere koji treba da zadovolje klasičnu klijent server arhitekturu. Primarna karakteristika takvih servera je da on mora da podrži višestruke simultane (istovremene) zahteve klijenata, koji zahtevaju servisiranje svojih zahteva. Zato, takvi serveri moraju da omoguče podršku za multitasking kao i da omoguće nesmetanu podelu i dodelu svog memorijskog prostora različitim procesima. Proizvođači procesora kao što su Intel, AMD, IBM, DEC VAX i RISC procesori ( Sun SPARC, IBM/Motorola, Power PC, DEC Alpha) potpuno ravnopravno učestvuju u izboru hardverske platforme koja će biti odgovarajuća za servere u klijent server arhitekturi. Kao server platforme se mogu koristiti jači PC računari, RISC računari ili veliki računari ako je u pitanju 45
upravljanje velikikim bazama podataka ili upravljanje velikim mrežama i sl. Od njih se očekuje da budu odgovorni u upravljanju serverskog sistema za prihvatanje spoljašnjih zahteva, njihovo obrađivanje i vraćanje traženih podataka onim klijentima koji su ih i tražili. Sve to moraju da odrade u potpunoj sinhronizaciji kako bi bilo omogućeno da se pravovremeno i pravilno odgovori spoljašnjim zahtevima. Sve to mora da prati potpuna bezbednost i nezavisnost u prihvatanju i slanju potrebnih podataka. Vrlo je bitno da se u tom velikom broju zahteva koji stižu i odgovarajućih odgovora mora zadržati integritet tih podataka kako bi oni valjano i kompletno stigli do odredišta. Zadnjh godina sa velikim razvojem objektno orjentisanih tehnologija (OOT), koje su u mnogome diktirale razvoj operativnih sistema i razvojnih okruženja, serveri su postali “svuda prisutni” (ubiquitous). Tu važi pravilo 3A koje kaže anything (bilo šta), anywhere (bilo gde) i anytime (bilo kada). Drugim rečima to bi značilo da serveri treba da budu potpuno transparentni da ne zavise od tehnologije izrade, mesta gde se oni postavljaju tj. gde se nalaze korisnici(users) ili razvijaoci(developers) kao i da budu uvek dostupni. Kako se jedan računarski proces može jasno podeliti na klijent i server komponente, za server procese možemo da kažemo da važe sledeći principi: o o o o
Lokaciona nezavisnost, što znači da server proces može biti smešten bilo gde u mreži. Optimizacija resursa – server proces mogu deliti više klijenata. Skalabilnost, što znači da server proces može biti startovan na više snažnih platformi. Server procesi bi trebalo da rade u plug-and-play okruženju.
Od savremenih server mašina zahteva se: podrška multiprocesiranju, disk poljima, mehanizmima obrade višestrukih niti (multithreading) i efikasno upravljanje memorijskim podsistemim. Podrška disk poljima podrazumeva pristup redudantnim jeftinim diskovima (poznatim kao RAID diskovi) što uvodi pouzdanost u radu sa diskovima u smislu oporavaka od grešaka (otkaz nekog diska). Mehanizam višestrukih niti omogućava da se procesi podele na više nezavisnih izvršnih poslova, čime se obezbeđuje da aplikacije mogu izvršavati više simultanih zadataka. "Nit" predstavlja najmanji proces koji sistem može planirati za izvršenje. Podrška memorijskim podsistemima podrazumeva primenu ECC (Error Correction and Detection Code) mehanizma kao i proveru pariteta da bi se izbegao gubitak podataka koji od servera putuju ka klijentu o obratno. Kada su u pitanju serveri potrebna je izaštita od problema u napajanju električnom energijom što se obično obezbeđuje uređajem za neprekidno napajanje. Potrebno je obezbediti mogućnost za proširenje CPU-a, memorije, diska i periferija. Za operativni sistem servera se najčešće bira operativni sistem sa mrežnom podrškom (Windiows NT ili Unix), ali to nije obavezno. Ide se na to da se odvoje server procesi i mrežni operativni sistem jer u tom slučaju server računar se rasterećuje za izvršavanje zahteve koji do njega stižu preko nekog mrežnog računara koji sada preuzima obavezu da zahteve prosledi do servera. Server aplikacija se startuje pod operativnim sistemom i interaguje sa komponentom komunikacionog posrednika radi osluškivanja klijent zahteva za servisima. Ova aplikacija ne mora biti zasnovana na grafičkom korisničkom interfeju. Kada zahtev bude primljen, server procesi ga lokalizuju (određuju adresa klijenta koji je poslao zahtev). Server zna kako treba da obradi zahtev tako da mu klijent saopštava samo šta, a ne i kako treba uraditi. Kada se obradi zahtev, odgovor se šalje klijentu preko komunikacionog posrednika. 46
Uloga servera Vrlo je važno da se razume da je server jedna vrsta prostornog koncepta a ne opis fizičke implementacije nečega. I funkciju klijenata i funkciju servera moguče je obezbediti na istom fizičkom sredstvu. Sa gledišta peer to peer (svi računari su ravnopravni u mreži računara) povezivanja, svaki računar može potencijalno raditi kao klijent i kao server u zavisnosti da li pruža ili zahteva neki servis. Glavna odlika servera upravo je pružanje različitih servisa-usluga drugim računarima među kojima se ističu: aplikacini, fajl, print, fax, e-mail, komunikacioni, database, security(servis zaštite), image(video), WEB, sistemski i mrežni upravljački servisi. U narednim sekcijama objasnićemo pojedinačno svaki od ovih servisa koji u potpunosti određuju namenu i ime nekog servera. Aplikacioni serveri omogućuju da se na klijenskoj radnoj stanici prikazuju poslovni rezultati koji zavise od više procesa-aplikacija koje se izvršavaju na različitim računarima-serverima koji su postavljeni na potpuno odvojenim i fizički nezavisnim mestima. U klijent server modelu zahvaljujuči IPC ( InterProcess Communication ) zahtevima omogućeno je da se ti rezultati u potpunosti ili delimično prikazuju na više različitih klijent radnih stanica i to u različitim prikazima i formatima. Kolekcija aplikacionh servera mora raditi u jednoj zajednici u potpunoj sinhronizaciji kako bi mogli da dobijemo potpunu informaciju. Jedan od primera aplikacionog servera je aplikacija koja je zadužena za plačanje radnika u nekoj firmi. Na jednom serveru izvršavaće se aplikacija koja je zadužena da prikazuje zarade radnika na drugom će se izvršavati aplikacija koja izračunava zaradu, na trećem aplikacija koja računa odbitke i td. Na svim tim serverima mogu da se izvršavaju aplikacije pisane u različitim programskim jezicima, na različitim operativnim sistemima, različitim hardverskim platformama i mogu da koriste usluge različitih database servera. Klijent aplikacija poziva sve te servise ne ulazeći u to koja je tehnologija primenjena na tim serverima ili pak gde se ti serveri geografski nalaze. Objektne tehnologije su omogućile tehničku osnovu za aplikacione servere tako da oni u potpunosti mogu da odgovore na višestruke klijentske zahteve. File serveri služe za upravljanje datotekama i omogućavaju zapisivanje podataka koji nisu database orijentisani. Njegova je uloga da vodi računa o slobodnom prostoru koji je potreban za pamćenje podataka, da taj prostor dodeljuje podacima kao i da organizuje pamćenje podataka na način koji će kasnije omogućiti lako pronalaženje tih podataka. Za tu namenu file server se koristi funkcijom katalaga-adresara koja mu omogućava da se podaci pamte u vidu imena fajlova ili direktorijuma (folderima). Dužina tih imena varira od vrste operativnih sistema koji se izvršavaju na serverima i idu od 8 (DOS) do 256(WIN XP) karaktera. Klijent povezan na mrežu može pamtiti datoteke na file serveru kao da je to njegov lokalni disk. Kada klijent zahteva podatke iz neke datoteke, File server mu prosleđuje celu datoteku koju klijent dalje pretražuje i obrađuje. Print serveri imaju osnovni zadatak da prihvate podatke za štampanje od klijenata za određene štampače, da ih smeste u red, dodele im neki prioritet, aktiviraju odgovarajući drajver za štampač i da ih preko tog drajvera odštampaju na traženom štampaču. Print server takođe mora da poseduje određenu logiku koja će podržavati jedinstvene karakteristike za svaki štampač. To podrazumeva da u slučaju da se javi neka greška sa nekim štampačem ili dokumentom koji se štampa (loš štampač, štampač nije uključen, nestao papir na štampaču i td.) obavesti klijenta koji je zahtev uputio sa instrukcijama za rešavanje nastalog problema. Ovaj servis se obezbeđuje tako što se jedan ili više štampača povežu preko nekog računara sa klijentima. Klijent može pristupiti bilo kom štampaču kao da je direktno povezan sa njim. On šalje serveru podatke koje treba odštampati, podaci se privremeno smeštaju na disk servera odakle se potom šalju na odgovarajući štampač. Fax serveri imaju sličnu funkciju kao i print serveri samo što dobijene zahteve koje su takođe smestili u redove ne upućuju na štampaće već preko telefonske parice na zahtevano odredište. Njihova uloga se ogleda u mogućnostima da fax-eve šalju u tačno specificiranom vremenu (kada je tarifa za slanje jevtinija), da izvrše dinamičko kompresovanje i dekomprsovanje podataka koji se šalju (smanjuje se količina podataka koji šalju) i da primljene podatke prikažu bilo na displeju ili da ih odštampaju na štampaču. Osnovni uslov da bi ovaj servis funkcionisao je da najmanje jedan server bude opremljen (internim ili eksternim) faks uređajem. Klijent ne mora imati faks ili čak ni telefonsku
47
liniju, već on predaje faks serveru podatke koje treba poslati zajedno sa informacijom kome ih treba poslati, a server sam obavlja prenos podataka faksom. E-mail serveri su danas možda pored Web servera najrasprostranjeniji i serveri koji su najopterećeniji u pogledu vremena koje provedu u aktivnom radu. Ne postoji ni jedan jedini trenutak vremena a da se u svetu ne pošalje neki E-mail tj. da neki E-mail server nije aktivan. E-mail je danas postao glavno sredstvo za komunikaciju između ljudi kako u poslovnom svetu tako i u privatnom životu. Veliki broj savremenih tehnologija koje su zadnjih godina razvijene ( pre svih Script jezici i XML) omogućili su da se putem E-mail-a ne šalju samo tekstualni podaci već i video i audio zapisi. Sa jedne strane to je doprinelo da možemo da dobijamo znatno kvalitetnije informacije ali je zato pružilo velike mogućnosti za širenje velikog broja virusa, crva i ostalih neprijatnosti koji sve više prete da u potpunosti unište ovaj vid komunikacije. Komunikacioni serveri dozvoljavaju klijentima koji su povezani na komunikacioni server, da pristupe drugim host računarima ili serverima za koje nisu direktno povezani. Oni daju podršku za komunikacije koje se odvijaju u okviru jedne WAN (Wide Area network) mreže. Ta podrška tipično uključuje podršku za veliki broj protokola kao što su: asihroni i serijski protokoli, X.25, ISDN, TCP\IP, OSI i LAN-to-LAN NetBIOS komunikacioni protokoli. Tipični predstavnici ovakvih servera su poznatiji kao ruteri, bridge-vi i gateway uređaji bez kojih je nezamisliva bilo koja mreža računara. Database serveri ili Serveri baza podataka čine najširu i dosta uspešnu klijent/server implementaciju. U ovom slučaju klijent šalje SQL zahtev serveru; server prima zahtev, potvrđuje ga, izvršava i šalje rezultat klijentu. Podaci i softver za upravljanje podacima se nalaze na serveru baze podataka. Od klijenta se zahteva samo da ima čeonu aplikaciju za pristup serveru baze podataka. Oni upravljaju podacima koji su database (record) orjentisani. Najveći predstavnici ovakvih sistema su Sybase, Informix, Paradox, ACCess, SQL i Oracle serveri. File serveri omogućuju inicijalni prostor za pamćenje baze podataka, dok database serveri vode računa o prostoru za tabele koje se nalaze u bazi podataka u okviru dodeljenog prostora za bazu podataka. Pored toga database server je odgovoran za kompletno upravljanje svim podacima koji se nalaze u bazi podataka koja se servisira. To se pre svega odnosi na: automatski backout i recovery(oporavak) podataka nakon neke greške u sistemu koja je prouzrokovana hardwer-om, softwer-om ili prekidom napajanja, dodela prostora u okviru dodeljenog prostora za bazu podataka, organizaciju podataka u velikom broju tabela i relacijama između njih, zaključavanje podataka (record locking) kod višestrukog pristupa istim podacima, detekcija i razrešavanje mrtve petlje (deadlock), omogućavanje brzog pretraživanja i nalaženja traženog podataka (indexing). Transakcioni serveri se sastoje od baze podataka, sistema za upravljanje bazom podataka (DBMS – DataBase Managment System) i procedura za manipulaciju podacima. Čeona aplikacija na klijentu šalj zahteve transakcionom serveru na kome se izvršavaju specijalne procedure koje koje su instalirane na njemu. SQL kod ne putuje kroz mrežu čime je redukovan mrežni saobraćaj pa ovaj server ima bolje performanse od servera baze podataka. Security serveri služe da dodele određena prava oko pristupa serverima za određene korisnike – klijente. U većini operativnih sistema to se radi putem dodeljivanja jedinstvenih imena korisnicima koja su uvek u paru sa određenim lozinkama. Na osnovu tog para podataka vrši se prva provera da li se korektan korisnik javio i ako je ta prva provera u redu tom korisniku se dodeljuju prava koja su unapred specificirana za njega. U okviru ovih servera aktivni su neki servisi koji sa vezani za dodeljivanje jedinstvenih ID brojeva za klijente kao što su WINS, DHCP ili DNS servisi. Web serveri su danas sigurno narasprostranjeniji serveri koji se i najviše eksplatišu. Ogromni razvoj Interneta prouzrokovao je i veliki razvoj internet tehnologija koje su omogućile da Web ne bude samo mesto gde se mogu dobiti samo neke statične tekstualne informacije. Web postaje sve više mesto gde se čuvaju i podaci kojima se koriste velike kompanije i u integraciji sa database serverima postaju moćno sredstvo za razvijanje aplikacija koje u potpunosti zadovoljavaju sve veće zahteve korisnika.
48
VPN (Virtualy Private Netware) postaje jako sredstvo u pogledu zaštite tih podataka i sprečavanja neželjenih posetilaca koji bi mogli da naruše integritet tih podataka. Mrežni operativni sistemi Serveri se razlikuju po konfiguraciji zavisno od toga kakvu ulogu obavljaju. To su obično računari koji su opremljeni diskovima velikih kapaciteta, velikim radnim memorijama (RAM) i brzim mrežnim karticma. Mogu služiti kao serveri datoteka (file server), serveri za štampanje (print server), serveri za elektronsku poštu (e-mail server), web serveri, specijalni serveri strogo definiranih poslova (domain name server, gateway, database server…). Sve ove vrste servera mogu se nalaziti i u samo jednom (malo moćnijem) računaru. O svakoj serverskoj funkciji brine i odgovarajuća programska podrška, a kompletan server baziran je na nekom mrežnom operativnom sistemu. Danas najpopularniji serverski mrežni operativni sistemi su Apple IBM OS/2, Novell Netware, LAN Manager, Microsoft Windows Server 2003/2008, UNIX operativni sistemi raznih proizvođača (SCO OpenServer, UnixWare, praktički besplatni Linux i slično), Open VMS i ostali manje poznati. 1. Novell Netware - predstavljao je jedan od najrasprostranjenijih mrežnih operativnih sistema za lokalne računarske mreže. NetWare je zaštićeno ime američke firme Novell. Od 1983. godine, kada se ovaj proizvod prvi put pojavio na tržištu, do danas, pojavilo se nekoliko verzija ovog operativnog sistema sa više varijanti (paketa) u svakoj verziji. Firma Novell je lansirala čitav niz komunikacionih proizvoda i pomoćnih programa koji su na posredan ili neposredan način vezani za ovaj operativni sistem. Prema podacima iz 1993. godine, Novell-ovi proizvodi su se koristili u preko 400.000 LAN mreža. Ovaj mrežni operativni sistem instalira se na jednom od računara u mreži koji predstavlja fajl server. To je obično računar sa najjačim procesorom i najvećim kapacitetom diskova. Kako predstavlja otvoreni mrežni sistem, on podržava široki raspon klijentskih platformi sa kojima može da radi a koje mogu da budu OS2, DOS, Mac, Win, UNIX i Linux. Jezgro operativnog sistema je program NET$OS.EXE kod ranijih verzija, odnosno SERVER.EXE od verzije 3.x. Pomoćni programi potrebni za normalan rad mreže smešteni su u 4 sistemska direktorijuma: SYSTEM, PUBLIC, LOGIN, MAIL. Od verzije 3.x postoje još i direktorijumi: DELETED.SAV i ETC. Svi programi pisani su na jeziku C. Za komunikaciju u mrežama, Novell je razvio sopstveni mrežni komunikacioni protokol IPX/SPX. Od verzije 3.x postoji mogućnost korišćenja protokola TCP/IP a omogućeno je i slanje paketa podataka IPX/SPX kroz mreže sa protokolom TCP/IP. Sve verzije od Advanced NetWare 286 v2.0 pisane su za izvršenje sa šesnaestobitnim naredbama. Verzija 3.0 i kasnije verzija 3.x pisane su za izvršenje sa tridesetdvobitnim naredbama i najniža hardverska platforma za njihov rad je mikroprocesor Intel 80386SX. Komercijalni naziv za operativne sisteme iz serije 3.x jeste NetWare 386 ili skraćeno NW 386. Verzija 4.0 operativnog sistema zamišljena je kao operativni sistem za gradske računarske mreže (MAN), odnosno za mreže u velikim kompanijama (Corporate Networks), jer omogućuje administraciju i upravljanje takvim mrežama. Operativni sistem je objektno orijentisan i administracija je zamišljena kao upravljanje objektima (mreže, serveri, korisnici, štampači itd.) i definisanje njihovog rasporeda i prava. Konzistentnost podataka obezbeđena je korišćenjem replike. Objekti u mreži su hijerarhijski raspoređeni po principu stabla. Pozicija objekta u hijerarhiskoj strukturi zove se kontekst objekta. Promenom konteksta objekta menjaju se i njegova prava. Standardne programe (.com i .exe) nije moguće izvršavati u okviru ovog operativnog sistema zbog nekompatibilnog API (Aplication Program Interface). Novell je razvio sopstvenu tehnologiju za izvršavanje programskih modula poznatu kao Netware Loadable Modul (NLM). Maksimalna verzija ovog operativnog sistema podržava čak do hiljadu korisnika. Počev od verzije 5.0 (1998) Novell je napokon kao primarni mrežni protokol počeo da koristi opšteprihvaćeni TCP/IP, uz očuvanje podrške za IPX/SPX. Osim toga, izvršena je kompletna reorganizacija fajl sistema, dodati su DHCP i DNS servisi, kao i mogućnost da se NetWare konfiguriše kao web server. Poslednje značajne izmene NetWare je doživeo sa verzijom 6.5 (2003. godine), kada je integrisana podrška za PHP, MySQL i OpenSSH, dodata funkcija domenskog kontrolera (DC), podrška za enkripciju diskova, USB uređaje itd. Nakon 8 revizija, 49
oktobra 2008. Novell je objavio da napušta razvoj NetWare i prelazi u potpunosti na OES (Open Enterpise Server). Osnovni nedostak ovog operativnog sistema je da ne podržava multitasking a i ne poseduje neki snažan sistem zaštite podataka. 2. LAN Manager predstavlja proizvod IBM koji koristi OS/2 operativni system. Iako ovaj sistem omogućava multitasking i zaštitu memorije, i pored podrške velikog imena u svetu računarstva ovaj sistem nije doživeo veliku popularnost. 3. Advanced Server Windows NT predstavlja jednu novu pojavu na polju mrežnih operativnih sistema. Od svog prvog pojavljivanja Windows NT (New Technology) 1993 god. pa do danas ovaj proizvod je doživeo veoma brz i ogroman razvoj tako da se danas smatra za jednim od najraširenijim operativnim sistemima koji se nalaze na serverima. U početku zamišljen kao operativni sistem koji bi trebalo da poveže nekoliko Win računara u okviru lokalne računarske mreže (konkurencija Novell-u) danas je prerastao u sasvim ravnopravnog pa čak i većeg učesnika u deljenju kolača u WAN mrežama za koje je vladalo pravilo da su UNIX sistemi neprikosnoveni. Windows je ime operativnog sistema u vlasništu firme Microsoft, koji danas u svojim raznim verzijama drži preko 50% tržišta. Velika prednost Windows familije operativnih sistema u odnosu na druge leži u vizuelno atraktivnom korisničkom okruženju, kao i jednostavnosti korišćenja i podešavanja čak i najsloženijih opcija. Kroz sisteme "čarobnjaka" svaki Windows server se može za tili čas podesiti za rad u mreži sa nekim podrazumevanim parametrima, pri čemu za iskusnije korisnike postoje široke mogućnosti detaljnijeg podešavanja.Windows je izbor mnogih korisnika i zbog ubedljivo najveće softverske podrške. Bill Gates je čak i ranih 1980-tih godina znao da je umrežavanje veoma važno za posao sa računarima. Dakle, 15. aprila 1985. godine Microsoft je ponudio prvu mrežnu alatku MS-NET i odgovarajuii operativni sistem DOS 3.10. Serverski softver je bio zasnovan na DOSu, nudio je minimalnu zaštitu i, ruku na srce, pokazao se loše. Microsoft je u avgustu 1993. godine objavo NT Advanced Server. Prva verzija servera NT Advenced Server se savim dobro pokazala. Međutim, zahtevala je mnogo memorije, nedostajale su joj mogućnosti povezivanja koje je nudio Novell i podržavala je najosnovnije povezivanje pomoću protokola TCP/IP. U septembru 1994. godine se pojavila nova verzija i novo ime: Microsoft Windows NT Server verzije 3.5. Verzija 3.5 je uglavnom dorađena verzija 3.1; zahtevala je manje memorije, ugrađene su Novellove i TCP/IP mogućnosti povezivanja i sadržala je Windows for Workgroups verzije upravljačkih alatki, tako da su administratori mogli da rade za računarom radne grupe umesto da rade na NT računaru. NT verzije 4 se pojavio 1996. godine i ličio je na Windows 95. Osim toga, sadržavao je gomilu novih osobina, ali ne i radikalne izmene bitne za umrežavanje računara. U februaru 2000. godine se pojavio Windows 2000 (NT 5.0). Windows 2000 je sadržavao mnogo toga novog, ali je verovatno najvažnija promena bila u načinu na koji su se zapisivali i organizovali korisnički nalozi i informacije koje se odnose na te naloge: pojavili su se Active Directory (AD) domeni. Sledeća po važnosti promena je bila u notaciji grupnih polisa. Sledeća verzija NT-a se, po prvi put od 1993. godine, dobijala u delovima. Prvo se pojavio NT Workstation, poznatiji kao XP Professional i „slabiji“ brat XP Home. Microsoft je nameravao da potom objavi serversku verziju NT 5.1, ali je splet okolnosti doveo do toga da posle nekog vremena napravi NT 5.2 – odnosno, Windows Server 2003. Windows Server 2003 je verzija „1.1“ Windowsa 2000, dobrodošlo poboljšanje Windowsa 2000. Sada je Microsoft stigao do Windows Servera 2008, koji sadrži brojne nove osobine u odnosu na prethodne verzije. Najbolje od svega je to što Windows Server 2008 sadrži bitna poboljšanja na polju zaštite. Na primer, čak ni administrator ne može da pristupi osnovnom (korenom) direktorijumu, direktorijumu \Windows ili direktorijumu \Windows\System32, pa je daleko teže oštetiti izvršne datoteke koje se nalaze u ovim direktorijumima. Novi Windowsov firewall štiti dolazne i odlazne podatke, tako da se mnogo teže „ulazi“ u server, naročito kada postavimo dodatne firewallove. Administrator sada „radi“ kao običan korisnik i mora imati dozvole za obavljanje nekih poslova. To znači da neko zlonameran ne može da napravi štetu ukoliko ne zna sve što i administrator. Ukratko, Windows Server 2008 je poboljšao bezbednost, a to je ono na šta se najveći broj korisnika žalio. Windows Server je infrastrukturna osnova za 50
pokretanje povezanih aplikacija, mreža i web servisa u svim okruženjima. Server ima napredne mogućnosti za upravljanje i komuniciranje sa udaljenim lokacijama, upravljanje pristupom i identitetima korisnika, pokretanje web servisa, deljenje resursa... Takođe, Windows Server se odlikuje naprednim bezbednosnim mehanizmima za utvrđivanje identiteta, prava i dozvola korisnika, kao i mehanizmima za šifrovanje podataka koji su kritični za poslovanje organizacije. Windows Server je modularni operativni sistem koji se sastoji od komponenata. Svi objekti operativnog sistema imaju interfejse, pomoću kojih drugi objekti i procesi obezbeđuju njihovu funkcionalnost ili usluge. Komponente međusobno sarađuju prilikom obavljanja konkretnih zadataka operativnog sistema. Arhitektura Windows Servera podeljena je u dva glavna sloja: korisnički sloj (engl. user mode) i sloj jezgra (engl. kernel mode). Korisnički sloj u suštini je sloj za podršku aplikacijama, kako za Microsoftov softver, tako i za softver drugih proizvođača. Sve aplikacije i usluge instaliraju se u korisničkom sloju. Sloj jezgra se sastoji od nekoliko komponenata koje imaju pristup sistemskim podacima i hardveru. Usluga Active Directory je ključna za građenje mreža Windows Servera i za upravljanje njima. Pojava ove tehnologije je rezultat evolucije Microsoftove tehnologije servera i mreža. Usluge imenika nisu ništa drugo nego uredno razvrstavanje resursa mreže i upravljanje njima, bilo da se radi o korisnicima, štampačima, serverima ili bezbednosnim parametrima. Imenici postaju referentna tačka za korisničke usluge i aplikacije. Oni olakšavaju pronalaženje štampača u terenskoj kancelariji, pronalaženje korisnika i prosleđivanje poruka e-poštom, ili pomažu da se proveri ima li neki korisnik pravo pristupa određenoj datoteci. Windows je trenutno najkomercijalniji i najpopularniji operativni sistem. Tome je doprinela lakoća konfigurisanja i korišćenja kao i velika softverska podrška. Windows je razvijan isključivo za Intel/AMD platforme. Ima svoja 32-bitna i 64-bitna izdanja. Ovo je takođe višekorisnički sistem koji ima mogućnost višeprocesne i višenitne obrade. Jezgro operativnog sistema upravlja nitima procesa koje se prosleđuju mikroprocesoru, vremenski raspoređuje izvršavanje niti, omogućuje istovremeni rad više programa itd. Komponenta sistema Hardware Abstrction Layer (HAL) sadrži spedcifičan kod koji obezbeđuje ulazno/izlazne interfejse specifične za pojedine hardverske uređaje, obrađuje hardverske prekide itd. Windows Server podržava višeprocesorsku simetričnu obradu. Što se tiče upravljanja memorijom trebamo napomenuti da ovaj sistem koristi dve vrste memorije. Prva je fizička u obliku RAM čipova utaknutih na matičnu ploču računara. Drugu vrstu čini virtuelna memorija, to jest kombinacija svih vrsta memorije ugrađenih u računar i načina na koji se ona stavlja na raspolaganje operativnom sistemu. 4. PC Network File Services (NFS) ili poznatiji kao UNIX sistemi predstavljali su začetnike serverskih operativnih sistema koji su u startu podržavali klijent server tehnologiju. Dugi niz godina UNIX se smatrao kao neprikosnoveni operativnim sistemom na polju klijent serverskih sistema tako da je izgledalo da ga niko neće moći dostići a kamoli prestići. I on je preživeo mnoge modifikacije i prilagođavanja kako bi se odupreo konkurenciji. Danas je najpoznatiji naslednik ove tehnologije Linux operativni sistem koji je i jedini ostao kao ozbiljan rival sve većoj i većoj Windows imperiji. Linux je brz i stabilan operativni sistem za PC računare i radne stanice, otvorenog izvornog koda, koji pruža Internet servise profesionalnog nivoa, obimne razvojne alatke, potpuno funkcionalne grafičke korisničke interfejse (GUI-je) i znatan broj aplikacija, od onih za kancelarijsko poslovanje do multimedijalnih aplikacija. Linux je ranih devedesetih godina dvadesetog veka razvio Linus Torvalds, zajedno sa drugim programerima širom sveta. Kao operativni sistem, Linux obavlja mnoštvo istih funkcija kao i Unix, Macintosh, Windows i Windows NT. Međutim, Linux se ističe po svojoj snazi i fleksibilnosti, kao i po tome što je besplatan. Linux predstavlja PC verziju operativnog sistema Unix koji se decenijama koristi na centralnim računarima i mini-računarima i trenutno je sistem koji predstavlja pravi izbor za mrežne servere i radne stanice. Linux donosi brzinu, delotvornost, skalabilnost i fleksibilnost Unixa PC-ju, koristeći sve mogućnosti koje personalni računari danas pružaju. Tehnički, Linux se sastoji od programa operativnog sistema, koji se naziva jezgro (kernel), i to je deo koji je prvobitno razvio Linus Torvalds na helsinškom univerzitetu. 51
No, jezgro se uvek distribuira sa znatnim brojem programa za posebne primene, od mrežnih servera i bezbednosnih programa do kancelarijskih aplikacija i razvojnih alatki. Linux se razvio kao deo pokreta za softver otvorenog izvornog koda, u okviru kojega su se nezavisni programeri sakupili da bi obezbedili besplatan kvalitetan softver za svakog korisnika. Linux je postao glavna platforma softvera otvorenog izvornog koda, čiji je veliki deo razvijen u okviru projekta GNU organizacije Free Software Foundation. Mnoge od ovih aplikacija upakovane su kao deo standardnih distribucija Linuxa. Trenutno je dostupno na hiljade aplikacija otvorenog izvornog koda za Linux. Kao i Unix, Linux se uopšteno može podeliti na tri glavne komponente: jezgro, okruženje i strukturu datoteka. Jezgro je osnovni program koji izvršava programe i upravlja hardverskim uređajima, kao što su diskovi i štampači. Okruženje obezbeđuje korisnički interfejs. Ono prima komande od korisnika i šalje te komande jezgru na izvršavanje. Struktura datoteka određuje način na koji se datoteke čuvaju na uređaju za skladištenje, kao što je disk. U potencijal Linuxovog operativnog sistema ubrajaju se i snažne mogućnosti umrežavanja, uključujući podršku za Internet, intranetove i Windows i Apple umrežavanje. Linux ima sve alatke za umrežavanje, kao što su podrška za FTP transfer datoteka, web pretraživači i ceo spektar mrežnih servisa, kao što su e-pošta, servis imena domena (DNS) i dinamička konfiguracija matičnog servera, uz FTP i web servere i servere za štampanje. On takođe poseduje potpun skup uslužnih modula za razvoj programa, kao što su C++ kompajleri i moduli za pronalaženje grešaka. I uz sve svoje mogućnosti, operativni sistem Linux ostaje mali, stabilan i brz. U svom najjednostavnijem formatu, Linux se efektivno može izvršavati na samo 2 MB memorije.
52
5. Open VMS je smatran takođe za neprikosnoveni operativni sistem za snažne i moćne računare koje je proizvodila korporacija Digital Corporation – VAX. To je bio period kada su snage klijentskih računara bile vrlo male, sa veoma skromnim resursima u pogledu memorijskog prostora i brzine procesora, tako da se iole ozbiljnija aplikacija koje je zahtevala malo veće resurse morala da se izvršava na moćnijim računarima koje je proizvodila ova firma. Sa razvojem tehnologija sva ta snaga velikh računara polako se spuštala na obične klijentske računare a samim tim se i polako gubila potreba za jako snažnim računarima. Snaga klijenskih računara bila sasvim dovoljna u pogledu računarskih resursa za izvršavanje gotovo svih zahtevnijih aplikacija a sva veća zastupljenost interneta omogućila je korišćenje drugih serverskih usluga. Jednom rečju vršila se decentralizacija svih potrebnih serverskih usluga tako da su se sada poslovi odvjali na više servera koji su bili usko specijalizovani za poslove koje su radili. VMS je tradicionalni operativni sistem kompanije Digital Equipment Corpration. 25. oktobra 1977. verzija 1.0 VMS-a je ugledala svetlost dana. Od tada je VMS promenio ime u OpenVMS i promenio je dva vlasnika, prvo ga je kupio Compaq da bi ga posle preuzeo DEC koji će na kraju opet biti kupljen od strane HP-a. Uprkos svemu VMS se razvijao i napredovao u kontinuitetu. Danas OpenVMS radi na VAX, Alpha, i Itanium procesorima (HP Integrity) i trenutno je aktuelna verzija 8.3-1H1. Ovoj operativni sistem predstavlja višekorisnički multiprocesni sistem koji omogućava efikasno deljenje resursa, obradu transakcija i rad u realnom vremenu. Raspoloživost sistema je uvek na visokom nivou, s obzirom na sposobnost sistema da se distibuira na više fizički odvojenih računara. Iz tog razloga VMS je ujedno izuzetno tolerantan na bilo koji vid greške koja bi uticala na rad bilo koje pojedinačne jedinice za obradu informacija. VMS ima i mogućnost da bilo kom korisničkom procesu, prema potrebi, dodeli prioritet iznad procesa sistemskog jezgra. VMS je uveo mnoge novine koje se danas smatraju obaveznim osobinama ozbiljnih mrežnih operativnih sistema, poput integrisane računarske mreže, multiprocesiranje, distribuirani fajl sistem, podršku za više različitih kompjuterskih jezika, sopstveni komandni jezik, visok nivo bezbednosti itd.9 čas
Programska podrška servera Baze podataka i sistemi za njihovo upravljenje predstavljaju nezobilazne komponente klijent server sistema. Smatra sa da danas ne postoji ni jedna ozbiljnija klijent server alikacija koja se ne oslanja na neku bazu podataka i mehanizam za upravljanje tom bazom. Zato ćemo se u daljem izlaganji i najviše zadržati oko tehnologija koje su razvijene da bi u klijent server modelu zadovoljile pristupe različitim bazama podataka. Najopštije posmatrano, baza podataka se može definisati kao kolekcija međusobno povezanih podataka memorisanih na nekom medijumu. Pod podacima podrazumevao činjenice o nekom segmentu realnog sistema koje imaju tačno određeno (implicitno) značenje za korisnike baze podataka. Podaci koji se čuvaju mogu se sastojati od svega nekoliko ulaznih podataka ili redova koji čine jednostavan adresar sa imenima, adresama i telefonskim brojevima. Nasuprot tome, baza podataka može da sadrži i milione zapisa koji opisuju katalog proizvoda, audio video zapisa ili platni spisak neke velike kompanije. Kao i za druge komponente sistemskog softvera gde se korisnici odvajaju od aplikacija, tako se i u upravljanju bazama podataka koriste neki modeli za odvajanje korisničkih aplikacija od fizičke baze podataka. Kod baze podataka taj model je predstavljen kroz arhitekturu tri šeme koja se sastoji od sledećih nivoa: 1. Interni nivo koji koristi internu šemu pomoču koje opisuje fizičku strukturu baze podataka. Interna šema opisuje sve detalje memorisanja podataka i pristupne mehanizme i puteve u bazi. 2. Konceptualni nivo koristi konceptualnu šemu pomoću koje opisuje logičku strukturu baze podataka. U stvarnosti to je globalni opis baze podataka koji od korisnika krije nepotrebne i opterećujuće detalje fizičke arhitekture baze podataka. Konceptualni nivo opisom entiteta (objekata realnog mini sveta), tipom podataka i međusobnih odnosa između entiteta, omoguđuje projektantima i korisnicima baze podataka da se potpuno posvete događajima u mini svetu, relacijama koje vladaju u njemu, atributima entiteta, i na taj način što tačnije definišu upotrebnu vrednost i efikasnost jedne konkretne baze podataka. 53
3. Eksterni nivo uključuje određeni broj eksternih šema, drugim rečima korisničkih pogleda kako na deo mini sveta koji ih interesuje, tako i na deo baze podataka koja prati taj mini svet. Uloga eksternog nivo je da od takve korisničke grupe sakrije deo baze podataka koji nije interesantan za njih. U centru svih klijent server aplikacija koje se bave bazama podataka nalazi se DBMS (DataManagment System). DBMS je skup komponenata za definisanje, izradu i korišćenje baze podataka koji treba da omogući skladištenje, pretraživanje i upravljanje podacima u bazi podataka. Kada pomenemo sistem za upravljanje bazom podataka (DBMS), uglavnom mislimo na realcioni DBMS tj. RDBMS. Relacione baze podataka skladište veze između podataka i upravljaju tim vezama. Da bi klijent server radio kako treba DBMS mora da zadovolji neke uslove i to: Potreban je transparetni pristup podacima za različite klijente bez obzira na hardver, softver i mrežnu platformu koju koristi klijent aplikacija. Da se dozvoli da klijent šalje svoje zahteve prema serveru baze podataka (uključujući i SQL zahteve) kroz mrežni sistem. Da se svi zahtevi klijenta za podacima obrađuju u lokalnom serveru. Da se klijentu šalju samo podaci koji se dobijaju kao rezultat obrade njegovog zahteva. Klijent server DBMS oslobađa klijenta od lokalne obrade. To znatno redukuje mrežni saobraćaj i time ubrzava rad sa traženim podacima. Klijentu se vraćaju samo oni podaci koji odgovaraju traženom zahtevu. Klijent server sistem je promenio način na koji mi pristupamo i obrađujemo podatke u bazi podataka. Sada podaci mogu biti smešteni ne samo na jednoj lokaciji – jednom serveru, već na više servera koji mogu biti na potpuno lokacijski različitim mestima. Ako su podaci smešteni na više mesta tada kažemo da se radi o distribuiranim klijent server bazama podataka. Takve baze podataka karakteriše: Lokacija podataka je potpuno transparentna za korisnika. Podaci mogu biti smešteni na lokalnom PC-ju, serveru odeljenja ili na velikim računarima širom zemlje. Podaci mogu biti distribuirani između različitih lokacija i između različitih baza podataka koristeći iste ili različite modele podataka. DBMS mora biti sposoban da upravlja distribucijom podataka između različitih čvorova. Podaci mogu biti podeljeni na nekoliko načina i oni mogu biti smešteni na nakoliko različitih računara koji rade na različitim softverskim platformama. Korisnik ne treba da zna ni gde su podaci locirani, ni kako se oni uzimaju a ni protokole koji to treba da obave. Podaci treba da budu pristupačni i da se njima može manipulisati od strane korisnika u bilo koje vreme i više puta. Pristupačnost podacima je povećana zato što je krajnji korisnik sposoban da pristupi podacima direktno koristeći pokazivače (miša) u sistemu baziranom na GUI-u. Krajnji korisnik može manipulisati podacima na različite načine u zavisnosti od njegovih potreba. Tako je moguće da iste podatke dobijamo u različitim grafičkim prikazima. Zahtev za podacima se izvršava na serverskoj strani a formatiranje i prikaz podataka na klijentskoj strani. Obrada podatak (smeštanje, ispravnost, formatiranje, prezentacija i td.) je distribuirana između različitih računara. Predpostavimo da se naša baza podataka nalazi na tri DBMS pri čemu su oni locirani na različitim računarima. Ako klijent zahteva neki izveštaj on se tada obrača sa zahtevom jednom od tih servera. Server baze podataka prihvata zahtev i brine se za lociranje i pribavljanje svih podataka koji su zahtevom specificirani. Obrada pristupa i uzimanje podataka se obavlja na tri različita računara i takvi ujedinjeni podaci se sada šalju klijentu. Klijent se sada samo brine o formatiranji primljenih podataka i njihovom odgovarajučem prikazivanju na svom računaru. Jedan klasičan DBMS sistem se sastoji od sledećih komponenti: 1. Interfejs za aplikacije predstavlja standardne biblioteke koje pomažu u komunikaciji sa DBMSom. Većina DBMS-ova ima svoj jednostavni prevodilac u obliku komandne linije koji često koristi biblioteke za prenošenje zahteva unetih sa tastature do DBMS-a i za prikazivanje odgovora. 2. Interpretator SQL koda Sintaksni analizator proverava sintaksu prosleđenih upita i prevodi ih u interni prikaz. 54
3. Analizator upita Generiše razne planove izvršavanja upita na osnovu statistike baze podataka i njenih svojstava, odabira jedan od planova i prevodi ga u akcije koje izvršava na niskom nivou. 4. Pristup podacima U module koji upravljaju pristupom podacima uskladištenim na disku spadaju modul za upravljanje transakcijama, modul za upravljanje postupkom obnavljanja stanja, modul za upravljanjem baferom glavne memorije, modul za zaštitu podataka i modul za upravljanje pristupom datotekama. 5. Baza podataka podrazumeva same fizičke podatke koji su razvrstani u različitim tabelama. Ovde su obuhvačeni i neki drugi podaci koji olakšavaju rad za bazom podataka kao što su indeksne datoteke i statističke datoteke. Ti se podaci prvenstveno koriste za generisanje i optimizovanje planova za izvršavanje upita. Neki od predstavnika sistema za upravljanje bazama podataka koji su danas najzastupljeniji su ORACLE DBMS, SQL Server, MySQL i td. Za sve njih je zajedničko da podržavaju sve gore pomenute uslove kao i da podržavaju jedinstveni jezik za upravljanjem podacima u bazama SQL (Structure Queru Language). ALATI ZA UPITE (QUERY TOOLS) Klijent-server arhitektura i alati vezani za takvu arhitekturu uticali su na razvoj korisnički orijentisanih alata za upite i izveštavanja, koji su obećavali korisnicima da će moći samostalno, bez intervenisanja računarskih specijalista, napraviti jednostavnije upite i izvještaje bazirane na tim upitima. Međutim, realnost je pokazala, da kada su u pitanju velike baze podataka – pogotovo skladišta podataka, informatički specijalisti postaju nužni kako bi optimizirali performanse baze podataka, alocirali podatke i njihovu obradu između platformi, te kreirali i testirali složenu logiku obrade podataka. Od savremenih alata za upite i izveštavanja očekuje se da osiguravaju: 1. Pristup velikom broju redova baze podataka; 2. Prenos velikog broja rezultata iz baze podataka na radne stanice krajnjih korisnika; 3. Složene SQL iskaze uključujući povezivanje više tablica i podupita; 4. Složenu logiku izveštavanja kao grupnih postupaka koji uključuju veliki broj redova. Navedeni zahtevi utjiču na to da se arhitektura naprednih alata za upite i izveštavanja sastoji od više slojeva. Profesionalci (i ponekad krajnji korisnici) prave upite i izveštavanja koristeći klijent-server razvojne alate. Krajnji korisnici pokreću izveštavanja sa svojih radnih stanica. Izveštavanja se smeštaju i pozivaju s drugog sloja, dok serveri baze podataka čine treći sloj. Ovakva arhitektura omogućava upitima i izveštajima da se efikasno izvršavaju i nad velikim bazama podataka, kao i da mogu vratiti velike količine podataka. Činjenica je da alati za upite i izveštavanja postaju sve sofisticiraniji, što više prevladava potreba za pristupom sraymerno velikim bazama podataka (skladištima podataka). Izbor alata za izveštavanje više nije tako jednostavan proces, pogotovo otkako performanse nisu jedini kriterijum, nego odluka treba primarno biti bazirana na korisničkom sistemu. U tom slučaju treba postojati razumevanje korisničkih zahteva za pristupom podacima, strukture baze podataka, LAN/WAN komunikacijskih mogućnosti i slično, kako bi se moglo odabrati odgovarajuće rješenje. U slučaju pristupa skladištima podataka, potrebno je definirati kategoriju “veliko” kako bi se lakše odabrao odgovarajući alat za upite i izveštavanja. Alati za krajnje korisnike koji omogućavaju da baza podataka upravlja optimizacijom izvršenja upita su najbolji za odabir malog broja redova baziranog na jednostavnoj logici iz jedne ili dvije ogromne tablice. Prilagodljivi serveri za upite i izveštavanja su potrebni za odabir srednjeg do ogromnog broja redova bazirano na složenoj logici, tako da specijalisti mogu praviti upite koji imaju najefikasniji pristup bazi podataka. Server orijentisani proizvodni alati za upite i izveštavanja sa mogućnostima programiranja, pamćenja i optimiziranja upita, potrebni su za odabir velikog broja redova iz nekoliko različitih tablica baziranih na složenoj logici i gde postoje zahtevi za složenim izlaznim formatiranjem izveštavanja. Većina proizvođača alata za upite i izveštavanja pronašla je jednostavne načine da IS administratorima omogući “prikrivanje“ ili “prevod“ SQL-a u poslovne termine. Zahvaljujući metapodacima, ili podacima o podacima, alati za upite i izveštavanja obećavaju ukidanje potrebe da korisnici razumeju 55
dizajn baze podataka i postavljaju relacije neophodne za povezivanje tablica u trenutku pravljenja upita. Razvoj robusnijih alata za upite i izveštavanja napravio je značajan korak ka smanjenju – ali ne i eliminisanju - potrebe za unapred definisanim izveštajima. Naime, ti alati su zamenili jedan način unapred definisanih upita, drugim. Tamo gde savremeni alati za upite i izveštavanja pomažu poslovnim korisnicima u formulisanju njihovih vlastitih upita, oni to mogu uraditi tako precizno zato što su arhitekti sistema za podršku odlučivanju anticipirali korisničke upite i predefinisali složene SQL naredbe. Na primer, da bi se izvršili zadaci vezani za podršku odlučivanju – sabiranja i izračunavanje proseka – to zahteva znatan broj unaprijed definisanih koraka i znatno programiranje. Logično je da u slučaju promene zahteva, postupak predefinisanja i programiranja treba ponoviti. Krajnji zaključak je da alati za upite i izveštavanja u suštini ne podržavaju stvarne ad hoc korisničke upite, odnosno upite formirane “od nule” direktno na podacima iz baze podataka. I pored značajnog napretka u razvoju alata za upite i izvještavanje, oni su još uvek dostupni samo u manje složenim delovima sistema za podršku odlučivanju. Kako je za njih karakterističan nedostatak sofisticiranosti potrebne za složeno okruženje za potporu odlučivanju, u takvom okruženju oni se mogu upotrebljavati samo u kombinaciji s drugim, za podršku odlučivanju podesnijim, alatima. Osnovni nedostaci alata za upite i izveštavanja ogledaju se u sledećem: 1. Stalno učešće informatičara u procesu izrade i održavanja; 2. Poteškoće u ispunjavanju izazova vezanih za složena poslovna pitanja; 3. Nesposobnost podrške velikim upitima; 4. Nedostatak koncepta vremena, konsolidiranja i agregiranja; 5. Nemogućnost transparentne potpore i ujednačavanja različitih tehnika optimiziranja baza podataka; 6. Slaba povezanost između upita i izvješćivanja; 7. Dizajn tipa “debeli” klijent. Navedena ograničenja, kao i ukupan razvoj alata za upite i izveštavanja koji je primarno bio vezan za transakcijske, a ne sisteme za podršku odlučivanju, dovela su do toga da su ti alati ostali marginalni s aspekta podrške odlučivanju, dok su se za potrebe podrške odlučivanju razvijali mnogo sofisticiraniji alati bazirani isključivo na potrebama tih sistema. SQL predstavlja standardan jezik za iterakciju sa relacionom bazom podataka. Skoro svi sistemi relacionih baza podataka podržavaju SQL kao alat za izradu, zaštitu i pretraživanje baze podataka, kao i za upravljanje njome. Sql predstavlja mnogo više od običnog jezika za upite; to je u potpunosti usavršena alatka za sve aspekte održavanje jedne baze podataka. Sql se sastoji iz četiri glavna dela i to: 1. Jezik za definisanje podataka (Data Definition Language) predstavlja skup SQL komandi koje formiraju i brišu bazu podataka, dodaju ili uklanjaju tabele, formiraju indekse i unose izmene na svakom od pobrojanih elemenata. Komande DDL-a se koriste samo u toku izrade baze podataka. 2. Jezik za manipulisanjem podacima (Data Management Language) je skup komandi koje rade sa DBMS-om i bazom podataka. To su komande za pretraživanje, umetanje i brisanje podataka u tabelama baze podataka. To su komande koje se najviše upotrebljavaju u toku uobičajenog korišćenja baze podataka. 3. Upravljanje transakcijama podrazumeva da SQL sadrži komande za označavanje grupe komandi kao celine ili transakcije. Korišćenjem ovih komandi transakcije se mogu pozvati ili poništiti. 4. Napredne mogućnosti DML i DDL omogućavaju da se SQLnaredbe mogu ubaciti i u programske jezike opšte namene i definisanje prikaza postojećih podataka za specijalne namene, kao i dodeljivanje i oduzimanje prava pristupa DBMS-u i bazi podataka. Tu spadaju i komande za obezbeđivanje integrititeta tj. komande za obezbeđivanje ispravnosti podataka i poštovanje unutrašnjih relacija između tabela. Celokupno ovo razmatranje klijent server baza podatak ne bi bilo kompletno ako ne spomenemo veze između klijenata i servera koje nam upravo omogućuju da možemo da pristupamo različitim bazama 56
podatak pod razlićitim DBMS-ovima. Navešćemo samo neke tipične predstavnike tih veza koji se danas najviše koriste. 1. ODBC (Open DataBase Connectivity) predstavlja najstariji Microsoft-ov standard za povezivanje aplikacionog softvera sa različitim relacionim bazama podataka. Stariji COM interfejsi kao što su DAO (Data Access Objects) i RDO (Remote Data Objects) zasnivali su se upravo na ODBC preko koga su pristupali podacima u bazi podataka. ODBC je predstavljao niski nivo API-a i zahtevao je od programera da vodi računa o memorijskoj raspodeli i dodeli. To je u mnogome otežavalo rad sa njim jer je optimizacija baze podataka bila otežana. Danas postoji preko 100 različitih ODBC drajvera za različite softverske platforme. Jednostavnom zamenom odgovarajučeg ODBC drajvera omogućen je pristup različitim bazama podataka. 2. OLE DB predstavlja ime Microsoft standarda koji je definisan za jedinstveno podržavanje aplikacija koje pristupaju i relacionim i nerelacionim bazama podataka. Postoje različiti OLE DB interfejsi za svaki različiti izvor podataka. Ukoliko nemamo odgovarajući OLE DB interfejs za neke podatke onda možemo da koristimo odgovarajuči ODBC drajver i tako pristupimo podacima. 3. ADO (ActiveX Data Objects) predstavlja Microsftov COM bazirani objektni modul koji nam omogućava da upravljamo OLE DB izvorima podataka. Dizajniran je tako da omogući klijentima što lakše i brže dobijanje skupa slogova iz baze podataka.
57
10 čas
Veze između klijent server sistema
Jedan od najčešćih opisa klijent server sistema koji na najednostavniji način pokazuje i opisuje šta ta tehnologija predstavlja je “Mreža je računar”. U ovoj prostoj rečenici sadržana je sva mudrost ove tehnologije koja omogučava korisnicima da mogu sa svojih računara, bez obzira kakvi su to računari, gledano i sa hardverske i sa softverske strane, da pristupe podacima, servisima ili drugim resursima koji se nalaze bilo gde na mreži. Korisnik – klijent radi na svom računaru i koristi mnoge servise koji su mu dostupni, u zavisnosti od njegovih prava pristupa pojedinim servisima, podacima ili resursima koji se nude na mreži, a da on nema pojma da li se taj servis, podatak ili resurs koristi sa njegovog ili nekog drugog računara u mreži. Što se njega tiče on ima utisak da se sve to događa na njegovom računaru. Na taj način od jednostavnog klijent računara pravi se jako snažna mašina čija se snaga sada ogleda u snazi kojom raspolaže mreža računara u koju je on uključen. Iz tog razloga gornja izreka postaje prihvatljiva, jer najbolje odslikava klijent server tehnologiju u kojoj korisnički računar predstavlja samo jedan mali deo jednog velikog i snažnog računara, a to je celokupna mreža svih povezanih klijenata i servera u njoj. Da bi sve stanice bile povezane u neku mrežu potreban je neki medijum koji će fizički povezivati te stanice. LAN kabliranje je upravo taj medijum koji povezuje sve te računare u jednu jedinstvenu celinu i omogućava im da razmenjuju podatke, dele resurse i koriste razlićite servise. Za povezivanje računara koriste se i mnogi dodatni uređaji koji nam pomažu kod povezivanja računara i to su: habovi (hubs), mrežni komutatori (switches), repetitori-pojačavači (repeaters), mostovi (bridges), ruteri (routers) i mrežni prolazi (gateways). Da bi povezali dva ili više računara razvijane su mnoge tehnologije iz kojih su danas proizašle tri osnovne tehnologije koje se koriste: ARCnet (Attached Resource Comuter Network) – računarska mreža priključenih resursa predstavlja najstariju tehnologiju umrežavanja koja se danas još uvek koristi. Razvijena je 70-tih godina u kompaniji Datapoint Corporation i svoj maksimum je doživela sredinom 80-tih godina kada je Ethernet još uvek bio preskupa tehnologija a većina mreža je bila jako mala. Pošto se radi se o tehnologiji koja koristi sistem prosleđivanja tokena, ona predstavlja determinističku tehnologiju pa se njena upotrebljivost vidi samo u sistemima sa predvidljivim propusnim opsegom. Brzina rada ove mreže iznosi od 2,5 Mbps do 10 Mbps i u okviru ove mreže možemo povezati maksimalono 255 računara. Mada ARCnet više nije rešenje pre svega za PC računare, i dalje sbog svojih svojstava ova tehnologija je zastupljena i to pre svega u industrijskim aplikacijama (vrlo jednostavna i pouzdana komunikacija u okviru predvidivog propusnog opsega). Token Ring mreže, u odnosu na Ethernet mreže, koriste drugačiji mehanizam kontrole pristupa medijumu i drugačiji format podataka. Začetci tehnologije umeržavanja token ring bili su u kompaniji IBM. Kasnije je ona standardizovana od strane IEEE 802.5 radne grupe. U Token Ring mreži nema sukobljenosti niti algoritma odustajanja. Radne stanice se nadmeću pomoću okvira koji se prosleđuje od stanice do stanice i ćije posedovanje omogućava prenošenje podataka preko mreže. Ovaj okvir se naziva token. On se prosleđuje preko mreže prema logičkoj topologiji prstena pa od tuda i naziv ovoj mrežnoj tehnologiji. Pošto token redovno kruži prstenom, može se izračunati najduže vreme potrebno da ga stanica primi i započne slanje podataka preko mreže. Zato se Token Ring mreže nazivaju determinističke mreže jer se može izračunati vreme pristupa za najnepovoljnije okolnosti rada. Glavni nedostatak Token Ring tehnologije je njegova skuplja realizacija u odnosu na realizaciju Ethernet-a. Svega nekoliko kompanija proizvodi token ring adaptere, a zbog svoje složenosti njihova proizvodnja je skuplja. Ako sednete za bilo koji današnji računar-PC koji se nalazi u nekoj mreži, budite sigurni da je on povezan sa lokalnom mrežom nekim oblikom Etherneta. Iako postoje i druge tehnologije povezivanja u lokalne mreže, broj računara koji su povezani pomoću Etherneta nadmašuje sve ostale i to za red velićine. Ethernet je najraspostranjenija mrežna tehnologija koja povezuje servere, štampače i ostale uređaje na mreži. On je toliko raspostranjen da gotovo svi proizvođaći mrežne opreme nude opremu koja je projektovana da radi sa Ethernet lokalnim mrežama. Važno je napomenuti da postoje više vrsta Etherneta. On je počeo kao jednostavna tehnologija lokalne mreže da bi se danas razvio u ozbiljnu tehnologiju regionalne mreže. Njegov razvoj počeo je u istraživačkim laboratorijima Xerox-a 58
koji su dobili zadatak da umreže više računara koji će istovremeno da koristire najnoviji laserski štampač. Od prvih komercijalnih verzija koje su radile brzinama od 10 Mbps (sredinom 70-tih godina) do današnjih Gigabit-nih mreža ( 10 Gigabit Ethernet IEEE 802.3ae ). Korišćenjem komutacije, povećanjem brzina, vezama u punom dupleksu i prilagodljivost različitim medijumima, Ethernet tehnologiju svrstava daleko ispred svih ostalih LAN tehnologija razvijanih zadnjih 30 godina. Ne postoji ni jedan razlog koji bi ograničavao dalji napredak ove tehnologije što je još jedan jak razlog za dominantnu ulogu koju ova tehnologija ima na polju mrežnog povezivanja. Instalirana baza sadašnjih računara uglavnom koristi tehnologije zasnovane na bakarnim provodnicima i optičkim kablovima. Međutim, ne smemo zaboraviti sve veći rast bežičnih tehnologija. To potvrđuje tržište mobilnih telefona koje svake godine raste velikom brzinom. Današnji mobilni telefoni prihvataju tekstualne poruke, E-mail poštu i dopuštaju ograničeno pretraživanje WEB servisa. Poseban protokol razvijen za bežične aplikacije (WAP) doprineo je da mobilni telefon sve više postane klijentski računar preko koga možemo da odradimo gotovo sve poslove kao i sa normalnog desktop računara. Na ovom polju vodi se rat između dva konkurenta na polju bežične komunikacije i to: Wi-Fi (IEEE 802.11 standard) i HomeRF. HomeRF tehnologija je projektovana posebno za kućne korisnike i predstavlja izradu potpuno nove bežične mreže. IEEE 802.11 standardi protokola služe za proširenje mogućnosti bežičnog povezivanja postoječih mreža dodavanjem tačaka bežičnog pristupa (acces point). Ova tehnologija odnosi se na povezivanje računara od kuće do javnih prostora. Njen cilj je da postavi svetske standarde koji će omogućiti da se u mnogim raznorodnim okruženjima korisrti jedna kartica bežičnog mrežnog adaptera. Tu treba pomenuti još jednu tehnologiju koja sve više hvata zamaha a to je Bluetooth tehnologija. Bluetooth predstavlja još jednu bežičnu tehnologiju koja je projektovana da zameni veliki broj žica na kratkom prostoru. Ona treba da poveže uređaje kao što su štampač, tastatura, miš, računar i mobilni telefon. Kada razmatrarno različite mrežne uređaje ili softverske komponente mreže, obično kao referentnu tačku koristimo model koji je napravila Međunarodna organizacija za standardizaciju (International Standardization Model, ISO). Sedmoslojni referentni model umrežavanja (Seven-Layer Networking Reference Model) povezivanjem otvorenih sistema (Open System inter connection, OSI) prvobitno je razvijen kao nacrt za izradu dodatnih mrežnih ISO protokola. Međutim, ovi protokoli su nastali u vreme kada je bilo potrebno veliko angažovanje računara za njthovo implementiranje i nisu bili široko prihvačene. Neke kompanije, kao što je DEC-net korporacije Digital Equipment, ipak su prešle na OSI standarde. Sa naglim razvojem Interneta, kao i protokola koji su mu potrebni, TCP/IP je postao globalni standard za većinu lokalnih (i regionalnih) računarskih mreža umesto OSI protokola. TCP/IP se zasniva na mrežnom modelu koji ima manji broj slojeva - četri, ali je OSI ostao referentni model jer se razmatranje tehnologije umrežavanja obično još uvek odnosi na ovaj model. OSI model umrežavanja je upravo to - model. To je referenca koju možete da koristite kada sa kolegama razgovarate o mrežma. Model određuje sedam slojeva, koje rnožete da posmatrate kao zasebne modele, od kojih svaki obavlja određen skup funkcija. Svaki sloj u modelu komunicira sa susednim slojevima preko standardnog definisariog interfejsa. Prema tome, razvoj unutrašnjih funkcija svakog sloja može da se prepusti proizvođaču. Ono što je važno jeste da svi slojevi rade zajednu, bez obzira na to koji proizvođač ih obezbeđuje. Na primer, mrežni adapteri i mrežno kabliranje spadaju u najniži, fizički sloj. Mrežne kartice su projektovane za rad sa softverom koji spada u sledeči viši sloj, sloj povezivanja podataka. Na slici se vidi kako međusobno komuniciraju različiti slojevi modela, sa dva kraja mrežne veze.
59
Svaki sloj u OSI referentnom modelu obezbeđuje funkcije za susedne slojeve u modelu. Kao što se vidi na slici strelice pokazuju protok informacija u steku, od računara A naniže. Kada informacije stignu u fizički sloj, komponente u svakom sloju deluju tako da se podaci prenesu na udaijeni sistem. Na udaljenom sistemu, fizički sloj prima električne (ili svetlosne) impulse, konvertuje ih odgovarajući format poruke i vraća informacije u stek tako da podaci na kraju stižu do aplikacije za koju su namenjeni. Na slici se takođe vidi da postoji veza u oba smera izmedu slojeva u jednom sistemu i odgovarajućih slojeva u drugom slstemu. To znači da sa Iogičke tačke gledišta, svaki sloj u modelu obavlja funkcije kao da uspostavija vezu direktno sa sebi odgovarajučim slojem na udaIjenom sistemu. Nijedan sloj ne zna šta se događa u slojevima koji se nalaze neposredno ispod njega, odnosno kako se poruka prenost do odgovarajučeg sloja na udaljenom računaru. Na primer, TCP deli velike poruke u manje poruke koje se zovu segmenti. Ovi segmenti zatim se prenose u niže slojeve koji ih enkapsuliraju u IP datagrame, a zatim u protokol fizčkog sloja, kao što je Ethernet. Na prijemnom kraju, TCP softver ne mora da zna da je za prenos poruke upotrebljen Ethernet, Token Ring ill neka druga tehnologija. Umesto toga, TCP softver na udaljenom sistemu prima segmente koje je TCP softver na predajnom sistemu prvobitno poslao. Enkapsulacija Većina slojeva priključuje informacije podacima koje predaje nižim slojevima. Ovi podaci zovu se informacije zaglavlja. Na primer, jedan IP datagram sadrži informacije zaglavija kao što su izvorna i odredišna adresa i brojevi portova. Kada se IP datagrami prenosi naniže u steku, on može da se enkapsulira u Ethernet okviru. Ethernet okvir dodaje sopstvene informacije zaglavija. U Ethernet zaglaviju, umesto IP adresa, koriste se fizičke MAC adrese. Na prijemnom kraju komunikacije, informacije Ethernet zaglavlja se uklanjaju pre nego što se preostali podaci predaju u stek. Na IP nivou uklanja se IP zaglavlje i podaci se vračaju naniže do TCP softvera, i tako dalje. Dakle, svaki sloj na svakom računaru stvarno vidi, uz nekoliko izuzetaka, samo informacije zaglavlja koje je odgovarajuči sloj na drugom računaru priključio prvobitnoj poruci. Na ovaj način slojevi logički komuriiciraju jedan sa drugim, bez obzira na to kako slojevi iznad ili ispod njih interno rade. U sledećim odeljcima opisane su funkcije koje obavlja svaki sloj, počevši od dna (fizički sloj) i penjući se prema vrhu. Važno je napomenuti da neki proizvođači kombinuju dva iii više slojeva u jednu softversku aplikaciju. Kao što smo već rekli, sedmoslojni OS! referentni model je samo model. To je način da se tehnologije urnrežavanja razmatraju na racionalan način razumljiv za profesionalce. To ne znači da svi proizvodi za umrežavanje moraju da budu usaglašeni sa ovim modelom. 1. Fizički sloj Fizički sloj predstavljaju fizičke komponente koje sačinjavaju hardver za urnrežavanje, uključujući mrežne adaptere, konektore, mrežne nosioce podataka (bakarne provodnike ili optičke kablove) i tako 60
dalje. Jednostavno fizički sloj prenosi podatke sa jednog na drugo rnesto. Ovaj sloj pokriva električne i mehaničke aspekte mreže. Predstavlja najniži nivo OSI referentnog modela i pored specifikacija za povezivanje računara pokriva i deo koji se odnosi na detaljnu specifikaciju medija za povezivanje: upredene parice (twisted-pair), optičkog (fiber-optic) i koaksijalnog (coaxial) kabla. Standardi koji su interesanrni za klijent server aplikacije a koji su u okviru ovog nivoa su IEEE 802.3 (Ethernet), IEEE 802.5 (Token Ring). Oni su zaduženi da definišu zahteve za mrežnim interfejs karticama kao i softverske zahteve za MAC nivo (Media Access Control). Ovde su uključeni i standardi koji definišu serijsko povezivanje kao što su EIA232 i X.21 standardi. Od mrežnih uređaja ovom nivou pripadaju repetitori-pojačavači (repeaters) i multiplekseri. Na primer, u ovom sloju odlučuje se o metodu koji se koristi za kodiranje podataka u električne ili svetlosne signale u mrežnim nosiocima podataka. 2. SIoj povezivanja podataka Sloj povezivanja podataka obavija nekoliko funkcija koje je IEEE podelio u dva podsloja. Prvi je logička kontrola veze(Logical Link Control, LLC), a drugi kontrola pristupa nosiocima podataka (Media Access Control, MAC). Kao celina, sloj povezivanja podataka odgovoran je za prenos podataka sa jednog mesta na drugo kao i za minimalno ispravljanje grešaka. Svrha LLC-a je da obezbedi pristupne tačke servisa (service access point, SAP) koje uređaji mogu da koriste za slanje informacija. MAC komponenta vodi računa o prenosu podataka i ispravljanju grešaka. Sloj povezivanja podataka odgovoran je, na primer, za sastavijanje Ethernet okvira. Tu spada formatiranje informacija u zaglavlju u tačna polja i smeštanje podataka na pravo mesto. Funkcije koje rade u ovom sloju takođe određuju redosled interpretiranja bitova (to jest, sa većeg iii manjeg kraja) i dodaju informacije kontrolnog zbira koje se koriste da bi se osiguralo da okviri stignu nedirnuti na svoje odredište. Mrežni komutatori(swiches) i mostovi(bridges) su mrežni uređaji koji rade u ovom sloju modela. Oni pregledaju MAC adrese paketa i koriste te informacije da bi odIučili da Ii da paket proslede na drugi port. 3. Mrežni sloj Ethernet, Token Ring i FDDI (Fiber Distributed Data Interface) definišu zapise podataka paketa koji cirkulišu između MAC i Netware nivoa. Ovaj nivo je odgovoran za svičovanje i rutiranje poruka i podataka na njihove odgovarajuše destinacije. Zadužen je da omogući jedinstvenu mrežnu adresu, odredi put za podatke do odredišta, podeli velike blokove podataka u manje pakete i izvrši tekuću kontrolu. Mrežni sloj obezbeđuje važne funkcije mrežnom steku protokola. Ovde se prave protokoli koji upravljaju načinom prenosa paketa u mreži ili usmeravanja paketa u drugu mrežu. Na primer, Internet protokol (IP) nalazi se u ovom sloju. IP adresiranje obavlja se u ovom sloju. Setite se da IP adrese imaju dve komponente: mrežni ID i ID računara. Prema tome, paketi mogu da se prenose u lokalnom LAN-u (korišćenjem ID-a računara ili da se usmere u drugu mrežu (korišćenjem mrežnog ID-a). Ovaj sloj je odgovoran i za podelu većih poruka u manje koje se smeštaju u okvire napravljene u sloju povezivanja podataka. Ova velićina zove se maksimalna jedinica prenosa (Maximal Transmision Unit, MTU). Na prijemnom kraju, mrežni sloj ponovo sastavlja manje poruke u veće, originalne poruke, pre nego što preda podatke navše u transportni sloj. Najlakši način da se setimo ovog sloja jeste da zapamtimo da on obezbeđuje adresiranje i usmeravanje. Trebalo bi da bude očigledno da na ovom nivou rade tradicionalni usmerivači. Usmerivači koriste mrežnu adresu protokola da bi odredili na koji port treba proslediti paket. 4. Transportni sloj Dok je mrežni sloj odgovoran za usmeravanje paketa podataka, protokoli u transportnom sloju preuzimaju dužnost da se postaraju da ovi paketi stvarno budu preneseni i to tačnim redosledom. Kada se poruke sadrže više od jednog paketa, tada prenosni nivo sekvencira te poruke i reguliše njihov protok. On je odgovoran za siguran prenos poruka od jednog do drugog računara tj. odredišta. Ovaj nivo uvodi svoje adrese koje se dodaju na mrežne adrese. Zato što servisira procese na sistemima, višestruke transportne adrese (izvor ili odredište) mogu da imaju istu mrežnu adresu. Na primer, u ovom sloju može da se nađe protokol za kontrolu prenosa (Transmission Control Protocol, TCP). TCP 61
koristi IP (u mrežnom sloju), prati koji segmenti se gube u mreži i stara se da ih IP po potrebi ponovo šalje. lako ovaj segment može da obezbedi ponovno slanje izgubljenih paketa, on to ne mora da čini. Na primer, u ovom sloju nalazi se protokol korisničkih datagrama (User Datagram Protocol, UDP). UDP takođe koristi IP da bi preneo svoje poruke. Međutim, UDP minimalno upravlja porukama koje šalje. On ne potvrđuje prenos paketa, ali odgovara na ICMP poruke, kao što su one koje su napravijene da bi usporile prenos kada podaci stižu na prijemni kraj prevelikom brzinom. 5. SIoj sesija Sloj sesija odgovoran je za odlučivanje o formatu podataka koji se prenose. Primeri protokola sesija su pozivi udaljenih procedura (koristi ih NFS kao i druge aplikacije). Još jedan način posmatranje sloja sesija jeste da njegovo funkcionisanje omogućuje procesima na umreženim računarima da međusobno komuniciraju. Ovaj nivo nam omogućava da se jedna aplikacija izvršava na dva ili više različitih procesora. Zadatak je da tu aplikaciju svedu na jednu sesiju. Sesija je jedna razmena podataka-poruka tj. dijalog koji vode dva procesora. U slučaju da neka stanica (procesor) otkaže ili prekine rad ovaj nivo treba da obezbedi da se sesija bezbedno završi. TCP i NetBIOS su protokoli koji se nalaze u ovom sloju sesije. 6. SIoj prezentacije Sloj prezentacije interpretira stvarne podatke koji se razmenjuju. Na primer, različiti stemi mogu da koriste različite metode predstavljanja brojeva sa pokretnim zarezom ili nekih drugih podataka. Na ovom nivou se prevodi redosled bitova u bajtu. U ovom sloju obavlja se i neophodna konverzija. Pored toga, upravo u ovorn sloju obavljaju se prevođenja između različitih metoda za šifrovanje znakova. Na primer, kada jedan računar koristi ASCII znakove, a drugi IBM-ovo EBCDIC šifrovanje, prevođenja između ova dva metoda predstavljanja znakova obavljaju se u sloju prezentacije 7. SIoj aplikacija Korisnik stupa na scenu u sloju aplikacija. Bez aplikacija koje treba da koriste mrežu, administratori mreža ostali bi bez posla. Ovo je nivo gde se aplikacija direktno izvršava. Programer kodira jedan API (Aplication Programing Interfaced) koji je definisan za taj nivo. Primeri mrežnih komponenti koje se nalaze u ovom sloju su mrežne barijere ili umreženi sistemi datoteka (kac to je NFS). Krajnji korisnici mogu da prepoznaju komponente sloja aplikacija kao programe koje svakodnevno koriste, na primer, elektronsku poštu i FTP.
o Komunikacioni posrednik Softver komunikacionog posrednika obezbeđuje sredinu kroz koju klijent i server komuniciraju radi izvođenja specifičnih akcija. On je logički smešten između klijenta i servera i obezbeđuje specijalne servise za izolovanje klijenta od detalja mrežnih protokola i detalja u protokolima server procesa. Takođe, on izoluje aplikacionog programera od internih poslova u serveru i od mrežnih protokola. Upotreba posrednika kod baza podataka donosi: mrežnu nezavisnost (čeone aplikacije mogu da pristupe podacima bez obzira na protokol) i nezavisnost servera baze podataka (čeone aplikacije mogu da pristupe podacima na različitim serverima baze podataka bez potrebe da se piše kod koji je specifičan za takav server baze podataka). Za korišćenje baze podataka posrednik omogućuje programerima da koriste generičke SQL rečenice za pristup različitim i višestrukim serverima baze podataka. Posrednički nivo izoluje programera od razlika između SQL dijalekta transformišući SQL rečenice u sintaksu koja se očekuje na serveru baze podataka. Ovo je veoma značajno, jer postoji veliki broj različitih DBMS softvera, u kojima je implementiran SQL sa različitom sintaksom i sa različitim funkcijama. Pored toga, podaci mogu biti smešteni i u nerelacionim DBMS-ima koji ne podržavaju SQL. 62
Da bi izvršio ove funkcije, komunikacioni posrednik radi u dva nivoa: o
Fizički nivo, koji razmatra komunikaciju između klijenta i servera. Fizička veza uključuje mrežni hardver i softver. Mrežni softver sadrži mrežne protokole, a to su pravila koja kazuju kako računar mora interagovati sa ostalim računarima u mreži i obezbeđuje da taj računar bude spreman da primi i pošalje signal od i prema ostalim računarima u mreži. U većini slučajeva, fizički nivo komunikacionog posrednika jeste mreža, tj. mrežne kartice i kablovi.
o
Logički nivo razmatra komunikaciju između klijent i server procesa. Ovo je nivo gde klijent/server konverzacija dolazi najviše do izražaja.
Da bi bolje razumeli kako u klijent/server okruženju putuju podaci i upravljačke informacije, trebalo bi da znamo više detalja o komunikaciji računara. Za ilustraciju ovih detalja koristićemo OSI referencu mrežnog modela koji je zasnovan na sedam nivoa koji su međusobno izolovani. Jedan nivo, da bi obavio svoju funkciju ne mora poznavati detalje o radu sledećeg nivoa u nizu obrade. Ovaj model se sastoji od sledećih nivoa: 1. Aplikacioni nivo. To je aplikacija krajnjeg korisnika. Kod klijenta su to čeone aplikacije (elektronska pošta, radne tabele, programi za obradu teksta, itd.), a kod servera su to pozadinske aplikacije. 2. Prezentacioni nivo. Obezbeđuje funkcije formatiranja za aplikacioni nivo protokola kao što su konverzija, kompresija, šifrovanje i sl. Drugim rečima, ovaj sloj obezbeđuje da se informacija pošalje u formi koja je razumljiva i upotrebljiva na odredištu. 3. Nivo sesije. Ovaj nivo obezbeđuje uspostavljanje i kontrolu komunikacije između aplikacija. Obezbeđuje bezbednost, dostavnost i komunikacioni oporavak. 4. Transportni nivo. On obezbeđuje prepoznavanje greške i oporavak, obezbeđujući na taj način da se svi podaci pravilno dostave, dodajući identifikator koji je specifičan za transportni nivo. 5. Mrežni nivo. Obezbeđuje rutine za pakovanje razbijajući velike poruke na male delove. On deluje kao mrežni kontroler koji odlučuje kojim putevima podaci mogu da se prebace na odredište. 6. Data-link nivo. Kreira okvire za prenos i kontroliše dodelu pristupa prema mrežnom fizičkom medijumu (kablu). Ovaj nivo uključuje još i proveru greške, korekciu i sl. 7. Fizički nivo. Obezbeđuje standardni postupak prenosa, sa električnim detaljima, mrežnu karticu, tip kabla, napon, itd. Fizički prenosi okvire podataka kroz mrežni kabl.
63
11 čas
Protokoli za povezivanje klijent server sistema
Povezivanjem dva ili više računarskih sitema (klijenti i serveri) putem različitih mrežnih topologija, ne znači i potpunu interoperatibilnost između njih. Potrebno je da se ti sistemi slože oko mnogih stvari koje utiču na njihovu vezu a to su: načini uspostavljanja veze kod početka prenosa podataka, vrste poruka koje se razmenjuju, formati podataka i poruka, razrešavanje incidentnih situacija (loši podaci, prekid veze i td.), kodiranje i dekodiranje podataka, strategije korišćenja mrežnih resursa i td. Kombinacijom mrežnih protokola kao što su Novelov IPX/SPX. NetBIOS, TCP/IP, i interoperatibiolnih udaljenih procesa kao što je RPC (Remote Procedure Call) tehnologija postiže se potpuna interoperatibilnost između dva povezana mrežna segmenta. Drugim rečima, kao što između ljudi postoji komunikacija koja može da se uspostavi na više različitih jezika, tako i između mrežnih segmenata postoji veliki broj protokola koji im pomažu da bezbedno i sigurno razmenjuju podatke. Normalno oba segmenta moraju da “razgovaraju na istom jeziku” tj. da koriste iste protokole kako bi se potpuno razumeli i na taj način obezbedili normalno funkcionisanje veze kako u LAN okruženju tako i šire u okviru WAN mreže. Verovatno najpoznatija WAN mreža koja se sastoji od ogromnog broja manjih mreža poznata je kao Internet. Njen istorijat datira još od kraja 60-tih godina prošlog veka, kada je Advanced Research Projects agencija (ARPA) američkog ministarstva odbrane, počela da prikuplja sredstva od univerziteta i privatnih organizacija za razvoj komunikacionih sistema. Istraživanja su na kraju dovela do razvoja ARPANET-a, male eksperimentalne mreže koja je demonstrirala mogućnost povezivanja različitih računara pomoću mreže sa komutacijom paketa podataka. Prvi protokol koji je upravljao ARPANET-om je bio NCP (Network Control Protocol) i on je predstavljao začetak svih današnjih savremenih protokola poznatih pod nazivom TCP/IP skup protokola. Daljim razvojem ove mreže ona je značajno narasla i polako prerasla u Internet koji danas povezuje na hiljade univerziteta, privatnih institucija i vladinih agencija širom sveta. Teško je proceniti koliko ljudi danas koristi Internet, ali sa mrežama koje danas postoje bukvalno u svim privatnim i javnim organizacijama i sa sve većim brojem Internet provajdera, broj korisnika dostiže desetine miliona, a sasvim je moguće da je reć i o nekoliko milijardi korisnika širom sveta. Jedan od najdominantnih pojmova koji je u neku ruku i postao sinonim za Internet mrežnu komunikaciju je TCP/IP skup protokola. TCP/IP predstavlja primarni mrežni protokol koji se koristi na Internetu i za razliku od mnogih drugih protokola on nema svog vlasnika tj. njega nije razvijao samo jedan proizvođač. Razvijen je da bi obezbedio vezu preko mreže između računara razližitih proizvođača (kao što su IBM i Apple), tako da jedan protokol (ili više protokola) može da se koristi za izradu mreže, bez obzira na to koji se izvršni računarski hardver koristi. Tokom vremena TCP/IP se razvijao i napredovao zahvaljujući brojnim pojedincima koji su imali mogućnosti da daju svoj doprinos njegovom napredku. RFC (Request For Comments - zahtevi za komentarima) dokumenti predstavljaju dokumente koji su otvoreni za sugestije u vezi unapređenja postojećih i izrade novih protokola, koji se analiziraju od strane različitih grupa specijalista za pojedine oblasti. TCP/IP je razvijan pomoću ovog metoda da bi obezbedio vezu preko mreže, između različitih hardverskih konfigiracija računarskih sistema. Oslobađajući se u toku razvoja od uticaja samo jednog proizvođača, TCP/IP je razvijen tako da zadovolji hardverske potrebe mnogih proizvođača, a ne samo jednog. OSI (Open System Interconnect – otvoreni sistem uzajamnog povezivanja) predstavlja referentni model koji se koristi uglavnom kao radni okvir u kome mogu de se sprovode diskusije mrežnih protokola. Ovaj model je 1984 godine razvio ISO (International Organization for Standardization ) i on definiše stekove protokola u modularnom obliku i podrazumeva da se svaka mrežna aplikacija može predstaviti u sedam međusobno povezanih slojeva. Kako je razvoj TCP/IP protokola počeo mnogo ranije nego što je definisan ovaj referentni model OSI umrežavanja, za očekivati je da se TCI/IP protokoli ne uklapaju uvek u sedam slojeva OSI referentnog modela. ISO je koristio ovaj model da zapravo razvije skup otvorenih mrežnih protokola, ali oni nikada nisu bili široko prihvačeni. Međutim, OSI referentni model danas se i dalje koristi kada se govori o mrežnim protokolima. Važno je da uoći da je i TCp/IP razvijan na osnovu sličnog, mada manjeg modularnog referentnog model DOD ( Department of Defense ) ili 64
DARPA modela. Na slici 1. su prikazana četri sloja od kojih se sastoji TCP/IP – DOD model i kako se svaki od ovih slojeva odnosi prema OSI referentnom modelu. OSI model Sloj TCP/IP model Aplikacija 7 Prezentacija 6 Aplikacija Sesija 5 Transport 4 Transport Mreža 3 Mreža Podataci 2 Pristup na mrežu Fizički 1 Slika br. 1 Kao što se sa slike može videti TCP/IP se ne uklapa tačno u OSI model, ali i dalje je moguće da se pozovete na ovaj model kada raspravljate o izvesnim aspektima protokola i servisa koje obezbeđuje TCP/IP. Skarćenica TCP/IP odnosi se na Transmission Control Protocol/Internet Protocol (protokol za kontrolu prenosa/Internet protokol). Pored ova dva značajna protokola, mnogi drugi srodni protokoli i uslužni programi obično se grupišu zajedno i nazivaju se TCP/IP Protocol Suite -TCP/IP skup (ili stek) protokola. Prema tome pod pojmom TCP/IP podrzumevamo skup protokola i uslužnih programa koji nam stoje na raspolaganju kod Internet komunikacija. Neki od tih protokola i programa su: 1. IP (Internet Protocol) - predstavlja jedan nesiguran protokol bez uspostavljanja veze koji se koristi kao sredstvo za prenos datagrama sa jednog računara na drugi i za adresiranje između mreža. Ovde treba objasniti pojmove kao što su segment, datagram, paket i okvir jer se oni obično pogrešno tumače i zamenjuju. Počevši od TCP protokola, podaci koji treba da se šalju nazivaju se segmentima. TCP propušta segmente IP-u, koji pravi pakete ili datagrame od tih segmenata. IP propušta podatke naniže u stek, a ovi, kada stignu na fizički provodnik, dobijaju naziv okvir. Prema tome, u svim praktičnim primenama može se smatrati da su paketi i datagrami jedno te isto. 2. TCP (Transmission Control Protokol) - je protokol koji koristi IP, ali obezbeđuje viši nivo funkcionalnosti, pri kome se proverava da li određeni datagrami kojima upravlja IP zaista stižu sa određenog odredišta i do njega. TCP je protokol orijentisan na uspostavljanje veze, koji zahteva da se uspostavi sesija za upravljanje komunikacijama između dve tačke na mreži. 3. UDP (User Datagram Protocol) takođe koristi IP da šalje podatke preko mreže. Dok TCP koristi mehanizam za potvrđivanje da bi osigurao pouzdanu isporuku, UDP to ne čini. On je namenjen za korišćenje u aplikacijama kod kojih nije neophodan garantovani servis isporuke koji obezbeđuje TCP. Servis DNS(Domain Name System - sistem imena domena) predstavlja primer aplikacije koja koristi UDP. Aplikacije koje koriste UDP odgovorne su za preduzimanje funkcija provere radi pouzdane isporuke koju inače obezbeđuje TCP. 4. ICMP (Internet Control Message Protocol - protokol koji upravlja Internetom putem poruka) predstavlja neophodan deo svake TCP/IP implementacije, a funkcije koje on sprovodi veoma su važne za usmerivače i ostale mrežne uređaje koji komuniciraju preko TCP/IP-a. Slično kao i TCP i UDP i ovaj protokol koristi IP protokol za slanje svojih poruka. Dok TCP obično može da se oporavi zbog ispučtenih datagrama tako što jednostavno zatraži od IP-a da ih ponovo prenese, ICMP je mehanizam za izveštavanje koji i IP koristi a samim tim i mnogi protokoli koji koriste IP (ako ste koristili komande ping ili traceroute onda ste sigurno koristili usluge ICMP-a). 5. IGMP ( Internet Group Menagment Protocol – protokol za upravljanje grupama na Internetu) služi za upravljanje grupama sistema koji su istovremeno članovi više grupa. Višeznačno upućivanje ( multicasting ) predstavlja tehniku koja dopušta da se isti datagrami isporuće na više različitih odredišta odjednom. Upravo ovaj protokol igra glavnu ulogu u ispunjavanju ove funkcije. 6. ARP ( Address Resolution Protocol – protokol za razrešavanje adresa ) koristi se da bi računar odredio koje hardverske adrese treba da se pridruže IP adresi. Ovo je neophodno pošto se IP 65
adrese koriste za usmeravanje podataka između mreža, dok se komunikacije na lokalnom mrežnom segmentu obavljaju pomoću fiksnih hardverskih adresa mrežnih kartica. 7. RARP (Protocol Reverse Address Resolution ) je protokol sličan ARP-u, ali radi suprotno. To je stariji protokol koji je razvijen da bi omogučio računaru da utvrdi koju IP adresu treba da koristi, na osnovu tabele koja se obično čuva na usmerivaču. U opštem slučaju, ovu funkcionalnost preuzeli su drugi protokoli, kao što su BOOTP i DHCP. Međutim još uvek možemo da pronađemo da se ovaj protokol koristi u mnogim mrežama koje koriste stariju i zastarelu opremu čiji radni vek polako ističe. 8. BOOTP ( Bootstrap Protocol ) predstavlja protokol za podizanjem sistema. I on predstavlja stariji protokol, koji je u opštem slučaju zamenjen DHCP-om. Praktično večina DHCP servera može da radi i kao BOOTP serveri. BOOTP je napravljen da bi omogućio stanicama bez diskova da mogu da ućitavju konfiguracione informacije, kao što su IP adresa i naziv servera, koje mogu da se koriste za učitavanje operativnog sistema. Budući da radne stanice bez diskova nemaju lokalne uređaje za smeštanje podataka (osim operativne RAM memorije) one ne mogu same da čuvaju ove informacije između dva podizanja sistema. 9. SMTP ( Simple Mail Transport Protocol – jednostavni protokol za upravljenje poštom) koristi se za prenos poruka od klijenta do SMTP servera, kao i za prenos tih poruka od jednog do drugog SMTP servera. Pošto SMTP predstavlja aplikacioni protokol, on je pridružen broju porta isto kao i FTP, Telnet ili drugi aplikacioni protokoli. Port koji se obično koristi za SMTP je TCP port 25. Iako je TCP verzija koja se najviše koristi za implementaciju SMTP-a on može da se koristi i sa drugim protokolima. Kao aplikacioni protokol, SMTP se oslanja na mehanizme detekcija i ispravljanja grešaka koji se nalaze u oanovnim protokolima i ne implementira ovu vrstu funkcija u samom SMTP-u. 10. SNMP ( Simple Network Management Protocol –jednostavni protokol za upravljanjem mrežom) napravljen je da olakša upravljanje mrežnim uređajima i računarima sa neke centralne lokacije. Kako formiranje mreže u današnjim uslovima podrazumeva integrisanje proizvoda različitih proizvođača tako je potrebno imati neki servis koji će nam pomoći da upravljamo svim tim razlićitim komponentama sa jedne centralne lokacije. Upravo tu dolazi do izražaja ovaj protokol koji treba da obezbedi jednostavnost u upravljanju mrežnih komponenti (kao prostih mostova i habova tako i složenijih usmerivača ili komutatora). 11. RMON ( Remote Monitoring Protocol ) je razvijen radi daljeg unapređenja mogućnosti administratora da daljinskim putem može da upravlja udaljenim računarima i mrežnim uređajima. 12. WINS ( Windows Internet Name Service ) predstavlja Microsoft-ov NetBIOS Name Server (NBNS) koji je razvijen za razrešavanje problema oko dodele imena računarima u mreži, zasnovan je na klijent server arhitekturi. WINS koristi dinamičku bazu podataka u kojoj se registracija imena sprovodi putem poruka sa jednoznačnim upućivanjem (direktan kontakt) između servera i određenog WINS klijenta. Pošto WINS server ne mora da bude na istom segmentu mreže kao i klijent i pošto nema difuziono upućenih poruka koje mogu da izazovu nered na mrežnom medijumu, WINS predstavlja efikasan metod za razrešavanje problema dodele imena sve do pojave DNS servera i Active Directory-aktivnog diretorijuma. 13. DHCP(Dynamic Host Configuration Protocol-protokol za dinamičko konfigurisanje računara) oslobađa mrežnog administratora od dužnosti kao što su ručno konfigurisanje svakog umreženog računara adresnim i drugim informacijama. 14. DNS ( Domain Name System ) predstavlja hijerarhijski sistem imenovanja koji se koristi na Internetu i u većini TCP/IP mreža. Na primer, kada u svom Internet pretraživaču otkucate www.eunet.yu , vaš TCP/IP stek šalje zahtev DNS serveru da utvrdi IP adresu koja je pridružena tom imenu. Od tog trenutka pa nadalje, pretraživač može da koristi tu IP adresu da šalje zahteve toj Web strani. 15. FTP ( File Transfer Protocol –protokol za prenos datoteka) predstavlja složen protokol koji omogućava razmenu datoteka sa podacima, pomoću različitih metoda za prikaz podataka i za smeštanje datoteka. U svom najjednostavnjem obliku on koristi razmenu nezaštićenih imena i 66
lozinki, tako da nije osmišljen kao posebno bezbedan uslužni program. To je i normalno jer kada je on razvijan napadi na bezbednost nisu se smatrali kao ozbiljna pretnja. 16. TELNET predstavlja još jedan vrlo koristan alat koji čini skup TCP/IP protokola. Telnet aplikacija “udaljeni terminal” pmogućava vam da uspostavite interaktivnu sesiju za prijavljivanje na sistem udaljenog računara i da izvršavate komande kao da ste se diretno prijavili na taj udaljeni računar. Telnet se ne koristi samo da bi se uspostavila sesija sa računarom, već je takođe ugrađen i u mnoge mrežne uređaje kao što su serveri za štampanje, habovi, komutatori i usmerivači. Korišćenje telneta predstavlja jednostavan način za upravljanje sa više čvorova u mreži, računara ili mrežnih uređaja, sa neke centralne lokacije. Na slici broj 2 prikazan je raspored svih ovih protokola u odnosu na referentni OSI model umrežavanja. Sa slike se vidi da IP predstavlja osnovni protokol koji se u TCP/IP skupu koristi za isporuku datagrama. Takođe možemo da primetimo da da protokol TCP/IP i srodni protokoli rade iznad fizičkih komponenti mreže. Zbog toga je jednostavno prilagoditi TCP/IP za razližite vrste mreža, kao što su Ethernet ili Token Ring. Kada se radi o korišćenju protokola TCP/IP u mreži, ono što on odrađuje jeste prenos IP paketa u koji ste upakovali svoje podatke i kojeg ste prosledili nadole, ka stvarnom mrežnom hardveru. HTTP SMTP FTP TELNET DNS SNMP voice over IP TCP
UDP IP ICMP IGMP
(3 sloj)
Sloj veze podataka
(2 sloj)
Fizički mrežni medijum
(1 sloj)
(4 sloj)
Segment Paket/Datagram
Okvir
Slika broj 2. Budući da IP predstavlja zajednički imenalac TCP/IP skupa u narednim poglavljima malo više ćemo objasniti taj protokol, a ksnije i TCP i UDP protokol.
67
12 čas
IP – Internet Protocol
U skraćenom nazivu protokola TCP/IP, Internet protokol se nalazi kao druga komponenta, ali prema funkciji koju obavlja može se slobodno reći da je on u stvari mnogo značajnija komponenta. On predstavlja osnovni protokol preko koga se prebacuju paketi sa jednog mesta na drugo i gotovo svi protokoli iz skupa TCP/IP ga koriste. Osnovna uloga ovog protokola je da on treba da obezbedi mrežni servis bez potvrđivanja i bez uspostavljanja veze, a pored toga treba da obezbedi mehanizam za adresiranje koji koristi TCP/IP. Sledećih nekoliko karakteristika izdvaja IP protokol od ostalih: IP predstavlja protokol bez uspostavljanja veze kod koga nije potrebno nikakvo podešavanje. On je jedan nepovezan protokol kod koga svaki paket predstavlja poseban entitet koji sa IP aspekta nije ni u kakvoj vezi sa sa drugim paketima. IP ne kontaktira odredišni računar ili mrežni uređaj da bi uspostavio putanju koja će se koristiti za slanje podataka. Umesto toga, on samo prihvata podatke od protokola višeg nivoa, kao što su TCP ili UDP, formatira pakete koji sadrže adresne informacije i šalje te pakete na njihov put, koristeći kao podlogu fizičku mrežnu arhitekturu. Kada protokoli višeg nivoa koriste IP za isporuku svojih informacionih podataka, ne postoji garancija da će svaki paket koji nastane na IP nivou koristiti istu putanju do svog odredišta. Vrlo je verovatno da će serija paketa koju je sačinio protokol višeg nivoa stići na odredište u sekvenci koja ima sasvim drugačiji redosled od onoga po kome je započet prenos. Čak šta više, IP uopšte i ne vodi računa o tome da li su svi paketi stigli do odredišne tačke. Ta funkcija je prepuštena protokolu koji koristi IP za isporuku koji je zadužen za proveru grešaka i potvrđivanja ispravnog prijema. IP je protokol bez potvrđivanja. U većini slučajeva on ne proverava da li je datagram nedirnut stigao na svoje odredište. On samo formatira informacije u pakete i šalje ih duž provodnog medija. Bez mehanizma za potvrđivanje, IP mogu da koriste drugi protokoli kojima ova funkcionalnost nije potrebna, i na taj način eliminišu dodatno trošenje vremena koje prati potvrđivanje. Taj zadatak može da odradi neki viši protokol (TCP) ili sama aplikacija kojoj je bitno da se svaki paket ispravno stigne do odredišta. Međutim, i na nivou IP postoji poseban protokol , ICMP (Internet Control Message Protocol ), koji posredno pomaže IP-u u rešavanju ovog zadatka, utoliko što može da utiče da se neki uslovi slanja koriguju. Na primer, iako IP ne dobija natrag potvrdu sa odredišta IP paketa, dobiće ICMP poruku da uspori, ukoliko se paketi šalju brže nego što mogu da se obrade na odredištu. IP je nepouzdan. To je lako uočiti budući da je u pitanju protokol bez uspostavljanja veze i bez provere da paketi stižu na svoje odredište, kao ni po kom redosledu oni stižu. Drugim rečima za IP je samo bitna brzina isporuke paketa. Postoji još jedan razlog zbog koga se IP smatra nepouzdanim protokolom a to je što IP implementira TTL (Time To Live) vrednost, koja ograničava broj mrežnih usmerivača ili računara kroz koje datagram može da prolazi. Kada se ova granica dostigne, taj datagram se jednostavno odbacuje a kako IP nema mehanizme za otkrivanje ovog problema (potvrđivanje prijema) on je potpuno nesvestan ovog problema. Međutim TTL ima i svoje prednosti a to su u slučaju da administrator sistema pogrešno konfiguriše usmerivače (router) i tako napravi beskonačnu petlju u mreži. Da nije TTL vrednosti, paket bi beskonačno putovao od jednog do drugog usmerivača i tako nepotrebno opterećivao gustinu saobraćaja na mreži. IP obezbeđuje adresni prostor za TCP/IP. Adresiranje predstavlja najvažniju funkciju koja je implementirana u IP sloju. Svaka mrežna kartica koja se nalazi u bilo kom računaru ima jedinstvenu fiksnu (burned in) adresu koja se naziva MAC (Media Access Control ) adresom. Ove adrese obezbeđuje proizvođač mrežnih kartica i ona se utiskuje u svaku karticu u procesu proizvodnje tih kartica. Adrese koje se tada ubacuju u kartice formiraju takozvani ‘’ravni adresni prostor’’ koji nam ne dozvoljava da možemo efikasno da organizujemo usmeravnje datagrama iz jednog sistema ili mreže u druge. Ta MAC adresa koja se dodeljuje kartici je jedinstvena i sastoji se od 6 bajtova (48 bitova). Prvi deo te adrese identifikuje proizvođača a ostali deo predstavlja obični serijski broj kartice koji se redom dodeljuje svakoj kartici. Obično je prikazana u vidu heksadecimalnih brojeva kao na primer: 00-80-C8-AB-34-56. IP adresa se takođe sastoji iz dva dela i to adrese mreže i adrese računara. Zahvaljujući mrežnoj adresi moguće je napraviti hijerarhiju koja omogućava efikasne mehanizme za usmeravanje pri slanju podataka u druge mreže. Dok određena mreža može da ima 68
mrežne adaptere koji su od više isporučilaca a samim tim i MAC adrese koje su različite, može se slobodno reći slučajni brojevi, dotle su IP adrese organizovane po mrežama. Samim tim usmerivači ne moraju da imaju na milone MAC adresa, već sadrže samo IP adrese kojih ima onoliko koliko i računara ili mrežnih uređaja koji su vezani na isti usmerivač.
Šta zapravo radi IP ? Osnovna uloga IP protokola je da prihvata podatke iz višeg sloja i da vrši njihovo usitnjavanje u manje pakete (ili datagrame) i iste prenosi preko mreže. Na prijemnom kraju IP ponovo prikuplja te datagrame i prosleđuje ih ka višem sloju, ka protokolu višeg nivoa koji koristi IP. Da bi se svaki paket uručio, IP u zaglavlju datagrama postavlja IP adrese izvora i odredišta. IP takođe na osnovu proračuna proverava ispravnost informacije u zaglavlju kako bi mogao da je potvrdi. Međutim, to se samo radi sa podacima u zaglavlju a ne i sa kompletnim paketom tj. ta se funkcija ne izvršava nad podacima u paketu. Kao što smo ranije napomenuli velika prednost TCP/IP je da on dopušta mrežama da koriste različite medijume za međusobne veze. Dok jedna mreža može da koristi format okvira Ethernet 802, druga može da koristi FDDI (Fiber Distributed Data Interface). Svaki od ovih okvira nižeg nivoa ima svoje posebno zaglavlje koje sadrži informacije, koje su za tu tehnologiju potrebne, za slanje okvira duž fizičkog mrežnog medijuma. Na ovom nižem nivou, u steku protokola, IP datagram se nalazi u delu sa podacima u određenom okviru. Pošto IP doda svoje informacije iz zaglavlja u poruku koju prima od protokola višeg nivoa, i pošto napravi datagram odgovarajuće veličine, on taj datagram prebacuje u sloj Network Access, koji taj IP datagram ubacuje u Ethernet okvir. Na prijemnom kraju, informacije se skidaju iz zaglavlja Ethernet okvira, a IP datagram se prosleđuje naviše u stek koji obrađuje IP protokol. Na sličan način, informacije iz IP zaglavlja skidaju protokoli višeg nivoa koji samo koriste IP, kao što su TCP ili UDP. Iako je većini ljudi IP poznat kao transportni protokol koji koriste protokoli višeg nivoa, jedna od njegovih važnijih funkcija je da obezbedi adresni prostor za potrebe TCP/IP skupa. Uvođenjem IP adresa obezbeđen je hijerarhijski adresni prostor za mreže, tako da je sada bilo lako da se konstruiše usmerivač koji će koristiti deo te IP adrese koji će predstavljati adresu mreže. Na taj način kada datagram stigne do usmerivača on na osnovu mrežnog dela adrese usmeri podatke prema toj odredišnoj mreži. Kada datagram stigne do odredišne mreže tada se tek koristi drugi deo adrese tj. adresa računara u toj mreži. Bez mogućnosti određivanja mrežne adrese i adrese računara, hijerarhijski adresni prostor ne može da se uspostavi, a usmeravanje bi zahtevalo tabele usmeravanja koje bi doslovno morale da sadrže sve adrese svakog računara ili uređaja u određenoj mreži. Umesto toga, ograničavanjem tabela za usmeravanje samo na čuvanje mrežnih adresa, ovo postaje jednostavan postupak. Postoje tri vrste IP adresa i to: Unicast (jednoznačno upućivanje) – Ova vrsta adresa je najuobičajeni tip IP adrese. Ona na jednostavan i jedinstven način identifikuje jedan ražunar u određenoj mreži. Broadcast (difuzno upućivanje) – Ne treba ga mešati sa difuznim upućivanjem (broadcast) kod Ethernet okvira. IP takođe ima ovu mogućnost i podešava za sebe skup adresa koje mogu da se koriste za difuziono upućivanje, ćime se šalju podaci svakom sistemu na određenoj mreži. Multicast (višeznačno upućivanje) – Slično adresama za difuziono upućivanje, adrese za višeznačno upućivanje šalju podatke na više odredišta. Razlika između adresa za višeznačno i difuziono upućivanje jeste u tome što adresa za višeznačno upućivanje može da šalje podatke na više mreža, gde ih primaju računari koji su konfigurisani za prijem tih podataka. Sve IP adrese takođe možemo podeliti na više adresnih klasa u zavisnosti od veličine mrežnog i računarskog dela IP adrese. Klase IP adresa su prvo definisane u preporuci RFC (Request for coments) 791. Iako je ovaj sistem klasa služio svrsi dug niz godina, današnje usmeravanje na Internetu mnogo je složenije od onoga što ove jednostavne klase adresa dopuštaju. Međutim, od suštinskog je značaja da se razumeju klase adresa u lokalnom LAN-u ili korporativnoj mreži. Dok su se MAC adrese sastojale od 6 bajta (48 bita) i heksadecimalno se prikazivale, dotle se IP adrese sastoje od 4 bajta (32 bita) i predstavljaju se u vidu 4 decimalna broja sa tačkama između njih. Sve IP adrese se dele na tri glavne 69
klase adresa i to “A”, “B” i “C” klasu, i dve manje poznate “D” i “E” klasu. Svaka od ovih klasa koristi drugačiji deo IP adresnih bitova za identifikaciju mreže. Potreba da se mreže klasifikuju posledica je potrebe da se prave mreže različitih veličina. Dok neki mali LAN može da ima nekoliko ili nekoliko stotina računara, veće mreže mogu da imaju na hiljade pa i više umreženih računara. Sistem klasa IP adresa ostvaruje se pomoću različitog broja bitova u celokupnoj adresi za identifikaciju mrežnog i računarskog dela IP adrese. Uz to, prvih nekoliko bitova u binearnoj adresi koristi se za indikaciju klase kojoj pripada određena adresa. Ukupan broj bitova raspoloživih za adresiranje je uvek 32 bita. Budući da broj bitova koji se koriste za identifikaciju mreže varira u zavisnosti od klase, očigledno je da varira i preostali deo bitova koji se inače koristi za adresiranje računara u mreži. To znači da neke klase mogu da adresiraju veći broj mreža, a kao posledica ovoga je da onda one druge mreže mogu da identifikuju veći broj računara u svakoj mreži. Prva četri bita u IP adresi govore kojoj klasi pripada sama adresa i to: 1. Klasa “A” 0 x x x ( 0.0.0.0 127.255.255.255) 00 00 00 00 - 7F FF FF FF 2. Klasa “B” 1 0 x x (128.0.0.0 191.255.255.255) 80 00 00 00 - BF FF FF FF 3. Klasa “C” 1 1 0 x (192.0.0.0 223.255.255.255) C0 00 00 00 - DF FF FF FF 4. Klasa “D” 1 1 1 0 (224.0.0.0 239.255.255.255) E0 00 00 00 - EF FF FF FF 5. Klasa “E” 1 1 1 1 (240.0.0.0 255.255.255.255) F0 00 00 00 - FF FF FF FF ( x označava bilo koju vrednost i ne utiče na određivanje klase). Klasa A adresa Kao što je prikazano u gornjoj tabeli, svaka IP adresa koja ima nulu na prvoj poziciji pripada klasi A adresa. Za adresiranje mrežnog dela adrese u klasi A koristi se samo prvi bajt (prvih 8 bitova) i to je u sistemu IP adresa najmanji opseg koji se koristi. Preostala 3 bajta (24 bita) koristi se za formiranje adrese računara u mreži. Prema tome klasa A može da adresira najmanji broj mreža ali zato se u ovoj klasi može adresirati najveći broj računara. Kako je prvi bit rezervisan za adresu mreže (uvek je jednak 0), preostaje sedam bitova za adresiranje mreža kojima možemo da adresiramo 127 različitih mreža, ali zato imamo 24 bita za adresiranje računara što znači da imamo 16 777 216 (2 24) različitih adresa koje možemo dodeliti računarima. Klasa B adresa Da bi utvrdili da li je u pitanju klasa B IP adrese potrebno je pogledati prva dva bita IP adrese. Ako su ona 10 onda smo sigurni da ta adresa pripada klasi B. Kod klase B prva dva bajta se koriste za adresiranje mreže dok se preostala dva bajta koriste za adresiranje računara. Pa prema tome ovde imamo na raspolaganju 16 384 mogućih (214) mrežnih adresa i 65 536 ( 216) adresa koje možemo dodelti različitim računarima u mreži. Do različitog broja adresa mreža i računara dolazi zbog toga što su u mrežnoj adresi rezervisana prva dva bita za oznaku klase IP adrese pa je od tuda smanjen broj adresa za mreže. Klasa C adresa Opseg adresa klase C ima uvek prva tri bita postavljena na 110. U ovoj klasi sa prva tri bajta koriste za adresiranje mreža što isnosi 2 097 152 adresa (2 21), a preostali jedan bajt adresira 256 (0-255) različitih računara u mreži. Klasa D adresa Prve tri klase adresa predstavljaju one adrese koje se standardno koriste u IP adresiranju. Opseg klase D rezervisan je za grupno korišćenje slanja na više adresa (multicasting). Slanje na više adresa predstavlja postupak kada se paketi šalju na više računara odjednom. Ovde se ne koriste nikakvi posebni bajtovi za adresiranje mreža i računara već se ukupno može napraviti 268 435 456 (2 28) jedinstvenih adresa. Klasa E adresa Ukoliko u IP adresi vidimo da stoje 1 na prvih četiri mesta-bita onda smo sigurni da ta adresa pripada klasi E adresa. Adrese klase E su rezervisane za buduću upotrebu i obično se ne sreću na većini mreža koje su povezane na Internet. U razrešavanju problema oko dodele IP adresa moramo pomenuti kako se to u praksi radi. Ma koliko da je adresni prostor, koji dozvoljava dodelu IP adresa, veliki on je ipak konačan i da ne postoji jedna 70
tehnika poznata kao NAT (Network Address Transslation) on bi brzo bio dostignut. Prevođenje mrežnih adresa (NAT) može da se koristi sa usmerivačima, tako da možete da koristite samo adresni prostor svoje interne mreže, dok su usmerivaču koji predstavlja vezu prema Internetu dodeljuje jedna ili više stvarnih registrovanih adresa. Koristeći NAT taj usmerivač može da manipuliše IP adresama i portovima, odnosno da se ponaša kao proxy server za klijente u internoj mreži kada komuniciraju sa spoljašnjim svetom. U praksi su poznata nekoliko opsega koji su opet putem RFC dokumenta broj 1918 definisana za upotrebu u lokalnim Intranet okruženjima i to su: 10.0.0.0 do 10.255.255.255 172.16.0.0 do 172.31.255.255 192.168.0.0 do 192.168.255.255 Sve ove adrese nisu validne za Internet pa prema tome više privatnih mreža mogu da koriste ove ospege za definisanje svog Intranet okruženja. Postoji nekoliko izuzetaka koji se izdvajaju iz ukupnog broja adresa koje su moguče u klasama adresa. Na primer, sve adrese koje započinju sa adresom 127 u prvom bajtu nisu validne izvan lokalnog računara. Adresa 127.0.0.1 (koja spada u opseg adresa A klase) uobičajeno se naziva adresom povratne petlje (loopback) i koristi se za testiranje lokalnog TCP/IP steka da bi se utvrdilo da li su konfiguracija i funkcionisanje korektni. Ostali izuzetci obuhvataju vrednosti 0 i 255. Kada se 0 koristi u mrežnom delu adrese tada ona označava trenutnu mrežu. Broj 255 se koristi u adresi za navođenje difuziono upućene poruke. Uzimajući u obzir sve ove izuzetke onda dolazimo do stvarnog broja mreža i računara koje možemo da adresiramo u svakoj klasi i on izgleda ovako: Klasa A 126 mreža 16 777 214 računara Klasa B 16 384 mreža 65 534 računara Klasa C 2 097 152 mreže 254 računara. Ovde treba pomenuti još jednu tehniku koja se koristi da bi se povečao broj različitih mreža a to je tehnika deljenja jednog adfresnog prostora na manje jedinice poznate kao podmreže (subnets). Primenom maske podmreže moguće je “pozajmiti” bitove iz dela IP adrese za računare, za formiranje novih mreža. Maska podmreža je takođe 32-bitna binarna vrednost kao i IP adresa ali to nije adresa već niz bitova koji se koristi za identifikaciju dela ukupne IP adrese koji treba da se koristi za identifikaciju mreže i podmreže. Jednostavnom AND operacijom između maske adrese i IP adrese dolazimo do konačne adrese koja je validna na mreži. Prema tome u zavisnosti od klase adresa imamo i odgovarajuče maske. Tako klasi A odgovara maska 255.0.0.0, klasi B maska 255.255.0.0 i klasi C maska 255.255.255.0. Jednostavnim maskiranjem dela adrese koji ukazuje na adresu računara mi možemo proširiti broj adresa kojima adresiramo mrežu tj. u ovom slučaju podmežu. Tako na primer ako koristimo masku 255.255.255.128 mi možemo da adrese iz klase C podelimo na dve podmreže i to za prvu podmrežu od adresa 192.113.255.1 do 192.113.255.128 i za drugu podmrežu od 192.113.255.129 do 192.113.255.254. Slično ovome ako koristimo masku 255.255.255.192 mi možemo da izvršimo podelu adresnog prostora iz klase C na 4 podmreže. Novi razvoj internet protokola - IPv6 Sve ovo što smo do sada objašnjavali odnosi se na internet protokol verzije 4–IPv4. Sve veći razvoj Interneta kao i sve veća potreba za dodeljivanjem fiksnih IP brojeva pojedinim entitetima na mreži doveli bi do manjka IP adresa u skoroj budućnosti. Ljudi razmišljaju o ovom problemu već godinama. Internet Engineering Task Force (IETF) počeo je 1991. godine da razmatra problem promene postojećeg IP-ja i kreiranje nove generacije IP-ja, neformalno nazvane IPng (IP Next Generation - IP nove generacije). U pokušaju da se uključi kompjuterska zajednica, pozvani su razni profesionalci (istraživači, proizvođači, prodavci, programeri, itd) da daju svoje predloge. Oformijeni komitet nazvan IPng Directorate razmotrio je predloge i mnoge odbacio, jer su bili namenjeni specijalnim zahtevima, ili su bili isuviše kompleksni. Međutim, jedan predlog koji je uključivao dizajn pod nazivom Simple Internet Protocol - SIP bio je proširen tako da se iskoriste ideje opisane u drugim predlozirna. Rezultujući protokol je dobio naziv Simple Internet Protocol Plus (SIPP). 71
IETF se 1994. godine sastao u Torontu i, na osnovu preporuka IPng Directorate, izabrao je SIPP kao osnovu za sledeću generaciju Internet protokola, koja je formalno trebalo da bude poznata kao IPv6 (IP verzija 6). U poređenju sa IPv4 paketom najveća izmena je izvršena u proširenju broja bitova kojima se vrši adresiranje. Za razliku od IPv4 gde smo imali 32 bita za adresiranje sada nam je na raspolaganju 128 bita, četiri puta duže od IPv4 adresa. Teorijski je omogućeno 2 na 128 ili 10 na 40 različitih adresa. Jedan od problema sa eksponencijalnom notacijom je to što je često teško razumeti koliko je to veliko, nego zapisati broj. Da biste lakše razumeli koliko je veliko 2 na 128 objasnićemo sledećim primerom. Pokazano je da ako bi se sve adrese rasporedile ravnomerno po povrišni cele zemaljske kugle, postojale bi 1.024 adrese na svakom kvadratnom metru, što je više nego dovoljno za svaku osobu, glistu i insekta na planeti. Notacija 128-bitnih adresa se razlikuje od one koja se koristi za IPv4. Korišćenje tekuće notacije u kojoj se tačkama razdvajaju trocifreni brojevi dalo bi notaciju koja sadrži 16 trocifrenih brojeva razdvojenih tačkama. Naravno, ovo postaje pomalo nezgrapno. Umesto toga, tačke se menjaju dvotačkama i svakih 16 bitova u adresi predstavlja heksadecimalnu notaciju četvorocifrenog broja. Primer IPv6 adrese ima sledeći oblik 7477:0000:0000:0000:0000:OAFF: 1BDF:7FFF Svaka heksadecimalna cifra u ovoj reprezentaciji ima jedinstveni 4-bitni ekvivalent. Rezultat je i dalje nezgrapan, ali je bolji od alternative. Za adrese koje sadrže mnogo nula (a sa 2 na 128 adresa biće ih dosta) koristi se skraćena notacija. U suštini, nule se ne navode, već se na njihovo prisustvo ukazuje sa dve dvotačke (::). Stvarni broj nula koje nedostaju izražava se oduzimanjem broja heksadecimalnih cifara u notaciji od 32, broja heksadecimalnih cifara koje su potrebne za punu 128-bitnu reprezentaciju. Na primer, prethodna adresa bi bila zapisana kao 7477::OAFF: 1BDF:7FFF Pošto ova notacija sadrži 16 cifara, znamo da mora da nedostaje 16 nula. U slučajevima kada adresa počinje sa 0, notacija započinje dvotačkom. Drugim rećima, adresa 0000:0000:0000:0000:OAFF: 1BDF:000F:0077 može da se zapiše i kao OAFF: 1BDF:000F:0077 Da bi se adrese dalje pojednostavile, vodeće nule u okviru četvorocifrene grupe ne moraju da se navode. Ovo omogućava uprošćenu notaciju na sledeći način: ::AFF: 1BDF:F:77 Kao što IPv4 deli svoje adrese na različite klase u zavisnosti od vodećih bitova, to radi i IPv6. Trenutno postoje 22 različitih tipova adresa; svaki ima jedinstven bitski prefiks. Prefiksi mogu da sadrže od tri do 10 bitova. Na primer, adresa koja počinje sa osam nula odgovara IPv4 adresi. Osnovni problem u primeni ovog protokola je u tome što već preko milon računara komunicira putem IPv4. Ovako veliki broj onemogućava konvertovanje u Ipv6 preko noći. Da bi se potpuno prešlo na IPv6 biće potrebno dosta godina i za to vreme većina mrežnih entiteta (pre svega ruteri), moraće da podržavaju oba protokola. Za IPv6 to nije problem jer on podržava IPv4 ali je se problem javlja u obrnutom smeru jer IPv4 kao prvonastali protokol ne podržava nove protokole. TCP (Transsmision Control Protocol) TCP protokol predstavlja protokol za kontrolu prenosa podataka. On koristi IP adresu ali dodaje i svoje parametre i funkcionalnosti koje čine da TCP protokol pouzdanim protokolom orijentisanim prema uspostavljanju veze. Sve ono što IP protokol nije zahtevao i što ga je činilo nesigurnim protokolom, TCP protokol ispravlja i na taj način omogučava IP-u da napravi sesiju koju aplikacije mogu da koriste
72
za pouzdanu razmenu podataka. Osnovne karakteristike ovog protokola koje ga izdvajaju kao pouzdan protokol i koje ga svrstavaju u protokole koji se najčešće koriste su: obezbeđuje proveru ispravnosti prenošenih podataka, reguliše protok podataka da ne dođe do zagušenja, ubacuje brojeve za sekvence u svom zaglavlju kako bi IP datagrami mogli da se rekonstruišu u ispravnom stanju na prijemnom mestu. TCP prima podatke iz gornjih delova (slojeva) u steku protokola, dodaje svoje informacije zaglavlja, a zatim ih predaje IP sloju koji sada dodaje svoje informacije zaglavlja. Poruke koje se šalju TCP od aplikacija iz višihslojeva običnose nazivaju tok (stream) podataka. Budući da kolićina podataka može da varira i nije ograničena na neki skup brojeva bajtova, TCP preuzima ove poruke i, ako su suviše velike da bi se uklopile u paket, usitniće ih na manje segmente i svaki od njih poslati u posebnom paketu. TCP sloj na prijemnom kraju rekonstruiše te poruke pre slanja na gore, prema aplikaciji. Za proveru ispravnosti TCP koristi tri parametra i to: Polje u TCP zaglavlju TCP podataka Pseudo informacija u zaglavlju TCP predstavlja protokol koji je orijentisan na uspostavljanje veze tj. računari koji komuniciraju treba prvo da uspostave uslove koji će upravljati sesijom i uspostavljaju komunikaciju. TCP dopušta dvostruku komunikaciju odnosno to je dvosmerna ili puna dupleksna veza. Obe strane mogu istovremeno da primaju i da šalju podatke. Da bi se uspostavlia veza, svaka od strana mora da otvori svoju stranu veze. Na strani servera to se naziva pasivno otvorena veza (passive open). Aplikacija na serveru izvršava se kao proces na računaru, koji sluša zahteve za vezu koji stižu na odrđeni port. Pomoću IP adrese i broja porta, proces na serveru može na jedinstven način da identifikuje svakog klijenta koji upućuje zahtev za vezu. Kada klijent želi da uspostavi vezu sa serverom, prolazi kroz postupak poznat kao aktivno otvoren (active open). Server već sluša zahteve za vezu, ali klijent mora da inicira stvarni proces povezivanja slanjem zahteva na broj porta aplikacije servera koju želi da koristi. UDP ( User Datagram Protocol ) Predstavlja jednostavan protokol koji ne zahteva dodatno angažovanje kao TCP. Ukoliko aplikaciji nisu potrebne vrednosti koje obezbeđuje TCP veza, može da se koristi UDP. Kako UDP ne podešava sesiju i svi UDP datagrami predstavljaju nezavisne entitete na mreži, on može da se posmatra kao nepouzdan protokol i protokol bez uspostavljanja veze. Jedan od servisa koji koriste ovaj protokol je DNS (Domain Name Service). Ukoliko klijent ne primi natrag odziv na jednostavan DNS zahtev, on može ponovo da pokuša ili da jednostavno iskoristi neki drugi DNS server ako je konfigurisan da može to da uradi. U poređenju sa TCP zaglavljem UDP zaglavlje je vrlo prosto i ono se sastoji od sledeđih polja: Izvršni port – predstavlja 16-bitno polje koje se koristi za identifikaciju porta koji koristi aplikacija koja šalje podatke. Odredišni port – takođe je 16-bitno polje koje se koristi za identifikaciju portaq na kome se uručuju paketi na prijemnom kraju veze. Dužina – Ovo 16-bitno polje se koristi za čuvanje dužine čitavog IP datagrama, i uključuje delove i sa zaglavljem i sa podacima. Provera ispravnosti – 16-bitno polje koje se koristi da obezbedi da se sadržaj UDP datagrama ne naruši pri prenosu.
73
13 čas Klijent server arhitekture Kada razmatramo prelazak na klijent server model jednog računarskog sistema, bilo da je to nadogradnja već postojećeg ili uvođenje potpuno novog računarskog sistema, vrlo je važno odlučiti se za tip arhitekture jednog takvog klijent server sistema. Glavni zadaci jedne aplikacije za krajnjeg korisnika – klijenta mogu se predstaviti kroz sledeće tri komponente a to su: podaci-informacije, obrada tih podataka i njihovo adekvatno predstavljanje. Način na koji su ove komponente obrađene, podela na delove aplikacije koji obrađuju ove komponente, kao i mesto obrade u mrežnom sistemu, tačno definišu i određuju tip klijent serverske arihitekture koja je primenjena za rešavanje datog problema. Takođe izbor odgovarajuće arhitekture zavisi i od: broja korisnika i računara na mreži, vrsta razvojnih okruženja i programskih alata, modela i obima baze podataka kao i složenosti programskih procedura. Postoji više načina kako se ta podela vrši a mi čemo se najviše zadržati na dve arhitekture koje su danas najviše u upotrebi. To su dvoslojna (two-tier) i troslojna (three-tier) arhitektura. Već smo ranije napomenuli da se kod klasičnih sistemima za obradu podataka po klijent/server modelu, mogu uočiti tri osnovne klase komponenti i to: 1. server – ima zadatak da optimalno upravljanja zajedničkim resursima što su najčešće podaci, da upravlja bazom podataka kojoj pristupa više korisnika, da kontroliše pristup i bezbednost podataka i da omogući centralizovano obezbeđenje integriteta podataka za sve aplikacije 2. klijent - vrši upravljanje korisničkim interfejsom i izvršava deo logike aplikacije. 3. mreža – ili komunikacioni posrednik koji ima zadatak da omogući prenos podataka između klijenta i servera.
Dvoslojna arhitektura Mada postoje više načina na koji se ova arihitektura može realizovati mi ćemo se zadržati na najprostijoj implementacija jer ona najjasnije pokazije osobine ovakve realizacije. Za početak razvoja jedne ovakve arhitekture smatra se 1980 god. i ona je predstavljala prirodni nastavak dotadašnje fileserver arhitekture. Osnovne prednosti koje su je izdvajale od klasične file-server aritekture bile su: Upotrebljivost (Usability)-korišćenjem različitih formi za korisnički interfejs moguće je jedne iste podatke prikazati na više različitih načina. Skalabilnost (Scalability)-za razliku od fajl-server sistema gde su istovremeno mogli da rade desetak korisnika a da se performanse sistema drastično ne naruše, ovde je omogućeno da taj broj bude oko 100 istovremenih korisnika. Fleksibilnost (Flexibility)-mogućnost da podaci budu deljivi za veliki broj korisnika koji rade na heterogenim raačunarskim sistemima. Osnovne komponente koja svaka dvoslojna klijent server arhitektura mora da ima su: 1. Korisnički interfejs (User System Interface) - način predstavljanja podataka, sesije, unos teksta, dijaloški prozori, prikaz na ekranu. 2. Upravljanje procesima (Processing Management)– obrada podataka, generisanje, izvođenje i nadgledanje procesa i neophodnih resursa 3. Upravljanje podacima (DataBase Management) - servisi vezani za čuvanje i deljenje podataka i datoteka
74
Slika broj 13.1 Kao što je prikazano na slici broj 13.1 sve tri komponente koje su bitne za jednu aplikaciju (podaci, njihova obrada i predstavljanje) podeljene su između dva softverska entiteta (tiers): klijent aplikacija i server baze podataka. Robustan jezik za razvoj klijentske aplikacije kao i prilagodljivi mehanizam za prenos klijentskih upita ka serveru su dve najvažnije stvari kod dvoslojne klijent server arhitekture. Predstavljanje podataka se isključivo vrši na klijentskoj strani, njihova obrada se deli između klijenta i servera, dok se podacima pristupa i oni se čuvaju na serveru. Najveću odgovornost za funkcionalnost jedne aplikacije na sebe preuzima klijent jer se na njemu odvija najveći deo te aplikacije. Od njega i polaze svi zahtevi za nekim podacima i kod njega se završavaju svi podaci koji se sada prikazuju u različitim formama prikaza. Serverska strana je odgovorna za integritet i ispravnost tih podataka, prihvatanje zahteva putem redova (query capabilities) i pravovremeno rešavanje i slanje odgovora na te zahteve. Jedan od najraširenijih jezika koji je danas postao gotovo standard u slanju zahteva za nekim podacima je SQL-jezik. Slanje SQL zahteva od strane klijenta ka serveru zahteva čvrstu povezanost između dva sloja koji čine dvoslojnu klijent server arhitekturu. Da bi poslao jedan SQL zahtev klijent mora dobro da poznaje sintaksu serverske komponente ili pak da se putem odgovarajućeg API-a taj zahtev prevede da bi postao razumljiv serverskoj strani. Takođe klijent mora da zna lokaciju servera, kako su podaci na njemu organizovani, kao i nazive tih podataka. Upućeni zahtevi mogu da iskoriste prednosti logike koja je upamćena i koja se izvršava na serveru a koja centralizuje globalne zadatke koji se izvršavaju na serveru kao što su: validacija podataka, njihov integritet kao i sigurnost tih podataka. Traženi podaci se vraćaju klijentu i sada je na njemu kako će ih on prikazati, da li će izvršiti novu selekciju ili izvršiti neke nove operacije na njima. Jedna od najvećih prednosti dvoslojne arhitekture je brzina razvoja nove aplikacije. Zahvaljujući velikom razvoju PC baziranih rutina omogućeno je klijentu da veoma lako razvije novu aplikaciju koja će koristiti veliki broj već razvijenih rutina za pozivanje podataka i njihovo predstavljanje bez obzira na način kako su ti podaci organizovani na serveru. Jedna od osnovnih karakteristika klijent/server sistema je distribuirana obrada podataka koja podrazumeva da se logika aplikacije podeli između klijenta i servera, kako bi se obezbedilo optimalno iskorišćenje raspoloživih resursa. Na primeru dvoslojne arhitekture, to bi značilo da se prezentacija podataka kao i provera ulaznih podataka vršu u okviru klijent-aplikacije, dok se rukovanje podacima, u smislu njihovog fizičkog smeštaja i kontrole pristupa, vrši na serveru. Kod dvoslojne arhitekture klijent pokreće aplikaciju koja preko mreže pristupa serveru baze podataka. Zatim pokreće aplikaciju koja izvršava logiku i prikazuje tražene rezultate na ekranu. Neke od glavnih prednosti ovakvog modela obrade podataka su: centralizovano upravljanje resursima sistema i jednostavnije obezbeđivanje sigurnosti podataka, a osnovni problem predstavlja nedostatak skalabilnosti. Pod skalabilnošću se podrazumeva osobina sistema da omogući efikasan rad velikom broju korisnika, i da dalje povećavanje broja korisnika ne izaziva drastičan pad performansi sistema. Dvoslojna arhitektura je arhitektura koja je pogodna za sisteme sa malim brojem korisnika jer se ona dobro ponaša za manje sredine koje imaju do 100 klijenata. Svaka konekcija novog korisnika na mrežu 75
zahteva izvesne sistemske resurse. Takođe treba napomenuti da kod dvoslojne arhitekture kada se korisniku šalje ogromna količina podataka dolazi do zagušenja što utiče na usporavanje protoka informacija kroz mrežu a samim tim usporava rad drugih korisnika. Ova arhitektura se koristi za homogene sredine gde imamo tačno definisana pravila koja se ne menjaju tako često. Ona je mnogo manje pogodna za heterogene sredine gde se pravila ponašanja između njih vrlo često menjaju. Troslojna arhitektura Troslojna arhitektura kako i sam naziv kaže je takva arhitektura kod koje je potrebno uvesti još jedan sloj tzv. srednji sloj u kome se nalazi aplikativni server. Aplikativni server komunicira sa database serverom, podaci dobijeni sa database servera se preko aplikativnog servera prosleđuju klijentu. Ovde imamo “tankog” klijenta. Poslovna logika se izvršava na aplikativnom serveru. Aplikacija na aplikatinom serveru je višenitna (multithread) i omogućava istovremeni pristup više klijenata. Aplikacioni server kreira konekciju sa bazom i rezultate vraća klijentu. Radi na principu Connection Pooling–a. Zahtevi klijenata se stavljaju u bazen tzv. Pool. Kada konekcija bude slobodna dodeljuje se sledećem korisniku u zavisnosti od prioriteta korisnika koji čeka u Pool-u. Pooling se može realizovati primenom IIS-a (Internet Information Server) i COM+ tehnologije. Ova arhitektura namenjena je da prevaziđe neke probleme i ograničenja dvoslojne arhitekture time što je potpuno odvojila podatke, njihovu obradu i prezentaciju u posebne softverske entitete-slojeve (tiers). Isti tipovi rutina za predstavljanje podataka koje su korišćene kod dvoslojne arhitekture, mogu se koristiti i ovde ali se sada one isključivo koriste za predstavljanje podataka. Kada se zahteva neka obrada tih podataka ili pristup novim podacima, upućuje se novi poziv srednjem sloju. Taj sloj sada izvršava obradu na podacima ili generiše novi zahtev, sada kao klijent, prema serveru ako se traže novi podaci. Taj srednji sloj se obično realizuje u visoko portabilnim programskim jezicima kao što je C jezik. Taj sloj mora da omogući pristup velikom broju klijenata pa njegova realizacija zahteva servere koji podržavaju više-nitno (multi-threaded) procesiranje.
Kao što je na slici brj 2. prikazano troslojna arhitektura se sastoji iz tri sloja ito : korisnićki sloj(User interface), srednji sloj (Comutational function ili Middle tier server) i sloj podataka (Data access).
76
Slika broj 2. Početak razvoja ovakvih arhitektura datira od 1990 godine i za razvoj ovakve arhitekture moguće je primeniti razlićite tehnologije. Međutim ono što je zajedničko za ovakvu arhitekturu je pozivni mehanizam koji je jedinstven za svaku vezu klijent server a to je RPC tj. udaljeni poziv procedure (remote procedure call). Kako većina dvoslojne arhitekture primenjuje SQL mehanizam poziva a taj mehanizam nije zatupljen kod troslojnih arhitektura već je to standardni RPC poziv, potrebno je razmotriti malo više ove pozive. Standardni RPC poziv ima mnogo veću fleksibilnost u odnosu na SQL poziv. To proizilazi od toga što taj poziv jednostavno može da sadrži parametre upita u okviru kojih će specificirati strukturu podataka u kojoj želi da prihvati tražene podatke. To znači da korisnički sloj ne mora da zna SQL jezik jer on u RPC pozivu diktira u kom obliku želi da dobije povratne informacije. Sada ukoliko dođe do promene podataka u sloju podataka tada nije potrebno da se aplikacija na nivou korisnika menja već se to radi samo u srednjem sloju koji je zadužen za prihvatanje podataka i njihovu isporuku korisničkom sloju. To znači da sada ni sloj podataka ne mora da čuva podatke koji su SQL orjentisani. Oni sada mogu da budu organizovani hijerahijski, relaciono i u vidu objekata. Samim tim to dodaje veliku fleksibilnost da se omogući pristup podacima koji će biti različito organizovani a i omogućava prodor i uvođenje novih tehnologija za baze podataka.
Slika broj 13.2 sss
77
Pored toga podeljenost na tri zasebne celine omogućava paralelan razvoj softverskih entiteta koji sada mogu da budu potpuno nezavisno razvijani i to na potpuno razlićitim kako hrdverskim tako i softverskim platformama. Baš zbog ove osobine ova arhitektura je primenljiva za razvoj aplikacija koje se zasnivaju na distribuiranim bazama podataka. Tri ključne stvari koje su nam ovom arhitekturom omogučene su zaključavanje, koegzistentnost i replikacija. I ovde se veza dinamički menja u zavisnosti od korisničkih zahteva za podacima i servisima. Srednji sloj omogućuje praćenje i upravljanje procesima, njihovo aktiviranje, kontrolu rada, aktiviranjue i uspavljivanje pojedinih procesa i obnovu procesa. Klijent/server sistemi sa troslojnom arhitekturom (three-tier architecture) predstavljaju sisteme sa tri, u velikoj meri nezavisna, podsistema. U pitanju su sledeći podsistemi: 1. podsistem za interakciju sa korisnikom (implementira funkcije korisničkog interfejsa); 2. podsistem za implementaciju osnovnih funkcija sistema (implementira tzv. “poslovnu logiku”); 3. podsistem za rukovanje podacima, pri čemu se pre svega misli na fizički smeštaj podataka (ovo je, zapravo, sistem za upravljanje bazama podataka). Za razliku od dvoslojnog modela obrade podataka, gde je logika aplikacije bila podeljena između klijenta i servera, u troslojnom modelu ona se nalazi koncentrisana u tzv. aplikacionom serveru – čija je namena da izvršava programski kod koji implementira logiku aplikacije. Klijent aplikacija je namenjena samo za implementaciju korisničkog interfejsa, a funkcija sistema za upravljanje bazom podataka je isključivo fizičko rukovanje podacima (u prethodnom slučaju je, pored toga, izvršavao i deo logike aplikacije). Troslojni koncept je doveo do podele programskog koda na segmente koji implementiraju tačno određene funkcije sistema. Tako organizovan sistem je jednostavniji za održavanje, jer je moguće nezavisno razvijati korisnički interfejs i logiku aplikacije. Za potrebe fizičkog rukovanja podacima najčešće se koristi neki od komercijalno dostupnih servera za tu namenu. Troslojne arhitekture sistema podrazumevaju oslanjanje na standarde u odgovarajućom oblastima, zasnovane na Internet tehnologijama. Oslanjanje na standarde omogućava integraciju sistema heterogenih u pogledu korišćene hardverske i softverske opreme. Prednosti troslojne arhitekture 1. Važna karakteristika troslojnih sistema je skalabilnost. a) povećavanje broja klijenata je jednostavno b) povećavanje propusne moći i brzine odziva servera srednjeg sloja je moguće kroz dodavanje novih serverskih mašina uz korišćenje postojećih 2. Sistem sa više servera karakteriše i povećana pouzdanost i fleksibilnost 3. Logika aplikacije se može menjati i u toku rada sistema 4. Moguće je efikasno vršiti balansiranje opterećenja serverskog podsistemapodsistema za Ova arhitektura se koristi u heterogenim sredinama koje zahtevaju povezivanje heterogenih baza podataka. Primenjije se za povezivanje velikog broja klijenata gde je potrebno povezati više od 1000 klijenata. Arhitektura višeslojnih sistema Daljim proširivanjem koncepta troslojnih sistema dolazi se do pojma višeslojnih sistema (multitier architecture), gde se vrši dalja podela na komponente u okviru srednjeg sloja sa ciljem još većeg povećanja skalabilnosti, odnosno performansi. Srednji sloj je podeljen na dva sloja: jedan je namenjen za opsluživanje Web klijenata, a drugi sadrži komponente koje implementiraju poslovnu logiku sistema. Nekada se srednji sloj deli na dva ili više sloja u zavisnosti od aplikacije. Ovakva arhitektura poznata je kao višeslojna (multi tier) arhitektura. To je slučaj kod nekih Internet aplikacija. One obično imaju tankog klijenta pisanog u HTML jeziku a aplikacioni serveri su pisani u C++ ili JAVA jeziku. Postoji veliki jaz između ove dve tehnologije koji predstavlja neprolaznu prepreku da bi se ovakve dve aplikacije međusobno direktno spojile. Zaro postoji međusloj (intermediate layer), obično WEB server , koji je implementiran u nekom script jeziku. Taj sloj prihvata zahteve od klijenata i generiše HTML dokument koristeći servise koje pozajmljuje od poslovnog (business) sloja. Java tehnologije za izgradnju višeslojnih sistema 78
Interakciju sa korisnikom u ovakvom sistemu obavljaju klijenti koji imaju standardan Web interfejs. U pitanju su Web čitači koji prikazuju HTML stranice. Komunikacija između Web čitača i Web servera se odvija putem standardnog HTTP protokola, uz dodatak cookie podataka kojima se prati korisnička sesija dok se on kreće po Web sajtu. Stranice koje prikazuju klijenti su najčešće generisane dinamički, tj. po prijemu zahteva za nekom stranicom. Dinamičko generisanje Web sadržaja na osnovu podataka iz ostatka sistema vrše servleti ili se za tu namenu koriste JSP (Java Server Pages) stranice. Za potrebe manipulacije podacima u sistemu servleti ili JSP stranice pristupaju objektima u okviru aplikacionih servera koji su dostupni kao CORBA (Common Object Request Broker Architecture) ili EJB (Enterprise JavaBeans) komponente. Protokol za komunikaciju između ova dva sloja je JRMP (Java Remote Method Protocol), protokol za komunikaciju između distribuiranih Java objekata, ili IIOP (Internet Inter-ORB Protocol) ekvivalentan protokol vezan za CORBA tehnologiju. CORBA/EJB komponente za potrebe skladištenja podataka u bazi podataka pristupaju serveru za upravljanje bazama podataka preko standardnog JDBC (Java Database Connectivity) interfejsa.
korisnikom i po
79
14. čas
Distribuirani sistemi
Distribuirani sistemi (DS) predstavljaju jedan vid mrežnih sistema koji omogućuju računarima izvođenje obrade podataka korišćenjem svih raspoloživih mrežnih resursa u toj mreži. Za razliku od mrežnih sistema koji omogućuju kontrolisani pristup drugim računarima i prenos podataka između računara, DS omogućuju istovremeno izvođenje obrade na više računara. Upotrebom DS-a klijent može pristupati svim mrežnim resursima kao resursima lokalnog računara. Drugim rečima, DS predstavlja skup nezavisnih računara koji su klijentu predstavljeni kao jedan koherentan sistem.
Slika 1. Organizacija distribuiranog sistema Na slici br.1. prikazano je mesto jednog distribuiranog sistema u mrežnoj strukturi računara kao međusloj (middleware). Navedimo sada koje su prednosti koje nam jedan DS-a pruža u odnosu na klasičan mrežni sistem: 1. Ubrzanje obrade podataka – obrada se izvodi na više računara istovremeno pa je ukupno vreme obrade kraće u odnosu na obradu na jednom računaru. 2. Veća pouzdanost – u slučaju nekorektne obrade izvodi se ponavljanje obrade na računaru na kome je greška nastala, dok se obrade izvedene na ostalim računarima ne ponavljaju; u slučaju izvođenja svih obrade na jednom računaru nužno je ponavljanje svih obrada. 3. Ravnomerno opterećenje računarske mreže – ako je neki od računara u mreži jako opterećen nekom obradom, moguće je izvršiti njegovo rasterećenje prenosom obrade na manje opterećene računare. 4. Smanjeni zahtjevi za hardverom – dovoljno je imati nekoliko računara sa nadprosečno kvalitetnim hardverskim osobinama, a zatim se sve hardverski zahtevnije obrade preusmeravaju na te računare. 5. Smanjene zahteva za softverom – skupi softverski proizvodi instaliraju se na nekoliko računara, a zatim se sve potrebne obrade preusmeravaju na jedan od tih računara; na taj način se smanjuje potreban broj licenci i cena upotrebe softverskih paketa. Ciljevi razvoja DS-a: 1. Povezivanje korisnika i resursa - Povezivanje korisnika i resursa omogućuje korisniku pristup resursima svih računara u mreži i njihova upotreba kao lokalnih resursa računara na koje je korisnik spojen. DS-i koji se mogu korisniku i aplikacijama prikazati u formi jednog sistema su transparentni. 2. Transparentnost - Transparentnost u distribuiranim sistemima može se prikazati u sledećim oblicima: 1. Transparentnost pristupa (access) – prikrivanje razlike u prikazu podataka (različite hardverske osnove računara koriste različite formate u prikazu podataka) i načina korišćenja resursa. 2. Transparentnost lokacije (location) - korisnik nije upoznat sa fizičkom lokacijom resursa koji sadrži podatke koje korisnik upotrebljava. 3. Transparentnost promene mesta (migration) – promena fizičke lokacije resursa ne utiče na način pristupa resursima. 4. Transparentnost relokacije (realocation) – omogućava promenu lokacije resursa u trenutku kada se resurs koristi. 5. Transparentnost replikacije (replication) – mogućnost postojanja više kopija originalnih podataka a da korisnik ne mora biti upoznat sa time. 80
6. Transparentnost konkurentnosti (concurrency) – mogućnost korišćenja skupa podataka za više korisnika istovremeno pri čemu to korisnici ne vide i ne znaju za to. 7. Transparentnost pogreške (failure) – korisnici ne opažaju nefunkcionalnost određenog resursa kao ni postupak oporavka sistema u slučaju kvara. 8. Transparentnost postojanosti (persistance) – korisnik nije upoznat sa trenutnom lokacijom podataka koji koristi (npr. podaci na kojima se izvodi manipulacija u bazi podataka kopiraju se u glavnu memoriju, obrađuju i rezultat se smešta u bazu podataka dok korisnik taj postupak vidi kao direktnu operaciju u bazi podataka). 3. Otvorenost - Otvoreni DS omogućuje izvođenje usluga prema prihvaćenim standardima. Standardi za DS-e sadržani su u interfejsu (interface) koji se opisuje sa jezikom za definisanje interfejsa (Interface Definition Languge – IDL). IDL sadrži imena funkcija sa popisom parametara, rezultata izvođenja, mogućih razlika itd. Popis svih funkcija čini specifikaciju. Osobine dobre specifikacije su kompletnost i neutralnost. Kompletnost znači da je sve što je nužno potrebno za implementaciju već je uključeno u specifikaciju. Neutralnost znači da specifikacija ne propisuje način implementacije funkcija. 4. Merljivost (scalability) – Skalabilnost ili merljivost je osobina koje se primenjuje na tri načina: 1. Prema veličini – mogućnost dodavanja novih korisnika i resursa. 2. Prema lokaciji – odvojenost korisnika i resursa podataka. 3. Prema administriranju – mera jednostavnosti upravljanja sistemom iako se sistem sastoji od mnogo neovisnih administrativnih organizacija. Ukoliko želimo povećati kvalitet sistema nailazimo na niz ograničenja. Pri porastu broja korisnika ograničenja se mogu prikazati tabelom 1. Koncept Centralizirani server Centralizirani podaci Centralizirani algoritmi
Primer Jedan server za sve korisnike Jedan on-line telefonski imenik Izvođenje usmeravanja zasnovanog na kompletnim informacijama Tabela 1. Ograničenja povećanju broja korisnika
Primjena centraliziranog servera za sve korisnike uslovljava veliki stepen opterećenja servera, ali u nekim situacijama nije opravdana upotreba više servera iste namjene (jedan od razloga je sigurnost). Pristup centraliziranim podacima je problematičan ako je u pitanju velika količina podataka jer dolazi do velikog opterećenja servera na kome su podaci smešteni. Ukoliko se koristi više računara mora se osigurati jednakost podataka na svim serverima. Primena centraliziranih algoritama nije dobro rješenje jer se komunikacija izvodi slanjem i primanjem velikog broja poruka pa je poželjno koristiti različite mrežne linije u cilju ubrzanja izvođenja algoritma. Za to je potrebno imati informacije o raspoloživim putanjama i odabrati najpovoljniju putanju za prenos poruka. Tehnike za realizaciju scalability-a su: 1. Asinhrona komunikacija – nakon slanja poruke aplikacija pokreće druge aktivnosti, odnosno ne čeka na prijem odgovora od servera, a kada odgovor stigne on se prekidom dojavljuje aplikaciji te poseban proces (handler) izvodi obradu pristiglog odgovora. U nekim slučajevima je bolje većinu obrade izvesti na klijent strani kako bi se rasteretio server (slika 2. prikazuje moguću primenu obrade podataka formu za unos podataka na klijent strani – (b)) 2. Distribucija - znači slanje određene komponente podeljene na manje dijelove i njihova distribucija putem mreže kako bi se na odredištu svi dijelovi ponovo spojili u celinu. Primer je rad DNS servera (slika 3.) gdje se primenom zona izvodi usluga dodele imena (naming service) primjenom više decentraliziranih servera. 3. Caching – to je specijalna forma kopije (replike) podataka, a njena upotreba definisana je potrebama klijenta i servera koji ima originalnu verziju podataka.
81
Slika 2. Primer obrade na klijent strani
Slika 3. Primena zona za rad DNS servera. 1.1. Hardware Distribuirani sistemi mogu se koristiti za različite vrste računara spojenih u računarsku mrežu. Različitosti računara uslovljavaju nivo složenosti DS-a. Razlikujemo: 1. Multiprocesorske računarske sisteme 2. Multiračunarske računarske sisteme. Multiprocesorski sistemi imaju jedan memorijski adresni prostor koji koristi više procesora, dok kod multiračunarskih sistema svaki procesor koristi svoj zasebni adresni prostor (slika 4.). Arhitektura sistema može se zasnivati na magistrali (bus) ili na prekidačima (switch). Multiračunarski sistemi mogu biti homogeni i heterogeni. Homogeni sistemi imaju skup računara istih karakteristika jer koriste 82
iste procesore (struktura procesora je identična) i imaju jednu mrežnu tehnologiju. Heterogeni sistemi sastoje se od velikog broja različitih računara koji su spojeni na različite mreže. Multiprocesori Svi procesori koriste jedan adresni prostor. Ukoliko se promena vrednosti memorijske lokacije od jednog procesora može u 1 μs prikazati na drugom procesoru kažemo da imamo koherentan sistem. Primena ovog sistema dovodi do opterećenja magistrale i smanjenja performansi sistema. Zato se koristi cache memorija. Svaki proces ima malu brzu cache memoriju za smeštanje vrednosti koje trenutno obrađuje (slika 5.). Cache memorijom se rasterećuje magistrala, ali se pojavljuje problem ažuriranja vrednosti cache memorije ukoliko dva procesora obrađuju vrednost na istoj memorijskoj lokaciji.
Slika 4. Razlika multiprocesorskih i multiračunarskih sistema
Slika 5. Primjena cache memorije Primena velikog broja procesora uslovljava će podelu memorije u module kako bi se poboljšale osobine sistema. Pri radu sa memorijom svaki procesor može pristupati memorijskim modulima korišćenjem prekidača. Prekidači mogu biti crossbar i omega. Crossbar prekidači omogućuju direktno spajanje svakog procesora sa svakim memorijskim modulom, pružaju veliku brzinu spajanja ali uslovljavaju velik broj prekidača. Manji broj prekidača postiže se upotrebom omega prekidača gde se njihovom upotrebom bira putanja pristupa memorijskim modulima (slika 6.). Homogeni multiračunarski sistemi Kako kod ovih sistema svi računari imaju istu strukturu njihova upotreba u DS-u je znatno jednostavnija. Ostaje jedino problem načina povezivanja i komunikacije računara. Pri povezivanju računara moguća je upotreba strukture rešetke (grid) ili hiperkocke (hypercube). Na slici broj 7 prikazana je šema povezivanja računara kod ovih struktura. 83
Slika 6. Upotreba crossbar i omega prekidača
Slika 7. Struktura a) rešetke b) hiperkocke Hetrogeni računarski sistemi Sastoje se od većeg broja različitih računara spojenih na mrežu putem različitih mrežnih struktura. Primjenom DS-a generiše se sloj (middleware) koji je nezavisan od hardvera računara koji su spojeni na mrežu i komunikacija se izvodi primenom tog sloja. Na taj način se izbjegavaju problemi koji nastaju zbog različitosti računara. 1.2. SOFTVER Pri analizi softvera razlikujemo mrežne računare koji koriste operativni sistem koji ima kontrolu nad svim resursima mreže (tightly-coupled system) i operativni sistem koji kontroliše resurse lokalnog računara (loosely-coupled system). Za prvu grupu sistema koristi se distribuirani operativni sistem, a za drugu mrežni operativni sistemi. Tabela 2 prikazuje razlike izmenu ovih operativnih sistema. Sistem
Opis
Ciljevi
DOS
Tightly-couped sistemi; primena za višeprocesorske i homogene sisteme Loosely-couped sistemi; primena za heterogene sisteme dodatni sloj na NOS za implementaciju usluga opšte namene Tabela 2. Razlika izmenu OS-a
prikrivaju način upotrebe resursa
NOS Middleware
pružaju lokalne usluge za udaljene klijente osigurava transparentnost
84
DISTRIBUIRANI SISTEMI – DS Razlikujemo multiprocesorske DS i multiračunarske DS. Analiza primjene mikrokernela u dizajnu OS jednog računa zasnovanog na klijent-server strukturi (slika 8.) omogućiti će bolju razumljivost rada DS-a.
Slika 8. Primjena mikrokernela Multiprocesorski DS omogućuju povećanje performansi sistema upotrebom više CPU-a. Aplikacije koje pokrećemo ne uočavaju upotrebu više CPU pri njihovom izvođenju. Komunikacija u višeprocesorskom sistemu ostvaruje se manipulacijom podataka između deljenih memorijskih lokacija za više procesora, a jedini uslov koji mora biti zadovoljen je onemogućavanje istovremenog pristupa jednoj memorijskoj lokaciji dva ili više CPU istovremeno. To je omogućeno primenom semafora, monitora i uslovnih promenljivih. Multiračunarski DS omogućuju rad potpuno različitih računarskih sistema, pa je i njihova kompleksnost znatno veća u odnosu na multiprocesorske DS-e. DS za multiračunarske sisteme se zasniva na slanju poruka (slika 9.).
Slika 9. Opšta struktura multiračunarskih operativnih sistema Za prijenos poruka bitna je usklađenost pošiljaoca i primaoca pri slanju poruka, a pri tome je korisna upotreba buffera. Distribuirani sistemi sa dijeljenom memorijom zasnivaju svoj rad na dijeljenju globalnog memorijskog prostora računarske mreže. Adresni prostor je podeljen na stranice (veličine 4 KB ili 8 KB). Princip je da svaki računar koristi stranice u svojoj memoriji, a kada je potrebno izvoditi stranicu koja nije u lokalnoj memoriji generiše se zahtjev za učitavanjem tražene stranice. Princip je sličan klasičnom straničenju ali se za virtualnu memoriju ne koristi sekundarna memorija (obično hard disk), nego RAM memorija drugih računara u mreži. Slika 10. prikazuje princip rada deljene memorije. Pri radu sa dijeljenjem memorije javljaju se problemi uzrokovani obradom podataka unutar jedne stranice koja se izvodi na različitim procesorima. U tom slučaju promena promenljive u jednoj stranici nije vidljiva u drugoj stranici i može doći do greške (false sharing) što prikazuje slika 11. 85
Slika 10. Deljenje memorije a) početno stanje b) CPU 1 referencira stranicu 10 c) stanje nakon upotrebe replike stranice 10
Slika 11. Primer greške pri obradi promenljivih u stranici koja se izvodi na dva procesora. Istovremene promene nezavisnih promenljivih rezultirali bi gubitkom promena za jedan od procesa. Mrežni operativni sistemi se prilagođavaju operativnom sistemu svakog računara i ne stvaraju sliku jedinstvenog sistema kao kod DS-a. Mrežni operativni sistemi svaki računar vide posebno i pružaju mrežne servise operativnom sistemu na svakom mrežnom računaru. Slika 12 prikazuje ulogu mrežnih operativnih sistema u radu distribuiranih aplikacija.
86
Slika 12. Opšta struktura mrežnih operativnih sistema Komunikacija u mrežnim operativnim sistemima usmerena je na prenos poruka između klijent računara i računara namenjenih pružanju usluga drugim računarima (npr. Data server). Slika 13. prikazuje komunikaciju klijent i server računara u mrežnim operativnim sistemima.
Slika 12. Komunikacija klijent-server Middleware je dodatni sloj softvera koji se pozicionira između distribuiranih aplikacija i mrežnih operativnih sistema. Middleware je namenjen usklađivanju različitosti između mrežnih operativnih sistema. Slika 13. prikazuje opštu strukturu middleware sistema. Middleware se primenjuje u distribuiranom datotečnom sistemu, zatim pri izvedbi poziva na udaljenom računaru (Remote Procedure Call – RPC) ili za rad distribuiranih objekata. Usluge middleware-a su: 1. Komunikacijske usluge – maskiranje prenosa podataka niskog nivoa. 2. Imenovanje – omogućavanje pristupa i deljenje resursa. 3. Postojanost podataka. 4. Distribuirane transakcije – izvođenje više zasebnih operacije koje se moraju kompletno izvesti da bi se završila distribuirana transakcija. 5. Sigurnost.
Slika 13. Opšta struktura midleware-a 87
Tabela 3. prikazuje uporedni prikaz multiprocesorski, multiračunarskih, mrežnih i middleware zasnovanih distribuiranih sistema prema stepenu transparentnosti, različitosti OS za računare u mreži, broju kopija OS, komunikacijskoj osnovi, upravljanju resursima, proširivosti i otvorenosti..
Tabela 3. Uporedni prikaz distribuiranih sistema
2. KOMUNIKACIJA Komunikacije su ključni element DS-a. Osnovna razlika distribuiranih sistema i lokalnog sistema je komunikacija među procesima. Zasniva se na primjeni poruka niskog nivoa (bliskom hardveru računara) korišćenjem postojeće mrežne strukture. Komunikacija dva računara izvodi se primenom strukture slojeva. Svaki sloj izvodi set aktivnosti i čini osnovu za primenu višeg sloja. Niži slojevi usmereni su prema hardveru, a viši prema aplikacijama. Primenjujemo sledeće modele komuniciranja: 1. Poziv procedure na udaljenom računaru (Remote Procedure Call – RPC) 2. Poziv metode na udaljenom računaru (Remote Method Invocation – RMI) 3. Međusloj usmeren prenosu poruka (Message-Oriented Middleware – MOM) 4. Primena toka (Stream).
2.1. Protokoli slojeva za komunikaciju Najvažniju, ključnu ulogu u komunikaciji igraju protokoli. Prema modelu realizacije njih možemo podeliti na protokole zasnovane na slojevima (layers) (OSI model i ATM) i klijent-server model protokola.
Slika 19. Slojevi OSI-modela
88
OSI model Pri komunikaciji dva računara koristi se više slojeva za prenos podataka.Slojevi se mogu razli čito definisati u skladu sa njihovim funkcionalnostima. Opšte prihvaćeni predlog strukture slojeva predložen je od International Standard Organization (ISO) pa je i predloženi model strukture slojeva nazvan OSI model. OSI model omogućuje komunikaciju otvorenih sistema (sastavi koji koriste propisane standarde – pravila, formate, sadržaj i značenje poruka koje se šalju i primaju). Pravila za otvorene sisteme su formalizirana u protokolima. Protokoli mogu biti connection-oriented (potrebna je uspostava veze pre slanja i primanja podataka) i connectionless (veza ne mora biti uspostavljena da bi se poruke mogle slati i primati – upotreba mailbox-a). Slika 19. prikazuje slojeve u OSI modelu. Koristi se 7 slojeva. Kada proces jednog računara šalje poruku drugom računaru, sloj aplikacije generiše poruku i prosleđuje sloju prezentacije, koji poruku prosleđuje nižem nivou. Pri tom svaki sloj dodaje header na početak poruke. Izgled poruke pre prenosa mrežom prikazuje slika 20. Primljena poruka se pomoću headera poruka može preneti do procesa kojem je namijenjena.
Slika 20. Primjer poruke sa header-ima Protokole potrebne za rad OSI modela delimo na: 1. protokole niskog nivoa (low-level) a. fizički sloj (physical layer) – sloj za prijenos 0 i 1 putem fizičke veze b. Sloj prenosa podataka (data link layer) – grupiranje bitova u veće celine ili pakete – frame i provera ispravnosti prijenosa frame-ova primenom postupka za proveru (checksum); slika 21 prikazuje proveru podataka. c. Mrežni sloj (network layer) – izbor putanje za slanje paketa mrežom; najčešće korišteni protokol je IP (Internet Protokol); pri bržim vezama (ATM) koriste se virtualni kanali koji povezuju više komunikacijskih čvorova u jednu celinu 2. Transportne protokole – funkcija protokola je deljenje poruke za prenos na manje delove, dodela brojeva delovima i njihovo slanje; najčešće korišten protokol je TCP (Transmission Control Protokol), zatim UDP (Universal Datagram Protokol, to je proširenje IP protokola), za real-time prijenos se koristi RTP (Real-time Transport Protocol). Primena transportnih protokola česta je u klijent-server interakciji u distribuiranim sistemima primenom TCP i UDP protokola, pri tome komunikacija može biti standardna (normal) ili transakcijska (slika 22.) 3. protokole visokog nivoa (high-level) a. protokol sesije – nadogradnja transportnog sloja sa funkcijama izvođenja dijaloga sa nižim slojem i sinhronizacije uz mogućnost definisanja kontrolnih tačaka za nastavak komunikacije u slučaju neuspelog prenosa poruke b. prezentacijski protokol – orijentisan je sadržaju poruka pa omogućuje povezivanje podataka poruke sa formatom prenosa poruke (poruke mogu sadržati imena, adrese, novčane iznose i sl. pa je prikladno odrediti strukturu poruke kako bi se jednostavnije manipulisalo porukama). c. Aplikacijski protokoli – orijentisani su na radu sa aplikacijama sa karakteristikama protokola opšte namene. Primeri su FTP (File Transport Protocol), HTTP (HyperText Transfer Protocol). d. Middleware protokoli – protokoli sadržani u sloju aplikacije za izvođenje posebnih usluga (protokoli za provjeru autentičnosti, protokoli za implementaciju atomičnosti – izvođenje više procesa kao jedna nedjeljiva celina)
89
Slika 21. Postupak provjere prijenosa poruka
Slika 22. a) standardni TSP b) Transakcijski TCP
2.2. Poziv procedure na udaljenom računaru – RPC Poziv procedure na udaljenom računaru omogućuje prenos obrade na drugi računar pokretanjem odgovarajuće procedure. Za vreme izvođenja procedure na drugom računaru proces koji je inicirao poziv je suspendovan i čeka rezultat izvođenja procedure (slika 23). Kada pozvana procedura vrati rezultat rada procedure proces na lokalnom računaru nastavlja izvođenje, pri čemu je celi postupak nevidljiv za programera.
90
Slika 23. Prikaz RPC poziva izmenu klijenta i servera Primenom RPC poziva omogućavamo da se pozvana procedura na udaljenom računaru izvede na način kao da lokalni proces izvodi proceduru na lokalnom računaru. To se ostvaruje upotrebom posebnog tipa zapisa procedura (client stub) u stack deo memorije procesa. Kada udaljeni računar primi poruku sa pozivom procedure prosljeđuje je posebnom zapisu (server stub) u stack memoriji. Kada se procedura izvede sledi prenos rezultata klijentu i nastavak izvođenja procesa na klijent računaru. Koraci za izvođenje RPC poziva su (slika 24.): 1. klijent proces poziva proceduru i generiše klijent stub, 2. klijent stub generiše poruku i prosleđuje je lokalnom OS, 3. klijent OS šalje poruku udaljenom računaru (serveru), 4. server OS prima poruku i prosljeđuje je server stubu, 5. server stub raspakuje primljenu poruku, analizira parametre poruke i geneše sistemski poziv na serveru, 6. server izvodi poziv i vraća rezultat server stubu, 7. server stub pakuje poruku i prosleđuje je server OS, 8. server OS šalje poruku klijent računaru, 9. klijent OS poruku prosleđuje klijent stubu, 10. klijent stub raspakuje poruku i prosleđuje rezultat klijent procesu.
Slika 24. Izvonenje RPC poziva Pri tome je nužno uskladiti formate za prenos podataka ukoliko klijent i server koriste drugačiji zapis podataka (npr. Pentium i SPARC arhitektura). Slika 25. prikazuje postupak prevođenja poruka u druga čiji format (korišćenje drugačijih kodova za karaktere, formate brojeva itd.). Pri generisanju poruke prema serveru nužno je poznavanje servisa koji se želi koristiti (različiti servisi imaju različite portove). Klijent može dobiti potreban port statičkim načinom, kada server svim klijent računarima pošalje oznake portova (to je nepraktično u slučaju promene oznaka portova jer se podaci o promeni portova moraju slati svim
91
računarima). Drugi način je dinamički: klijent šalje serveru upit za oznakom porta za traženu uslugu, a zatim dobivenu informaciju ugrađuje u poruku prema serveru.
Slika 25. Prevođenje formata podataka a) Intel b) SPARC c) invertirana poruka Proširenje RPC modela Ukoliko je potrebno koristiti poziv RPC poziva na jednom računaru koristi se posebna vrsta procedure ekvivalentna RPC pozivu a zove se door. Door procedura mora biti podržana u OS računara. Postupak izvođenja je identičan RPC pozivu osim komunikacije putem mreže jer se poziv izvodi na istom računaru. Slika 26. prikazuje izvedbu door procedure. Asinhroni RPC poziv omogućuje klijent procesu nastavak izvođenja aktivnosti koje se ne odnose na rezultat RPC poziva, pa klijent ne mora biti suspendovan za vrijeme izvođenja RPC poziva (slika 27.). Slika 28. prikazuje izvođenje dva RPC poziva (deffered synhronous RPC)
Slika 26. Izvonenje door procedure
92
Slika 27. a) standardni RPC b) asinhroni RPC
Slika 28. Klijent i server izvode dva asinhrona RPC poziva
2.3. Poziv metode na udaljenom računaru – RMI Rad se zasniva na primeni distribuiranih objekata koji su opisani podacima koje sadrže(state) i operacijama na podacima (method). Metode su DS dostupne primenom veze interfejsa (interface). Distribuirani sistemi dozvoljavaju smještaj interface-a na jedan računar i objekta na drugi računar (slika 29.).
Slika 29. Primjer organizacije objekta na udaljenom računaru
93
Klijent poziva udaljeni objekat putem interface-a (proxy), koji zahtev prosleđuje na server gde se primjenom interface-a (skeleton) prosleđuje objektu. Nakon što klijent pristupi objektu on pokreće izvođenje metode na objektu. Korišćeni interface-i mogu biti definisani u trenutku izrade aplikacije na klijentu pa se takav način upotrebe interface-a zove static invocation. Ukoliko interface nije unapred poznat koristi se dinamic invocation. U tom slučaju aplikacija odabire željenu metodu te se dinamički određuje potreban interface za selektovanu metodu.
2.4. Međusloj usmeren prenosu poruka Porukama se izbegava ograničenje blokiranja klijent procesa pri RPC ili RMI pozivu na serveru. Primer primene poruka je slanje elektronske pošte (slika 30.). Aplikacija generiše poruku koja se prosleđuje putem lokalne mreže prema komunikaciskom serveru (mail serveru). Komunikaciski server prosleđuje poruku drugom komunikaciskom serveru koji prihvata poruku i prosleđuje aplikaciji korisnika u trenutku kada se korisnik priključi na komunikaciski server.
Slika 30. Princip rada elektronske pošte primenom prenosa poruka. Elektronska pošta je primer kontinuirane komunikacije (persistant communication) gde se poruka smešta na serveru sve dok se ne steknu uslovi za njen dalji prenos na drugi server. Slika 31 prikazuje persistant communication na primeru Pony Express službe.
Slika 31. Primjer kontinuirane komunikacije
94
Nasuprot persistant communication je transient communication gde se poruka zadržava samo za vreme izvođenja aplikacije za slanje i primanje poruka. Komunikacija porukama može biti sinhrona i asinhrona. Kod asinhrone komunikacije pošiljalac nastavlja izvođenje nakon slanja poruke, a kod sinhrone pošiljalac je blokiran sve dok poruka nije smeštena u bufffer primaoca ili je primalac nije primio. Slika 32. prikazuje 6 načina komunikacije.
Slika 32. Načini komunikacije: a) kontinuirana asinhrona b) kontinuirna sinhrona c) transient asinhrona d) receipt-based transient sinhrona e) delivery-based transient sinhrona f) response-based transient sinhrona
2.5. Primena toka (stream) Tok (stream) se koristi u radu sa multimedijalnim dokumentima gde je vrlo važna usklađenost između sadržaja i načina interpretacije sadržaja. Razlikujemo kontinuirane i diskretne medije. Za prikaz kontinuiranih medija važna je brzina prenosa podataka dok za diskretne medije brzina nema ključnu važnost. Za implementaciju kontinuiranih medija u distribuiranim sistemima koristi se tok podataka ( data stream). Za asinhroni transmisijski način prenošenja podaci se prenose jedan za drugim i koriste kada je prijenos završen (prijenos fotografija). Za sinhroni transmisijski način prenošenja podaci se prenose jedan za drugim i moraju se preneti pre određenog intervala vremena. Za izohrone transmisijske načine prenošenja podaci se prenose jedan za drugim ali imaju tačno određen vremenski interval prenosa te se ne smeju podaci preneti posle, ali ni pre dozvoljenog intervala vremena. Tok može biti: 1. jednostavan – jedan niz podataka 2. složen – nekoliko nizova podataka (kombinacija slike i zvuka). Tok može biti izveden korišćenjem dva procesa, a može biti realiziran i direktno (slika 33.).
95
Slika 33. Primjena toka a) pomoću dva procesa b) direktno Kvalitet toka definiše se specifikacijama za prenos podataka sa podacima o brzini prenosa, problemima pri prenosu itd. Primer poboljšanja kvaliteta toka je Token bucket algoritam (slika 34.). Aplikacija generiše podatke za tok u nepravilnim vremenskim intervalima, a filter korišćenjem brojača vremena T šalje podatke u tačnim vremenskim intervalima.
Slika 34. Primena token bucket algoritma Postavljanje toka podataka izvodi se primenom Reosurse reSerVation Protocol-a (RSVP) kao kontrolnog protokola smeštenog u transportni sloj. RSVP sadrži sve podatke potrebne za realizaciju toka podataka i preuzima kontrolu nad tokom podataka (slika 35.).
Slika 35. Primjena RSVP-a u kontroli toka podataka
96
Za tok podataka bitna je sinhronizacija, pa je nužno koristiti sinhronizacijski mehanizam. Zadatak mehanizma je da prihvati dolazni tok podataka i da vremenski izvrši usklađivanje toka podataka koji se prosleđuje prema konkretnom primaocu. Kontrolni mehanizam može biti: 1. jednostavan–kontrola prihvata podatke i vrši sihronizaciju pri prosleđivanju podataka primacu (slika 36.) 2. složena – koristi se poseban program (aplikacija) koja je namenjena kontroli toka podataka (slika 37).
Slika 36. Primer jednostavnog mehanizma za sinhronizaciju
Slika 37. Primer složenog mehanizma za sinhronizaciju
3. SINHRONIZACIJA U DISTRIBUIRANIM OPERACIONIM SISTEMIMA Sinhronizacija je ključna za rad DS-a. Računarska mreža uključuje niz računara sa vremenski usklađenim satovima. Uskladivost vremena na svim računarima ne može se potpuno postići što stvara probleme pri izvođenju operacija (procesa) na različitim računarima koji se moraju izvesti tačno određenim redosledom. Primjer na slici 46. prezentira situaciju pri kompajliranju datoteke. Na jednom računaru editujemo datoteku, a na drugom je kompajliramo. Kompajler pre kompajliranja proverava vreme zadnje promene datoteke i ako je to vreme manje od zadnjeg procesa kompajliranja ne izvodi postupak kompajliranja. Zadnje vrijeme kompajliranja je 2144 na prvom računaru. Posle tog trenutka na drugom računaru se promeni datoteka i zapamti vrijeme 2143 (sat na drugom računaru zaostaje za satom na prvom računaru). Kompajler pri upoređivanju utvrđuje da je promena datoteke izvedena pre zadnjeg kompajliranja (2134 promena, 2144 zadnje kompajliranje) i neće kompajlirati datoteku. Jasno je da se ovakve situacije moraju izbjeći.
97
Slika 46. Greška pri kompajliranju datoteke
3.1. Sinhronizacija sata Sinhronizacija sata može se postići: 1. primjenom fizičkog sata – koristi se univerzalni sat prema kojem se usklađuju svi ostali satovi 2. algoritma za sinhronizaciju – za računare koja imaju pristup WWW-u mogu će je usklađivanje sa referentnim satom stalnim praćenjem odstupanja lokalnog sata; kada odstupanje pređe dozvoljenu granicu izvodi se korekcija lokalnog sata (slika 47.); druga mogućnost je upotreba time servera za usklađivanje lokalnih satova (slika 48.); ukoliko računari nemaju pristup WWW-u potrebno je primeniti Berkeley algoritam gde se izračunava srednje vreme svih računara u lokalnoj mreži i putem time deamon procesa usklađuju svi lokalni satovi sa srednjim izračunatim vremenom (slika 49.)
Slika 47. Usklanivanje sa referentnim satom Slika 48. Usklanivanje time serverom
Slika 49. Berkeley algoritam
98
Za pojedine procese vrlo je bitno određivanje sleda aktivnosti izvođenje što je izvodivo ukoliko su satovi međusobno usklađeni. Za procese kod kojih je nužno da se jedan proces dogodio pre drugog definiše se relacija happend before. Dva procesa su u relaciji happend before ako je: 1. a se dogodio pre b: C(a) < C(b) 2. a i b označavaju slanje i primanje poruke: C(a) < C(b) 3. za sve a i b ako je C(a) C(b).
Slika 50. prikazuje usklađivanje vremenskih satova kako bi se mogla implementirati relacija happend before. a) prikaz lokalnih satova b) prikaz usklađenih satova Pri usklađivanju replika servera mogu se javiti sledeći problemi. Korisnik u Nišu ulaže 100 dinara na račun koji je trenutno na centralnom serveru u Beogradu i kopiji servera u Nišu iznosi 1000 dinara. Istovremeno službenik banke u Beogradu aktivira program za obračun kamata na iznos korisnika. Kako će oba zahtjeva biti proslijeđena na oba servera doći će do izračuna trenutnog iznosa od 1110 dinara u Beogradu i 1111 u Nišu(slika 51.). Ova situacija izbegava se blokiranjem promena na podacima čija je izmjena u toku sve dok se ne dobije potvrda o završenim izmenama na svim serverima replikama.
Slika 51. Primjer greške pri radu sa replikama podataka.
3.2. Algoritmi za odabir U DS-u je često potrebno selektirati proces koordinator što se realizira upotrebom odgovarajućeg algoritma za izbor. Algoritmi za izbor su: 1. Bully algoritam 2. Ring algoritam. Bully algoritam radi na sledećem principu: procesima se dodeljuju brojevi ovisno o vremenu nastanka (najstariji proces ima najveći broj); pri izboru proces P šalje poruku ELECTION svim drugim procesima sa
99
upitom za vrednost dodeljenog broja; ako niti jedna poruka nema veći broj od broja koji ima P proces P je izabran; ako se pojavi poruka sa većim brojem proces koji je poslao poruku je izabran (slika 52). Ring algoritam koristi krug za odabir procesa. Kada koordinator nije aktivan pokre će se ELECTION poruka koja sadrži broj procesa. Ako susedni proces nije aktivan poruka se prosleđuje sledećem procesu u krugu. Pri svakom prijemu poruke proces povećava svoj broj pa će tako proces sa najvećim brojem biti izabran. Kada poruka stigne ponovo do procesa koji ima najveći broj on se proglašava koordinatorom i šalje ostalima poruku o tome i procesima uključenim u krug (slika 53.)
Slika 52. Bully algoritam a) proces 4 započinje odabir b) proces 5 i 6 odgovaraju c) proces 5 i 6 započinju odabir d) proces 5 i 6 zaustavljaju odabir e) proces 6 je odabran i informira ostale
Slika 53. Ring algoritam
100
3.3. Mutual Excluison U DS-u je nužno implementirati mutual excluison kako bi se izbegle greške u radu sa deljivim resursima . Implementacija mora uključiti sve resurse svih računara uključenih u DS.Implementacija mutual exclusiona ostvaruje se: 1. Centraliziranim pristupom - Centraliziran pristup znači upotrebu koordinatora sa pravima dodele dozvole ulaska u kritičnu sekciju na deljivom resursu. Svi procesi koordinatoru šalju zahtjeve (request) za ulaskom u kritičnu sekciju. Ako je resurs slobodan koordinator dozvoljava slanje poruke potvrde ulaska (reply) u kritičnu sekciju i proces započinje kritičnu sekciju. Ukoliko neki drugi proces zatraži ulazak u kritičnu sekciju na istom djeljivom resursu koordinator mu neće vratiti poruku potvrde za ulazak u kritičnu sekciju sve dok prvi proces ne završi kritičnu sekciju i vrati poruku završetka kritične sekcije koordinatoru (release). Slika 54. prikazuje centraliziranu izvedbu mutual exclusiona. Problem nastaje kad koordinator nije u funkcionalnom stanju, ali u tom slučaju njegovu funkciju preuzima rezervni koordinator.
Slika 54. Centralizirani pristup a) slanje upita i dozvola ulaska u kritičnu sekciju b) upit odbijen c) upit prihvaćen 2. Decentraliziranim pristupom - Decentralizirani pristup znači da nema koordinatora već procesi međusobno dogovaraju dozvole ulaska u kritične sekcije. Ako jedan proces želi ući u kritičnu sekciju šalje svim ostalim procesima poruku koja sadrži naziv kritične sekcije, broj procesa i trenutno vreme. Ako svi procesi vrate poruku potvrde (OK) proces ulazi u kritičnu sekciju. Ako bi neki drugi proces poslao nakon toga zahtev za ulaskom u kritičnu sekciju dobio bi odgovor od svih procesa osim od procesa koji je u kritičnoj sekciji. Odgovor od procesa koji je u kritičnoj sekciji uslediti će kada proces završi kritičnu sekciju. Problem se može pojaviti ako dva procesa istovremeno pošalju zahtjev za ulaskom u kritičnu sekciju, a rješava se uspoređivanjem vremenskih oznaka događaja slanja poruke za ulazak u kritičnu sekciju (time stamps) pa se na taj način određuje koji proces prvi ulazi u kritičnu sekciju. Problem nastaje ako jedan proces nije funkcionalan jer tada niti jedan drugi proces ne može dobiti poruku potvrde za ulazak u kritičnu sekciju pa je nužno detektovati takve procese i isključiti iz komunikacije pri dodeli dozvola za ulazak u kritičnu sekciju. Slika 55. prikazuje rad centraliziranog pristupa pri izvedbi mutual exclusion-a.
Slika 55. Centralizirani pristup a) slanje zahtjeva b) dobivanje odgovora c) ulazak u kritičnu sekciju
101
3. Korištenjem token-a. - Primena token-a znači upotreba poruke token za svaki deljivi resurs koja putuje sistemom od procesa do procesa. Proces koji želi ući u kritičnu sekciju zadržati će token kod sebe sve dok ne završi kritičnu sekciju i tako osigurati izvođenje mutual exclusion-a. Problem nastaje ako se poruka token izgubi pa je potrebno proveravati da li je poruka u sistemu i ako nije nužno je generisati novu poruku. Slika 56. prikazuje primjenu token-a na neorganiziranu grupu procesa koja se softverski povezuje u kružnu strukturu.
Slika 56. Primjena token-a a) neorganizirana struktura b) logički krug konstruiran u softveru Tablica 4. prikazuje uporedni pregled načina za implementaciju mutaul ecxlusiona. Tablica sadrži podatke o broju potrebnih poruka, čekanju na ulazak u kritičnu sekciju izraženom putem broja poruka za primanje i problemima svake tehnike.
Tabela 4. upoređivanje tehnika za mutual exclusion
3.4. Atomičnost Atomičnost se odnosi na transakcije odnosno skup akcija koje se moraju izvesti kompletno kako bi se transakcija mogla zaključiti. Ukoliko barem jedna akcija nije kompletirana, cela transakcija se poništava i vraća na početak. Osnovne operacije za izvođenje atomičnih akcija su: BEGIN_TRANSACTION, END_TRANSACTION, ABORT_TRANSACTION, READ_TRANSACTION, WRITE_TRANSACTION Slika 57. prikazuje izvođenje transkacije pri rezrevaciji karata na relaciji Washington- New York – Nairobi – Malindi.
Slika 57. Prikaz transakcija za rezervaciju karata Svojstva transakcija - ACID: 1. Atomičnost – akcije se izvode kao cjelina
102
2. Konzistentnost – ukupno stanje vrednosti promenljivih sistema pre i posle transakcije je konzistentno (nepromijenjeno) 3. Izoliranost – akcije se mogu izvoditi paralelno ali to ne utiče na rezultat izvođenja 4. Trajnost – jednom završena transkacija ima trajan učinak na rezultate transakcije (nije moguće povratak promenjenih vrednosti u transakciji)
Slika 58. Primjer transakcija i upravljanja transakcijama Upravljanje transakcijama mora biti izvedeno na način koji osigurava korektnu obradu na podacima. Slika 58.a) i 58.b) daju korektan rezultat dok 58.c)generiše grešku. Ugneždene transakcije su transakcije nižeg hijerarhijskog nivoa, a generišu se stvaranjem child procesa koji izvode aktivnosti nad podacima parent procesa. Implementacija transakcija je izvediva primenom: Privatni radni prostor – blokovi podataka koji se menjaju u transakciji se kopiraju u slobodne blokove i na njima se izvodi obrada; ukoliko se transakcija vrati na početak, privremeni blokovi se brišu, a za kompletiranu transakciju privremeni blokovi postaju korektni blokovi dok se prethodni blokovi proglašavaju nevažećim (slika 59.) Writeahead log ili intention liste – liste sadrže popis promijenjenih vrednosti koje se koriste za obnavljanje početnih vrednosti u slučaju poništenja transkacije (slika 60).
Slika 59. Privatni radni prostor
Slika 60. Primer upotrebe Whiteahead loga
103
15 čas
WWW i WEB aplikacije
WEB APLIKACIJE Pod pojmom web aplikacije podrazumjeva se širok skup programskih rešenja koje kao korisnički interface (metod slanja zahtjeva i dobijanja rezultata) koriste neki web browser. Sve web aplikacije funkcionišu po principu klijent – server. Server predstavlja računar na kojem je aplikacija smeštena i koji u zavisnosti od zahtjeva korisniku isporučuje (servira) rezultat u zavisnosti od tipa i funkcije aplikacije. Klijet može biti bilo koji web browser ili neki specijalno napravljeni klient program, koji opet mora kontaktirati server da bi korisnik dobio rezultate na osnovu svojih zahteva. Najelementarniji oblik web aplikacije jeste najobičnija Internet prezentacija. Upravo zbog ove činjenice, a i s obzirom da najveći broj ljudi koji se koriste Internet-om, pojam web aplikacije poistovećuju sa web prezentacijama, web aplikacije su obično predmet skepticizma i potcenjivanja kada su u pitanju mogućnosti realizacije nekih kompleksnih problema ili kreiranja nekog ozbiljnijeg software-a. Kompletan software-ski dio web aplikacije smješten je na serveru, i samim tim je dostupan na korišćenje većem broju ljudi istovremeno. U isto vrijeme je siguran od krađe, prepravljanja i uopšte bilo kakvog uticaja na kod u onolikoj mjeri u kojoj je i sam server siguran od neovlašćenih upada. Znači, nema nikakve potrebe za komplikovanim instalacijama, podešavanjima, vođenja računa o kompatibilnosti. Sve se to završava na strani servera. Server http ili https protokol Korisnik Internet Web Aplikacija http ili https protokol Korisnik Korisniku nije potreban nikakav specijalni software za pristup aplikaciji, nije ograničen da je mora koristiti isključivo sa jednog računara, a sama brzina komunikacije sa aplikacijom zavisi od brzine kojom korisnik može da pristupi serveru. Klient alikacija je web browser (MS Internet Explorer, Mozilla, Opera) i obično je uključena u okviru operativnog sistema instaliranog na korisničkom računaru, ili dolazi kao sastavni deo nekog od klient software-skih paketa kao što je na primjer MS Office. Upravo zbog ovih karakteristika web aplikacije, koristeći Internet kao globalnu mrežu, sve više se koriste za rešavanje vrlo ozbiljnih korisničkih zahteva. On line kupovina, elektronsko bankarstvo, informacioni sistemi u okviru firmi, turističke aplikacije i mnogi drugi složeni sistemi bazirani su upravo na web aplikacijama. Danas, kada web predstavlja sve dominantniji medij za kolaboraciju i integraciju različitih poslovnih softvera unutar lanca snabdevanja, elektronskog tržišta, ali i ljudi, unutar određene interesne zajednice, od suštinske je važnosti da razvoj tehnologija koji će to omogućiti na efikasan način, izlazi u susret narastajućim potrebama tržišta u ovom segmentu. Osnovne tehnologije za izradu web aplikacija su HTML jezik za izradu statičkih strana i Server- Side Scripting jezici za generisanje HTML koda, odnosno, izradu dinamičkih strana. Preuzimanje i prikaz statičkih web strane predstavlja jednu realizaciju klijent – server arhitekture, čiji su akteri internet pretraživač, kao klijent i web server, kao server, u ovoj arhitekturi. Web server predstavlja softver, koji se instalira na odrenenom, dostupnom serverskom računaru i koji upravlja zahtevima za pristup odrenenoj web stranici, tako što postupa po zahtevu klijenta, isporučujući sadržaj neke web strane. Web server i pretraživač komuniciraju razmenom poruka putem HTTP (Hyper Text Transfer Protocol) protokola, koje mogu biti u vidu zahteva (koji čini odgovarajuće HTTP zaglavlje - header) i odgovora, koji čini odgovarajuće HTTP zaglavlje I sadržaj samog odgovora, odnosno HTML kod koji se interpretira od strane internet pretraživača i prikazuje na njegovoj radnoj površini. Tok ove komunikacije je prikazan na slici 12. Slika 12. Tok komunikacije u prikazu statičkih web strana Osnovna tehnologija za izradu web strana danas predstavlja HTML jezik. On se koristi za definisanje sadržaja ili elemenata interakcije (linkovi ili forme) jedne web strane, tako što definiše komande 104
(odnosno, tagove), koje internet pretraživači, kao što su Internet Explorer ili Firefox, mogu da interpretiraju na pravilan način i, prema toj interpretaciji, korisniku jednog web sajta prikažu njegov sadržaj. HTML je nastao uprošćavanjem SGML (Standard Generalized Markup Language, standardizovani uopšteni jezik za označavanje) standarda sa svrhom opisa dokumenta koji se objavljuju na webu. U početku je bio prilično ograničen što se označavanja sadržaja tiče i pružao je uglavnom elementarne mogućnosti za označavanje i formatiranje teksta (paragrafi, naslovi, citati itd.). Kako je web rastao, tako je rasla i potreba za bogatijim sadržajem te je u tom smeru razvijan i HTML standard. Tada su standardu dodate elementi za opis tabela, slika, slojeva, napredno formatiranje teksta itd. HTML dokumenti se sastoje iz dva osnovna dela: dela koji opisuje dokument i dela koji predstavlja sadržaj dokumenta. Informacije koje opisuju sam dokument se smeštaju u head tag, dok se sam sadržaj smešta u body tag. Oba ova elementa se nalaze unutar html taga.
Slika 13. Primer osnovne strukture HTML dokumenta HTML dokumente, odnosno statičke web strane čini čisti HTML kod, i one predstavljaju datoteke sa ekstenzijom htm ili html, koje se kodiraju i smeštaju na odgovarajuće mesto na web serveru. Osnovni problem primene statičkih web strana u složenijim web aplikacijama je to što je njihov sadržaj i funkcionalnost unapred odrenen. Samim tim, statičke web strane se ne mogu koristiti za kreiranje interaktivnih i ažurnih web aplikacija, kod kojih prikazani sadržaj u svakom trenutku zavisi od trenutnih okolnosti. Na primer, kod web aplikacija za komunikaciju izmenu ljudi, kao što su web forumi, sadržaj jedne strane koja prikazuje diskusiju o odrenenoj temi se stalno menja – svaki put kada neki korisnik te aplikacije da doprinos diskusiji. Dalje, web prikaz kataloga proizvoda se, takone, kontinuirano menja – svaki put kada se promeni dostupnost nekog proizvoda na lageru, doda novi proizvod ili modifikuju atributi postojećeg – cena ili drugi atributi. Očigledno, postoji potreba za kreiranjem novog sloja u komunikaciji pretraživača i web servera, koji treba da programski obradi zahtev i parametre zahteva i, prema njihovom sadržaju, automatski generiše odgovarajuću web stranu ili obradi zahtev i skladišti njegove parametre na odgovarajući način (uobičajeno, u neku relacionu bazu podataka). To se radi primenom tzv. dinamičkih web strana – skupa instrukcija koje se po prijemu zahteva izvršavaju i automatski kreiraju HTML kod, koji se, u okviru HTTP odgovora isporučuje pretraživaču. Na slici dole, prikazana je šema toka komunikacije izmenu pretraživača i web servera u prikazu dinamičkih web strana.
Slika 14. Tok komunikacije u prikazu dinamičkih web strana Za kreiranje instrukcija čija je namena automatsko generisanje HTML koda, na osnovu parametara zahteva, koriste se različiti programski jezici i njihove varijante, kao što su PHP, JSP (Java), ASP 105
(Visual Basic), itd. Ove instrukcije nazivamo skriptovima na strane servera (Server- Side Scripts), zato što se izvršavaju na web serverima.
Slika 15. Obrada skripta na serveru Ovi skriptovi uobičajeno ostvaruju vezu sa odgovarajućom bazom podataka u koju se smeštaju obraneni podaci i zahtevi i koja se, po odgovarajućem zahtevu i interpretira, sa ciljem prikaza odrenenih podataka. Pored navedenih, druge prednosti korišćenja tehnologija na strani servera za kreiranje dinamičkih web strana su: - Ova tehnologija omogućava da se neki program izvršava u programskim jezicima koje web pretraživači ne podržavaju. - Ona daje mogućnost da se programiraju dinamičke Web aplikacije nezavisno od čitača, bez pribegavanja programiranju na strani klijenta, pomoću Java apleta, DHTML-a i ActiveX kontrola, od kojih svaki zahteva odreneni internet pretraživač, odnosno njegove konkretne karakteristike. - Ona može klijentu (pretraživaču) da dostavi podatke koji su mu inače nedostupni. - Često ostvaruje brže vreme učitavanja. - Obezbenuje poboljšane mere bezbednosti. Ipak, važno je napomenuti da korišćenje dinamičkih web strana povećava opterećenje web servera, naročito ukoliko njima pristupa veći broj korisnika. Iz ovog razloga, uobičajeno je potrebna veća inicijalna investicija u hardver web servera, koji se koriste za generisanje dinamičkih web strana. Jezik koji se najčešće koristi za kreiranje dinamičkih web strana je PHP. PHP je stekao popularnost zbog svoje jednostavnosti i sintakse naslenene iz programskog jezika C. Tokom vremena jezik se proširivao i sticao mogućnosti za objektno orijentisano programiranje, naročito od verzije 5.0. Nalikuje jeziku C+ + u smislu da dozvoljava i čisto-proceduralno programiranje, ali omogućava i korišćenje klasa i drugih koncepata objektno orijentisanog programiranja (naslenivanje, apstraktne metode, interfejsi itd.). 1.1 Šta su to Web servisi? Web servis je vrsta distribuirane aplikacije sa interfejsom kome se može pristupiti preko komunikacione mreže kao što je Internet. Tipična arhitektura u kojoj se koriste Web servisi je klijentserver arhitektura. Samo ime Web servis nagoveštava da se radi o aplikaciji koja se koristi putem interneta, najčešće preko HTTP (Hyper Text Transfer Protocol) protokola. Web servisi predstavljaju gradivne blokove savremenih i budućih informacionih sistema. Pošto je reč o distribuiranim aplikacijama na internetu, Web servisi se adresiraju tj. pristupa im se preko URL adresa. Osnovna karakteristika Web servisa je interoperabilnost. Pojam interoperabilnost odnosi se na mogućnost da aplikacije pisane u različitim programskim jezicima i razvijene na različitim platformama mogu da komuniciraju. Kod Web servisa poštuju se tačno definisana pravila kako bi bila omogućena komunikacija različitih tehnologija. 1.2 Osobine Web servisa Postoji nekoliko razloga koji su uslovili pojavu i razvoj Web servisa: 1. Interoperabilnost (Interoperability) je potreba za komunikacijom aplikacija razvijenih u različitim tehnologijama, u različitim programskim jezicima i na različitim platformama. Web servisi omogućavaju ovakvu komunikaciju. 2. SOA (Service Oriented Architecture) je pristup u razvoju softvera koji podrazumeva razdvajanje funkcija u odvojene servise, dostupne preko komunikacione mreže. Razdvojeni servisi olakšavaju 106
kombinovanje i korišćenje već implementiranih funkcionalnosti bez potrebe njihovog ponovnog razvoja. 3. Skalabilnost (Scalability) predstavlja potrebu da se postojeći skupovi funkcionalnosti menjaju (povećavaju ili smanjuju) uz minimalne troškove i najmanji mogući negativan uticaj na rad sistema. Evo nekoliko primera korišćenja Web servisa: pregled kursnih lista, vremenska prognoza, kreditni biro, validacije kreditnih kartica prilikom online plaćanja i td. 1.3 Platforme za razvoj Web servisa Brzina razvoja interneta i tehnologija koje se koriste na internetu dovela je do nastanka mnogih tehnologija za razvoj Web servisa koji su istom tom brzinom i nestale. Sa današnje tačke gledišta postoje dve platforme za razvoj Web servisa, Microsoft.NET i Sun J2EE, i bez obzira na odabranu platformu, Web servisi mogu sa lakoćom da pozivaju jedni druge. 1.4 Podela Web servisa Web servisi se grubo mogu podeliti u dve grupe: SOAP i REST Web servisi. Razlika između ova dva tipa nije oštra. SOAP Web servis kome se pristupa preko HTTP protokola je specijalan slučaj REST Web servisa. SOAP predstavlja skraćenicu od Simple Object Access Protocol (protokol za jednostavan pristup objektima). Ovu skraćenicu ne treba mešati sa skraćenicom SOA (Service Oriented Architecture) – arhitektura orijentisana servisima. Web servisi igraju centralnu ulogu u SOA pristupu razvoja softvera. SOAP poruka je XML dokument definisan XML šemom. Kod SOAP Web servisa, SOAP poruke nisu predmet interesa programera koji kreira Web servis ili piše klijentski kod za korišćenje Web servisa. SOAP poruke omogućavaju komunikaciju klijentske aplikacije koja konzumira Web servis i samog Web servisa. Na primer, u tipičnom scenariju nazvanom „razmena poruka inicirana zahtevom od klijenta“ (request/response message exchange pattern), SOAP bibliteka na strani klijenta šalje SOAP poruku kao Web servis zahtev, a SOAP bibliteka na strani Web servisa šalje drugu SOAP poruku kao odgovarajući odgovor klijentu (slika broj 1). Klijent
SOAP Web servis Zahtev
SOAP biblioteke
SOAP biblioteke Odgovor
Slika 1. Komunikacija kod SOAP Web servisa Ime REST dolazi od Representational State Transfer. Dok je SOAP stil Web servisa definisan standardima od strane tela koja se bave standardizacijom Web-a kao što je W3C (World Web Consortium) konzorcijum, za REST Web servise nisu definisani standardi, biblioteke, niti alati za razvoj. Uvođenje REST Web servisa u upotrebu predstavlja pokušaj da se prevaziđe složenost SOAP Web servisa. Klijent Web servisa može biti napisan u bilo kom programskom jeziku koji ima odgovarajuće biblioteke za podršku Web servisima. Najveća dobrobit koja se dobija od Web servisa je nezavisnost od programskog jezika ili tzv. jezička transparentnost. Klijent i Web servis ne moraju da budu napisani u istom programskom jeziku. Na primer, klijent Java Web servisa može da bude napisan u nekom od programskih jezika kao što su C#, Perl, Ruby i td. Isto tako, Java klijenti mogu konzumirati Web servise napisane u drugim programskim jezicima. Magija u transparentnosti programskog jezika ne postoji. Ako SOAP Web servis napisan u Javi može da ima klijenta razvijenog u programskim jezicima kao što su Perl i Ruby, onda mora da postoji nešto što premošćava razlike između tipova podataka programskog jezika na strani klijenta i na strani Web servisa. XML tehnologija, koja podržava razmenu struktuiranih podataka i njihovo skladištenje, predstavlja tu neophodnu spregu. Nekoliko bitnih osobina izdvaja Web servise od drugih distribuiranih softverskih sistema: Korišćenje postojeće infrastrukture. Web servisi u osnovi koriste standarde koji su nezavisni od proizvođača. Ti standardi su HTTP i XML koji su sveobuhvatni i razumljivi. HTTP omogućava 107
transport poruka a XML omogućava struktuiranje podataka. Web servisi ne zahtevaju nove sisteme već se oslanjaju na postojeće komunikacione mreže (internet), standarde za formatiranje podataka, bezbednost i infrastrukturu koja već postoji čime se snižavaju troškovi i pospešuje interoperabilnost. Transparentnost u odnosu na programski jezik. Web servisi i njihovi klijenti mogu da komuniciraju čak i kada su napisani u različitim programskim jezicima. Programski jezici kao što su C/C++, C#, Java, Perl, Python i drugi obezbeđuju biblioteke i okvire (framework) za podršku Web servisima. Modularna arhitektura. Web servisi su sami po sebi moduli koji se mogu koristiti pri razvoju aplikacija. Integracijom postojećih Web servisa mogu se dobiti novi Web servisi (na primer, povezivanje servisa koji prati količinu robe u skladištu i servisa za online kupovinu te robe, može voditi stvaranju servisa koji automatski naručuje robu od dobavljača u zavisnosti od količine robe u skladištu). 1.5 Korist od Web servisa Danas postoje brojni softverski sistemi koji su razvijeni u različitim programskim jezicima i rade na različitim platformama. U malom broju slučajeva pomenuti sistemi rade u potpunoj izolaciji. Tipični softverski sistem mora da komunicira sa drugim sistemima koji su implementirani u drugim tehnologijama. Malo kompanija, koje su vlasnici ovakvih sistema, ima finansijska sredstva i ljudske resurse da zastarele sisteme realizuje u novim tehnologijama. Zato se javlja potreba za komunikacijom sistema koji su različiti u pogledu implementacionih tehnlogija i platformi na kojima rade. Takva komunikacija naziva se interoperabilnost. Web servisi uspešno rešavaju ovaj problem jer za komunikaciju koriste HTTP i XML protokol. Uvod u web servise Web servisi predstavljaju novu primenu standardnih softverskih tehnologija koja omogućava povezivanje raznorodnih informacionih sistema na novi način, korišćenjem internet protokola, i to unutar jednog integrisanog ili više poslovnih procesa. Osnovni motiv razvoja i korišćenja tehnologije web servisa predstavlja mogućnost integracije raznovrsnih informacionih sistema instaliranih u distribuiranim okruženjima. Oni predstavljaju skup aplikacionih funkcija koje se mogu programski pozivati putem interneta. Jedan web servis je bilo koji skup metoda za obradu i isporuku informacija, dostupan posredstvom HTTP i SMTP protokola, a koji nije vezan za odrenenu operativnu platformu ili programski jezik i koji koristi XML notaciju za razmenu poruka. Web servisi predstavljaju tehničku evoluciju koncepta servisno orijentisane arhitekture. U arhitekturi okruženja koje karakterišu web servisi, jedna mrežna komponenta može imati ulogu provajdera servisa, korisnika ili klijenta servisa, i brokera servisa. Slika 18. Uloge i interakcije u arhitekturi web servisa Provajder servisa je odgovoran za kreiranje i aktiviranje web servisa u njegovoj nadležnosti, kao i objavljivanje dostupnosti servisa, opisanog putem WSDL standarda u registar servisa, kao što je UDDI poslovni registar. Uloga brokera servisa je registracija i kategorizacija objavljenih servisa i obezbenenje funkcija za njihovo pretraživanje. U arhitekturi web servisa, UDDI ima ulogu registra servisa opisanih putem korišćenjem WSDL standarda. Osnovna karakteristika internet standarda je da su njihov fokus protokoli, a ne njihove implementacije. S obzirom na to da internet čini niz heterogenih tehnologija, ovaj nivo generičnosti garantuje funkcionisanje u nehomogenom okruženju i visoku interoperabilnost. Mogućnosti integracije jedinstvenog informacionog sistema, odnosno prevazilaženja nekompatibilnosti njegovih komponenti se ostvaruju primenom skupa softverskih standarda kao što su XML, SOAP (Simple Object Access Protocol), UDDI (Universal Description Discovery and Integration), WSDL (Web Services Description Language), WSIL (Web Services Inspection Language), WS-S (Web Services Security) i WS-I (Web Services interoperability). Ovi standardi omogućuju definisanje, pakovanje, pristupanje i izvršavanje podataka i programa preko Interneta, bez potrebe za vonenjem računa o pojedinačnim implementiranim tehnologijama. Slika 19. Relacije izmenu SOAP, UDDI, WSDL i WSIL protokola Provajder servisa obezbenuje njegovu dostupnost uz pomoć svoje tehničke infrastrukture, koja podržava SOAP/HTTP ili SOAP/JMS (Java Messaging Services) komunikaciju. Web servis je opisan 108
u WSDL dokumentu koji se skladišti na serveru provajdera u posebnom repozitorijumu. Reference na web servis, odnosno podaci koji ukazuju na WSDL dokument, mogu da postoje u UDDI registru ili WSIL dokumentima. WSDL predstavlja otvorenu specifikaciju, zasnovanu na XML standardu koja opisuje interfejse ka web servisima na mreži i njihove instance. WSDL sintaksom se opisuju sve vrste aktivnosti koje može da izvrši neki web servis. Ona omogućava da se čvorovi servisno orijentisane arhitekture opišu, bez obzira na formate poruka koje razmenjuju ili mrežne protokole koje koriste za razmenu. Dostupnost WSDL dokumenata se obezbenuje kroz UDDI ili WSIL, ili javnim objavljivanjem njihovog URL-a nekim drugim konvencionalnim sredstvom. Primenom njegove sintakse, mogu se definisati sledeće karakteristike web servisa: - Naziv web servisa i informacije o njegovom adresiranju - Protokol i encoding stil koji će se koristiti prilikom pristupanja javnim operacijama web servisa - Strukturne informacije – meta podaci servisa, kao što su operacije, parametri i tipovi podataka koji čine interfejs web servisa. Jedan WSDL dokument definiše servise kao skup mrežnih završetaka (network endpoints) ili portova. WSDL omogućava apstraktnu definiciju operacija i poruka i njihovo referenciranje - vezivanje (binding) za tačno odreneni mrežni protokol i format poruke. Pritom, definicija operacija i poruka je nezavisna od parametara njihovog vezivanja, odnosno korišćenih protokola i formata poruka. Parametri vezivanja predstavljaju ugovor izmenu logike klijenta i logike servera servisa – posrednika izmenu meta opisa web servisa i njegove konkretne realizacije. U tradicionalnom distribuiranom programiranju, realizacija poslovne logike, odnosno, logike na serverskoj strani, obuhvata veoma često statičko vezivanje (static binding) - generisanje proxy objekata koji su namenjeni klijentima, za ostvarivanje njihove komunikacije sa serverom, primenom predvinenih protokola, od kojih jedan može da bude i SOAP. Ipak, jedan od osnovnih ciljeva servisno orijentisane arhitekture je dinamičnost web servisa – oni mogu biti predmet izmene, bez ikakve prethodne najave, ili čak – ponovne distribucije klijentskih proxy-ja. Razlog za to je, izmenu ostalog i činjenica da su njihovi vlasnici veoma često – treće strane, a sadržaj usluga definisanih web servisom – unapred nepoznat. Očigledno, navedeni princip obezbenuje karakteristiku proširivosti web servisa, ali i višestrukog korišćenja definisanih formata poruka. Demonstracija ovog principa uz pomoć elemenata strukture WSDL i njihov odnos je prikazana na slici dole.
Slika 20. Elementi strukture WSDL Za definisanje mrežnih servisa, WSDL koristi sledeće elemente sintakse: - Tipovi (Types). Kontejneri za definicije tipova podataka, definisanih uz pomoć XML sintakse, odnosno odgovarajuće XSD strukture. XML i XSD definicije tipova se koriste u cilju ostvarivanja maksimalne neutralnosti formata. 109
- Poruka (Message). Apstraktna definicija podataka koji se razmenjuju u komunikaciji izmenu provajdera i korisnika web servisa. Svaka poruka se može sastojati iz jednog ili više delova. Delovi poruke su analogni atributima poziva jedne operacije. - Operacija (Operation). Apstraktni opis akcije podržane od strane servisa. - Tip porta (Port Type). Apstraktni skup operacija podržan od strane jednog ili više mrežnih završetaka. - Referenciranje - vezivanje (Binding). Specifikacija konkretnog protokola i specifikacija formata podataka za odreneni tip porta. Kao protokol se obično koristi SOAP, dok format podataka može biti definisan kao dokument (document) ili nekodirani tekst (literal). Drugi izbor predstavlja HTTP – izborom ovog protokola, format poruke se ograničava na proste tipove (npr. tekst), dok se SOAP koristi za složenije strukture podataka. - Port. Mrežni završetak definisan kao kombinacija parametara vezivanja i mrežne adrese. - Servis (Service). Skup mrežnih završetaka. Prilikom implementacije web servisa uz pomoć Java programskog jezika, poslovna logika web servisa je enkapsulirana u Java bean-ovima ili EJB (Enterprise Java Bean). Savremene Java razvojne platforme omogućavaju generisanje WSDL dokumenata na osnovu strukture postojećih Java bean-ova ili EJB, i obrnuto. Sa stanovišta klijenta web servisa, važno je istaći da ove platforme mogu omogućiti i generisanje Java proxy koda, namenjenog upravo klijentu, na osnovu strukture postojećeg WSDL dokumenta i tako obezbediti lak i brzi razvoj klijenta za korišćenje usluga web servisa. Razvoj web servisa Razvoj web servisa predstavlja integralni deo razvoja ukupne servisno orijentisane arhitekture. Osnovne aktivnosti procesa razvoja web servisa su: - Otkrivanje (Discover). Pretraživanje UDDI poslovnih registara ili WSIL dokumenata u cilju lociranja postojećih web servisa sa kojima je potrebno izvršiti integraciju. - Kreiranje ili transformacija (Create or Transform). Ovaj proces karakterišu dva moguća pristupa – top-down ili bottom-up. Top-down pristup podrazumeva kreiranje WSDL interfejsa uz pomoć odgovarajućeg editora i generisanje skeleta odgovarajućih klasa na osnovu njegove strukture. Bottom-up pristup podrazumeva generisanje WSDL datoteka na osnovu postojećih implementacija, sadržanih u postojećim Java bean-ovima ili EJB. - Postavljanje (Deploy). Instaliranje web servisa u okruženjima za testiranje. - Testiranje (Test). Provera kvaliteta funkcionisanja web servisa, lokalno i u distribuiranom okruženju. - Razvoj (Develop). Razvoj klijentskih aplikacija. - Objavljivanje (Publish). Objavljivanje informacija o web servisu u UDDI registrima. Integrisanje poslovnog softvera primenom web servisa Dijagram sa primenom integracije dva poslovna informaciona sistema primenom web servisa je prikazan na slici dole. WSDL datoteke svakog poslovnog okruženja obuhvataju skup metoda, predstavljenih imenom, argumentima, tipom rezultata i poslovnom logikom, koje su dostupne autorizovanim korisnicima ili su javne. Slika 21. Primer integracije dva poslovna sistema posredstvom web servisa Sa stanovišta integracije izolovanih aplikacija i njihovih funkcija uz pomoć web servisa, oni se mogu organizovati na dva načina: uz pomoć orkestracije (Orchestration) ili koreografije (Choreography). Orkestracija se uobičajeno primenjuje u privatnim okruženjima (preduzeća) i podrazumeva postojanje centralni proces (koji takone može biti web servis) sa ulogom koordinacije i kontrole svih ostalih web servisa. Pritom, nijedan web servis, osim centralnog, nije svestan svoje uloge u orkestriranom okruženju. Slika 22. Orkestracija web servisa Sa druge strane, u javnim okruženjima, u okviru kojih postoji veliki broj korisnika usluga i veći nivo kolaboracije u ostvarenju nekog cilja, za integrisanje web servisa se primenjuje metod koreografije. Akteri koreografije su web servisi koji tačno znaju sa kim mogu razmenjivati poruke i kada. Dalji razvoj klijent server sistema i Interneta Originalna namena Interneta je bila povezivanje računara i razmena podataka. Zato su bili razvijeni protokoli koji su omogućili postizanje tog osnovnog cilja. Problem je što povezivanje računara neće biti jedini cilj globalne mreže u budućnosti i zato moraju da se pojave novi protokoli koji će omogućiti 110
ostvarivanje novih ciljeva. Kao što su personalni računari bili fenomen 80-ih godina prošlog veka, tako su multimedijalne i video aplikacije postale fenomen deceniju kasnije i početkom ovog veka. Zabava i digitalna tehnologija nastavljaju da se spajaju, namećući nove zahteve koje globalne mreže moraju da ispune. Servis plaćanja po gledanju je već dostupan kod kablovskih sistema, a dostupno postaje i prikazivanje videa na zahtev. Sve veći broj ljudi već uživa u real-time video igrama preko Interneta. Mobilnost je sledeći aspekat razvoja. U trenutnoj Internet zajednici najveći deo host računara nikada ne menja lokacije. Premeštaju se iz jedne kancelarije u drugu, ali to je problem lokalnog upravijanja. Iz perspektive Internet protokola, oni zadržavaju fiksne lokacije. Međutim, i to se menja. Mobilni računari i satelitske tehnologije obezbeđuju sredstva za komunikaciju dva uređaja u svim delovima sveta. Protokoli moraju da se razvijaju tako da omoguće povezivanje miliona parova uređaja sa proizvoljnih lokacija. Neki ljudi vide tekuće tehnologije, kao to su mobilni telefoni, pejđeri, PDA i prenosivi računari, kao uređaje koji će eventualno prerasti od uređaja za lične potrebe u uređaje koji mogu da ispune različite vrste zahteva. Iniciranje telefonskih poziva i prihvatanje poruka preko pejđera predstavljaju sasvim uobičajene funkcije, ali mnogi smatraju da će doći dan kada će ti uređaji omogućavati mnogo više. U kućama še možda postojati računarizovani uređaji sa kojima će moći da se komunicira. Ako se vraćate svom domu kasnije nego što ste planirali, mogli biste da iskoristite personalni komunikacioni uređaj za uključivanje svetla u kući, ili za uključivanje pećnice. Senzorski sistem može da pošalje signal ako ste zaboravili da zaključate sva vrata, ili da ugasite svetla, tako da biste mogli da to ispravite opet korišćenjem istog sistema. Možda ćete moći da uključite uređaj u prenosivi kompjuter i da preuzimate fajlove sa bilo kog udaljenog računara kojem imate pristup, bez korišćenja telefona. Sistem biste mogli iskoristiti i da nahranite svog sajber ljubimca koga ste ostavili kod kuće. Sve ove aplikacije bi zahtevale komunikacije nezavisne od mesta. Bezbednost je sledeći problem. Internet protokol nije preterano siguran. Zbog toga su za većinu aplikacija veoma bitne lozinke, tehnike autentifikacije i firewall-i. Ljudi prepoznaju da paketi koji stižu na Internet mogu da stignu doslovno iz bilo kog dela sveta i zato su za zaštitu resursa neophodne veoma jake mere zaštite. U poslednjih nekoliko godina svedoci smo raznih prevara i upada na privatne kompjutere, tako da je svima jasno da zaštita uvek mora da bude prioritet broj jedan. I pored svega toga, najvažniji cilj kod razvoja svakog novog protokola je mogućnost koegzistencije sa tekućim sistemima. Najveća prepreka za uvođenje novih tehnologija u računarstvo je osiguravanje konkurentnog izvršavanja sa postojećim tehnologijama.
111