September 4, 2017 | Author: Dragana Stankić | Category: N/A
FAKULTET ZA POSLOVNU INFORMATIKU
Mihajlo Stankić, dipl. inž.
ELEKTRONSKE POSLOVNE KOMUNIKACIJE
PRAKTIKUM { primena .NET tehnologije u Web programiranju }
2010.
Elektronske poslovne komunikacije –PRAKTIKUM
Sadržaj P r e d g o v o r ............................................................................................... 5 Arhitekture elektronskog poslovanja (eBusiness) ......................................... 7 Troslojni (višeslojni) sistemi............................................................................. 8 Tehnologije distribuiranih objekata.................................................................. 10 Problemi sa starijim protokolima ..................................................................... 11 Web kao platforma poslovnih aplikacija ...................................................... 14 Server Side Scripting ..................................................................................... 18 ASP – objektni model .................................................................................... 22 ASP – slabosti ............................................................................................... 23 Objektno orijentisano Web programiranje .................................................. 26 .NET (dot net) strategija ................................................................................ 27 XML (eXtensible Markup Language)................................................................. 31 AJAX (Asynchronous JavaScript and XML) ........................................................ 32 ASP.NET – deo Mikrosoftovog .NET Framework-a ...................................... 34 Šta je to zapravo ASP.NET? ............................................................................ 35 . NET Framework .......................................................................................... 37 Platformaska nezavisnost i jezička neutralnost .................................................. 42 HTML i Web kontrole ..................................................................................... 44 WEB servisi .................................................................................................. 46 Procesiranje .aspx stranice ............................................................................. 47 Opsezi imena ili imenski prostor (namespaces) ................................................. 50 Izvršavanje Web Stranica i Web Servisa ..................................................... 51 ASP.NET – prednosti ..................................................................................... 55 Tendencije u razvoju ASP.NET-a ..................................................................... 60 Web forme i AutoPostBack ............................................................................ 61 Serverske kontrole ........................................................................................ 63 Korisničke kontrole ........................................................................................ 66 Teme........................................................................................................... 67 Master Pages ................................................................................................ 69 Personalizacija i lokalizacija ............................................................................ 71 Visual Studio .NET ........................................................................................ 72
2
Elektronske poslovne komunikacije –PRAKTIKUM
IDE (Integrated Development Environment)..................................................... 75 Temelji prve aplikacije ................................................................................... 76 Transformacija HTML kôda na serveru ............................................................. 81 Tipovi serverskih kontrola .............................................................................. 81 Pristup bazi podataka .................................................................................... 82 Kodiranje ..................................................................................................... 83 Page_Load ................................................................................................... 84 SQL ............................................................................................................. 84 Postback ...................................................................................................... 85 Popunjavanje HTML liste ................................................................................ 86 Skrivena kontrola .......................................................................................... 87 HTML tabеlа ................................................................................................. 87 Svojstva Web kontrola ................................................................................... 89 DataGrid (GridView) ...................................................................................... 90 Events ......................................................................................................... 92 AutoPostBack ............................................................................................... 92 Open Source rešenja .................................................................................... 93 MySQL ......................................................................................................... 94 Aplikativni Server(i) ................................................................................... 103 Web (HTTP) Server(i)................................................................................. 106 L A B O R A T O R I J S K E V E Ž B E ......................................................... 108 Vežba 1: Upoznavanje sa .NET razvojnim alatima ..................................... 110 Visual Studio – komponente ......................................................................... 111 Integrisano razvojno okruženje ..................................................................... 112 Terminologija objektno orijentisanog programiranja ........................................ 117 Vežba 2: Upoznavanje sa sintaksom i svojstvima Web stranice, kontrolama i objektima ASP.NET aplikacije .................................................................... 120 Svojstva i sintaksa....................................................................................... 120 ASP.NET i ADO.NET – konektovani i diskonektovani scenario ........................... 140 Vežba 3: Kreiranje prostih Web formi kao demonstracija komunikacije sa Web serverom ............................................................................................ 152 Vežba 4: Modelovanje baze podataka jedne Web aplikacije .................... 165 Vežba 5: Fizička realizacija baze podataka eProdavnice .......................... 177
3
Elektronske poslovne komunikacije –PRAKTIKUM
Kreiranje baze podataka pomoću nezavisnog alata za modelovanje................... 177 Kreiranje SQL Server baze podataka korišćenjem MS SQL Server Management Studio Express alata .................................................................................... 188 Kreiranje SQL Server baze podataka korišćenjem Visual Studio server explorera. 197 Vežba 6: Realizacija dinamičke Web stranice za prikaz podataka iz izabrane SQL Server (MySQL) tabele ........................................................................ 202 Vežba 7: Kreiranje Web stranice za ažuriranje i brisanje podataka u odabranoj SQL Server tabeli ...................................................................... 210 Vežba 8: Kreiranje osnovnog menija za navigaciju ................................... 221 Vežba 9: Realizacija Web forme za unos novog i ažuriranje tekućeg sloga (reda) – Details View ................................................................................. 231 Vežba 10: Realizacija novog projekta – novi Web sajt .............................. 239 Master strane Web sajta .............................................................................. 243 Povezivanje sa bazom podataka.................................................................... 248 Vežba 11: Realizacija osnovnih sigurnosnih kontrola Web sajta .............. 252 Autentifikacija, Autorizacija, Korisnički nalozi, Uloge ........................................ 252 Vežba 12: Realizacija Web stranice za prikaz i ažuriranje povezanih (master-detail) tabela ................................................................................ 259 Vežba 13: Programiranje eCommerce funkcijonalnosti u sklopu Web aplikacije eProdaja..................................................................................... 272 eKatalog proizvoda ...................................................................................... 274 Identifikacija kupca ..................................................................................... 279 Vežba 14: Realizacija eShoppingCart (eKorpa za naručivanje) ................ 281 Prijava kupca .............................................................................................. 285 Prikaz funkcionisanja korpe .......................................................................... 288 Administracija ............................................................................................. 290 Vežba 15: Moguće varijante plaćanja po zaključenju narudžbe ................ 295 Rad s računima evidentiranih kupaca............................................................. 296 Plaćanje ..................................................................................................... 296 Online autorizacija naplate karticama ............................................................ 297 Postupak korišćenja PayPal servisa za online plaćanje ..................................... 298 Literatura ................................................................................................... 312
4
Elektronske poslovne komunikacije –PRAKTIKUM
Predgovor U ovom Praktikumu prikazane su osnovne funkcionalnosti .NET tehnologije čika primena predstavlja trend u razvoju aplikativnog softvera uopšte, a posebno Web baziranih poslovnih aplikacija. Praktikum je prvenstveno namenjen studentima Fakulteta za poslovnu informatiku Univerziteta "Sinergija" u Bijeljini, mada može biti od koristi i svima onima koji žele da upoznaju savremene tehnike izrade Web aplikacija odnosno dinamičkih Web sajtova. Kompletan sadržaj Praktikuma ima univerzalan cilj - da se prenese znanje i višegodišnje iskustvo izvođača vežbi na studente i da im se daju osnove za samostalno dizajniranje poslovnih Web aplikacija u budućem profesionalnom angažmanu. U uvodnom delu, pored osvrta na savremene eBusiness modele, data su osnovna obeležja novog razvojnog koncepta u kome se Web prepoznaje kao platforma poslovnih aplikacija. Praktikum zatim prikazuje .NET familiju Mikrosoftovog softvera: .NET Framework, ASP.NET i Visual Studio .NET. Slede osnovni postupci dizajniranja jednog poslovnog modela baze podataka, sama fizička realizacija te baze, načini povezivanja sa bazom i naravno, kreiranje gradivnih elemenata konkretne Web aplikacije. Sve je to demonstrirano serijalom laboratorijskih vežbi, tokom kojih se postupno izgrađuje jedna vrsta e-commerce Web sajta gde se posebno izdvaja eShoppingCart (virtuelna korpa za online kupovinu) kao tipično rešenje u savremenoj elektronskoj trgovini. Smisao svake vežbe je upoznavanje studenata sa postupcima i mogućnostima kreiranja jednostavnih elemenata dinamičkog Web sajta upotrebom savremenog grafičkog okruženja za dizajn i programiranje kakav je Visual Studio. U skladu sa studijskim programom predmeta Elektronske poslovne komunikacije, svi primeri u Praktikumu, obrađeni kroz formu laboratorijskih vežbi, realizovani su .NET tehnologijom što podrazumeva upotrebu ASP.NET-a, MS SQL SERVER baze podataka i C# programskog jezika za programiranje logike koja se izvršava na strani servera. Uporedo sa primerima zasnovanim na Mikrosoftovom softveru, sugerisana su i neka rešenja iz Open Source domena kao što je naprimer, upotreba MySQL DBMS. Uložen je određeni napor da primeri, realizovani kroz konkretne vežbe, budu izloženi prikladnim logičkim tokom koji diktira sama .NET tehnologija. Ukoliko se izgrađuju predloženim redosledom predstavljaće osnovne elemente kompletnog,
5
Elektronske poslovne komunikacije –PRAKTIKUM
potpuno upotrebljivog Web sajta koji se uz nekoliko dodatnih funkcionalnosti i manje modifikacije u segmentu grafičkog dizajna, može primeniti u praksi. Svi saveti, uočene greške i eventualne primedbe na izloženu materiju su dobrodošli, a mogu se uputiti na e-mail adresu:
[email protected]. Koristim priliku da se zahvalim kolegama - saradnicima na sugestijama pri izboru praktičnih primera za ovaj Praktikum. Posebnu zahvalnost dugujem recenzentu, predmetnom profesoru dr. Dušanu Regodiću na metodološkim savetima i sveukupnoj pomoći bez koje bi ovaj Praktikum bio nedorečen. Bijeljina, oktobar 2010. godine
6
Autor
Elektronske poslovne komunikacije –PRAKTIKUM
Arhitekture elektronskog poslovanja (eBusiness) Najefikasniji modeli arhitektura elektronskog poslovanja izgrađeni su na osnovu pažljive analize načina na koji kompanije posluju. Tokom analize se dolazi do zaključka da implementacija određene e-biznis arhitekture pruža mogućnost da njihovo poslovanje postane u celini efikasnije. Kada kompanija identifikuje osnovne funkcije svog poslovanja, tada treba da odluči koje od tih funkcija može konvertovati u mrežne aplikacije, posmatrajući ceo model sa praktičnog stanovišta, sa stanovišta troškova kao i onoga šta se time dobija. Tek pošto se odluči koji procesi mogu da se prevedu u uspešne e-biznis aplikacije, kompanija može početi da bira tehnološke komponente. Po definiciji, arhitekturu e-poslovanja čine svi delovi poslovanja kompanije u kojima se koristi računarska mreža da bi se obavio neki deo transakcije. Tipična arhitektura se sastoji od aplikativnih rešenja za naručivanje, obračunavanje, isporuku i realizaciju, kao i od mrežne infrastrukture koja sve to povezuje i naravno, bezbednosnog sistema. Dobro je početi od onih oblasti koja mogu lako da se transformišu u mrežnu aplikaciju. Na taj način kompanija lako može da stekne iskustvo u elektronskom poslovanju i eventualno ostvari brz povraćaj investicija. Druga dobra polazna tačka su one oblasti u kojima mogu da se smanje troškovi uz pomoć automatizacije koju donosi elektronsko poslovanje. Arhitekturu e-poslovanja čini nekoliko osnovnih hardverskih i softverskih kategorija. To su mrežna infrastruktura, Web serveri, same aplikacije i serveri aplikacija, baze podataka i serveri transakcija, nasleđena integracija i operativno okruženje na kome se sve to zasniva. Kako e-poslovanje osnovne kompanijske resurse stavlja na raspolaganje širem auditorijumu, odluke o sistemu bezbednosti su takođe važne. Kompanija mora da unapredi već postojeće bezbednosne mere ako one nisu adekvatne za elektronsko poslovanje - što obično jeste slučaj. Kompanija takođe treba da integriše novi sistem za e-poslovanje sa alatima za automatizaciju poslovanja koje već ima, kao što su planiranje korporativnih resursa ili sistemi obračuna i fakturisanja. Slika 1 prikazuje kako napredni sistemi za e-poslovanje moraju da budu potpuno
7
Elektronske poslovne komunikacije –PRAKTIKUM
konzistentni i da se sastoje iz minimalno tri osnovne tehnološke komponente integrisana mrežnim hardverom: § korisnički interfejs zasnovan na Web čitaču kao prvi tehnološki sloj, pri čemu nije bitno koristi li se Internet ili privatna intranet mreža; § sloj poslovne logike u sredini i § u pozadinskom delu infrastruktura baze podataka.
Slika 1: Tehnološke komponente savremene Web aplikacije
Troslojni (višeslojni) sistemi Preteča savremenih računarskih sistema su mainframe sistemi, veliki centralni računari koji su između ostalog integrisali bazu podataka i na koje su bili priključeni "glupi" terminali za manipulaciju informacijama iz baze, predstavljajući tako korisnički interfejs. Ovakvi sistemi bili su neraskidivo vezani, u ekonomskom i eksploatacionom smislu, za firmu koja je proizvodila i isporučivala i hardver i softver. Proširivanje i nadogradnja sistema bila je redovno skupa i teška, uvek je postojalo ograničenje na postojeću hardversko-softversku platformu, a često samim tim i na jednu firmu koja je održavala sistem. Takvi sistemi su bili poznati kao dvoslojni (twotier), zato što je prezentacioni nivo (sistem terminala) bio neposredno vezan i praktično neodvojiv od nivoa podataka (DBMS/Operativni sistem).
8
Elektronske poslovne komunikacije –PRAKTIKUM
Razvoj personalnih računara i komunikacionih tehnologija, pre svega Internet tehnologija, uslovili su potrebu za nadogradnjom postojećih sistema i tesnu povezanost sa korisnicima, bilo da su to zaposleni u organizaciji, potrošači, drugi delovi organizacije, srodne institucije ili poslovni partneri. Za takvu zamisao rešenje je nađeno u troslojnim (three-tier) i višeslojnim (multi-tier) sistemima. Delovi aplikacije koji su zaduženi za poslovnu logiku instaliraju se na posebnom serveru, PC računari, mobilni uređaji i sl. obuhvataju korisnički interfejs (presentation layer), a baza je izdvojena na poseban server (database-tier) - Slika 2. Na taj način su olakšani instalacija i održavanje softvera. Kako su korisnički programi postali mali, pitanje njihove distribucije rešeno je priključenjem na mrežu. Nadogradnja postojećih aplikacija je postala bezbolna – po priključenju na mrežu, aplikacija detektuje da postoji nova verzija, preuzme je sa mreže, instalira ja i nastavlja rad. Aplikacije na srednjem nivou se lako administriraju, a svaka promena na serveru ne zahteva promenu na korisničkim aplikacijama.
Slika 2: Koncept savremene troslojne arhitekture Praktično, ostvaruje se nezavisnost u smislu odvojenog razvoja klijentskih aplikacija, dodavanja novih operacija unutar poslovne logike ili intervencija na samoj bazi. Ukoliko na srednjem nivou ima više računara sa kojima korisnik može da komunicira u zavisnosti od tipa obrade, govorimo o višeslojnim (multi-tier) sistemima. Komponente aplikacije su tada distribuirane po različitim računarima: ulazimo u eru arhitekture distribuiranih objekata.
9
Elektronske poslovne komunikacije –PRAKTIKUM
Tehnologije distribuiranih objekata Šta je to distribuirani objekat? Prosta definicija kaže da je to objekat koji se definiše na jednom sistemu, a može se koristiti i na drugom. U ovoj komunikaciji može učestvovati jedan ili više računara. Cilj je da se obezbedi integracija servisa sa različitih platformi. Sistem zasnovan na distribuiranim objektima je skup objekata koji jasno razdvaja one koji zahtevaju usluge (klijenti) od onih koji pružaju usluge (serveri) uz pomoć dobro definisanog enkapsulirajućeg interfejsa. Drugim rečima, klijenti su odvojeni od implementacije servisa, npr. zapisa podataka i izvršnog kôda. Ovo je jedna od najbitnijih razlika koja izdvaja model zasnovan na distribuiranim objektima od čistog klijent–server modela. Primenom distribuiranih objekata mogu se kreirati klijent–server aplikacije sa troslojnom ili višeslojnom arhitekturom, koje omogućavaju implementaciju sinhronih ili asinhronih rešenja za Internet, intranet i/ili ekstranet. S obzirom da se sistemi zasnovani na distribuiranim objektima razvijaju već deceniju unazad, na tržištu postoji niz 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 na različitim komunikacionim modelima za udaljeno pozivanje komponenata do danas su jasno identifikovali sledeće tehnologije:
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, ne podržava ih niko 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.
10
Elektronske poslovne komunikacije –PRAKTIKUM
CORBA / IIOP CORBA (Common Object Request Broker Architecture) je konkurentska specifikacija kreirana od strane Object Management Group, grupe IT firmi koje razvijaju srednji sloj. 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 nezavisnost 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-a (Internet Inter-ORB Protocol). Mogućnosti CORBA objekata definisane su pomoću IDL (Interface Definition Language). EJB / RMI over IIOP EJB (Enterprise JavaBeans) je 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 između različitih sistema, EJB koristi varijantu IIOP (Internet Inter-Orb Protocol) nazvanu RMI preko IIOP (Remote Method Invocation over IIOP). RMI je protokol rezervisan samo za Javu. SOAP 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 između 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, a klijentska aplikacija na iMac-u pristupa objektu na mainframe računaru. Sve ovo postaje transparentno i ne zahteva bilo kakvu posebnu administraciju. Problemi sa starijim protokolima Glavni problem kod starijih protokola, kao što su DCOM, IIOP i RMI/IIOP, nalazi se u nekompatibilnosti (teško prilagođavanje datih protokola), tako da različite aplikacije međusobno ne mogu da komuniciraju. Druga bitna stvar je da ne
11
Elektronske poslovne komunikacije –PRAKTIKUM
funkcionišu u prisustvu firewall-a, što znači da aplikacije sa raznih lokacija ne mogu uvek međusobno da komuniciraju. COM+/DCOM
IIOP
RMI/IIOP
SOAP
Format
Binarni
Binarni
Binarni
Unicode
Platforma
Windows
Unix
Nezavisan
Nezavisan
Programski jezik
Nezavisan
Nezavisan
Java
Nezavisan
Izrada
Moderna(RAD)
Složena
Moderna
Jednostavna
Sigurnost
Win NT Security
CORBA security service
Java security
HTTP/SSL, XML signature
Lociranje
Referenca
URL
Opis tipova podataka
IDL
XML Schemas
Događaji
COM+ Events
CORBA event service
SOAP ne pokušava da zameni bilo koji drugi distribuirani sistem. SOAP je manje moćan, ali je impresivan u svojoj jednostavnosti i proširivosti, što je veoma korisno s aspekta potrebe za što širim prihvatanjem, i od strane kompanija, i od strane programera. Jednostavne stvari se mnogo brže usvajaju i prihvataju. Web servisi i druge tehnologije su kreirani iz različitih razloga korišćenja, iako su u prirodi komplementarni. CORBA, COM+, DCOM, EJB omogućavaju razvijanje infrastrukture srednjeg sloja, sa snažnim i skalabilnim funkcionalnostima, za kreiranje informacionih sistema. Za mnoge kompanije, proces prelaska poslovnih funkcija na novu, savremenu WEB tehnologiju je deo reinženjeringa tih funkcija radi poboljšanja njihove efikasnosti, boljeg reagovanja korisnika i bolje strukture troškova. Na slici 3. su prikazane komponente e-poslovanja (eBusiness) odnosno, dat je prikaz kako su povezani kritični poslovni sistemi direktno sa klijentima, zaposlenima, partnerima i dobavljačima putem intraneta, extraneta ili najčešće Interneta. Treba imati u vidu da je svrha svake tehnologije da zadovolji određenu ljudsku potrebu. Čim se to promeni, bilo da tehnologija postane sama sebi svrha, navedena potreba nestane, nađe se kvalitetnija ili jeftinija tehnologija koja rešava isti zadatak ili se desi nešto treće - ta tehnologija jednostavno umire. Tako su pogon na električnu
12
Elektronske poslovne komunikacije –PRAKTIKUM
energiju i motori sa unutrašnjim sagorevanjem zamenili parnu mašinu, tako je telefonija zamenila telegraf i tako dalje.
Slika 3: Komponente e-poslovanja Ono što je bitno u celoj priči je da se stvari menjaju. Ljudske potrebe se menjaju, nestaju, šire se ili smanjuju. A tehnologije za njihovo rešavanje prate te promene, evoluiraju i generalno teže da budu bolje, isplativije, jednostavnije, zdravije. Internet kao tehnologija (tačnije skup tehnologija) nije nimalo drugačiji. I on evoluira, raste, menja se, a zanimljivo je da se to dešava daleko brže nego kod većine tehnologija koje su mu prethodile. Internet je za nekoliko godina napravio rast za koji je mnogim tehnologijama pre bilo potrebno niz decenija (televiziji na primer). Pored velike brzine kojom raste zanimljivo je i to da dobar procenat posetilaca (njih oko 70%) vreme na Internetu provodi na uštrb vremena koje su ranije provodili ispred televizora ili čitajući štampu. Prema nekim istraživanjima, sam Internet preti da pretekne medije kao što su televizija i štampa u izrazito urbanim sredinama tehnološki visoko razvijenih zemlja. Internet je pre svega osmišljen za razmenu informacija. Zahvaljujući svojoj fleksibilnosti i dinamici kojom se računari razvijaju uspeo je da integriše stvari koje su do tada bile nezamislive. Uspešna kombinacija multimedijalnog sadržaja kao što je video i tekst nije se mogla jednostavno izvesti nigde drugde. A to je na najpoznatijem Internet servisu – WEB-u danas sasvim normalno. Čitate portfolio neke kompanije i onda klikom na jedan link gledate snimak njihovog poslovnog prostora, proizvodnih pogona i zaposlenih kako rade. Pogledajte samo sajtove sa implementiranom, takozvanom Flash tehnologijom gde se pored bogate animirane grafike i interakcije istovremeno emituju muziki sadržaji i slično.
13
Elektronske poslovne komunikacije –PRAKTIKUM
Web kao platforma poslovnih aplikacija Web je jednostavno sadržajno bogat medijum. Tako je osmišljen i evoluirao je u odličan, danas možda čak i najbolji izvor informacija na Internetu. Pored samog sadržaja koji dominira Web-om, Internet se razvio i u specifičan uslužni medijum, gde ljudi mogu da upravljaju dokumentima, pretražuju razne baze podataka, međusobno komuniciraju i tako dalje, a za sve je potreban samo Web čitač (Web browser). Danas su uobičajni sajtovi gde se možete logovati, podesiti izgled sajta prema svojim potrebama, pretraživati brzo i jednostavno arhive, vršiti razne kalkulacije, konverzije i slično. Takve stvari su definitvno danas deo online svakodnevice. Zbog specifičnosti okruženja u kome Internet servisi pružaju takve usluge oni sami predstavljaju poseban tip aplikacija: Web aplikacije. Sasvim sigurno, pojam WEB je već poznat iz apsolviranih studijskih sadržaja, ali ipak definišimo ga na jedan pragmatičan način. Web (WWW = World Wide Web) je u suštini distribuirani, interaktivni sistem izgrađen nad Internetom. Radi se dakle o usluzi koja se pruža putem Interneta (i intraneta). Ta usluga je zapravo mogućnost pregledanja (engl. browse) takozvanih Web stranica. Komunikacija se odvija HTTP protokolom, a osnovna karakteristika se ogleda u činjenici da sve ide u paketima odnosno podaci se dele na pakete i šalju mrežom.
Slika 4: Koncept statičkih WEB stranica
14
Elektronske poslovne komunikacije –PRAKTIKUM
Jedna od najupečatljivijih karakteristika Interneta je njegova dinamičnost i brzina kojom se sadržaji na njemu menjaju. Što se neki sajt češće menja i što više raste potrebno je znatno više vreme da se određene izmene izvedu. U takvim slučajevima, a posebno na mestima gde su potrebne specifične funkcionalnosti Web sajta, statične stranice se zamenjuju dinamičkim stranicama. Najočiglednija razlika među njima je ta što dinamičke stranice mogu da odgovore na razne zahteve korisnika umesto da se prikazuju samo onakvim kakvim ih je neko izvorno napravio. Kada, recimo, tražimo arhivu vesti za mesec januar 2010. godine na nekom sajtu generalno se mogu desiti dve stvari: 1.
Da budemo usluženi stranicom koja je namenski, "ručno" napravljena (sakupljene su vesti za januar i kao takve objavljene). 2. Da aplikacija "razume" da tražimo vesti za januar mesec 2010. godine, automatski ih pronađe u bazi vesti za 2010. godinu, izdvoji ih i prikaže.
Prednosti drugog pristupa su očigledne, posebno ako imamo na umu da neki sajtovi mogu da budu toliko veliki da je potrebna mala armija ljudi koja bi ih održavala. Naravno, treba napomenuti da na "klasičan" način neke stvari i ne mogu biti izvedene (Web-mail aplikacija, e-commerce rešenja, itd.). Scenario po kome funkcionišu Web aplikacije je prilično jednostavan. Mi (tačnije, naš browser) šaljemo zahtev Web serveru koji prosleđuje upit Web aplikaciji, ona ih obradi, a rezultat vraća serveru, pa on opet nazad browseru (Slika 5.). U toj situaciji uopšte ne znamo da li smo usluženi statičkom stranicom ili je kôd koji naš browser prikazuje generisan od strane Web aplikacije. Nije ni bitno, dokle god prosleđeni kôd razume i može da prikaže naš browser. Najbitniji zaključak koji se prirodno nameće je: Web aplikacije se ponašaju kao sajtovi. Razlog je vrlo jednostavan: one jesu sajtovi. I desktop aplikacije kao i Web aplikacije imaju jedan zadatak: rešavanje određenog ljudskog problema. Iako se pristup problemu i način na koji ga rešavaju ne razlikuje bitno između ova dva modela aplikacija, okruženje u kome se obe izvršavaju i način interakcije sa korisnikom pravi veliku razliku među njima. Oba koncepta donose niz prednosti i mana u odnosu na drugi, a među najupečatljivije odlike Web aplikacija spadaju: - Aplikacija je samo na jednom mestu
15
Elektronske poslovne komunikacije –PRAKTIKUM
Slika 5: Dinamički koncept sa aplikacionim serverom Desktop aplikacije moraju biti instalirane na svim klijent računarima da bi se uopšte mogle koristiti. Kod Web aplikacije to nije slučaj jer se ona nalazi na jednom mestu (serveru ili grupi servera). Ovim se uklanjaju mnogi problemi, pre svega problemi sa distribucijom i nadgradnjom aplikacije. Bitna stvar je da u slučaju Web aplikacija korisnik nikada ne dobija samu aplikaciju, već samo interfejs ka njoj što je u suštini sve što mu i treba. Ova činjenica znatno olakšava život obema stranama (i autorima i korisnicima Web aplikacija). - Sve što vam treba je browser Ovo je možda najbitnije obeležje Web aplikacija. Da biste koristili neku od ovih aplikacija potreban i dovoljan vam je samo Web browser. Ovo povlači niz prednosti: - većina zaposlenih već zna da koristi Web browser,
16
-
Web aplikacija se ponaša kao sajt sa čim su skoro svi zaposleni već imali priliku da se sretnu,
-
klijent računar nema posebne hardverske ili softverske zahteve osim onih koje mu nameće sam browser, a one su u principu minimalne,
-
aplikaciji se može pristupiti sa bilo kog mesta na planeti pod uslovom da namenski nije izolovana (radi samo u okviru kompanijskog intraneta),
Elektronske poslovne komunikacije –PRAKTIKUM
-
klijent nema potrebe da brine o instaliranju bilo kakvih dodatnih funkcionalnosti (upgrade, ispravke grešaka i slično), sve izmene postaju dostupne korisnicima onog trenutka kada su implementirane u aplikaciju.
Kod desktop aplikacija korisnik je često dužan da instalira aplikaciju na svoj računar, konfiguriše je i da se kasnije stara da je sve u redu i da radi. Na ovaj način klijent nije samo korisnik aplikacije već i njen administrator. Kod Web aplikacija tog problema nema. Korisnik je samo korisnik, ne i osoba koja održava aplikaciju. Nema glavobolje oko rezervnih kopija podataka, "padanja" aplikacije, softverske nekompatibilnosti i sličnih stvari koje često znaju biti veliki problem, posebno neiskusnim korisnicima računara. Nadalje, kod Web aplikacija ne morate brinuti o tome da li će vam one instalirati neki dodatni, maliciozni (neželjeni) softvеr (virus i sl.) ili na bilo koji način ugroziti stabilnost vašeg računara. Web aplikacije su sigurne koliko i browser na vašem računaru pošto on predstavlja sponu između njih i sistema u celini. Slika 6. prikazuje bogatstvo klijentskih programa – Web browsera koje svakodnevno upotrebljava 1,7 milijardi korisnika na koliko je procenjena Internet populacija početkom 2010. godine. IE – Microsoft Internet Explorer Mozilla Fire Fox Mozilla Sea Monkey Netscape – nema tehničku podršku od januara 2008. Google Chrome Opera
Apple Safari
Slika 6: Najpoznatiji Web browser-i
17
Elektronske poslovne komunikacije –PRAKTIKUM
Server Side Scripting Server side scripting je Web server tehnologija koja omogućava da se korisnikov zahtev ispunjava pomoću skripta koji se izvršava na serverskoj strani kako bi se generisale dinamičke HTML stranice. Uobičajno se koristi da bi se interaktivne Web stranice povezale sa bazama podataka, radi identifikacije korisnika, ažuriranja sadržaja, stvaranja raznih diskusionih grupa i još mnogo toga. Razlika između skriptovanja na serverskoj i korisničkoj strani je u tome što se na korisničkoj strani skriptovi izvršavaju u Web browseru korisnika, najčešće je u pitanju JavaScript. Tokom prvih godina Web-a, sve se obavljalo preko C programskog jezika, Perla ili Shell skripti (skripte pisane za komandni interpreter operativnog sistema) pomoću Common Gateway Interface-a. Te skripte su bile izvršavane od strane operativnog sistema, a rezultati prosleđivani Web serveru. Danas ovi, i drugi online scripting jezici, kao što su ASP i PHP se najčešće direktno izvršavaju od strane Web servera ili preko modula (mod_perl i mod_php) koji se dodaju Web serveru. I jedan i drugi oblik se može iskoristiti da se napravi kompleksan Web sajt, ali se drugi način pokazao efikasnijim, zbog bržeg izvršavanja i manjeg korišćenja računarskih resursa. Pregled server side scripting tehnologija:
18
§
ASP – Active Server Pages, rešenje firme Microsoft, preko više jezika se može ostvariti, mada se najviše koristi VBScript (koji se može koristiti i kao client side scripting);
§
ASP.NET – naslednik ASP-a, deo Mikrosoftove .NET platforme;
§
ColdFusion – nekada u vlasništvu Macromedije, danas deo Adobe-ove porodice, ColdFusion je programski jezik baziran na tagovima, sličan HTMLu;
§
JSP – Java Server Pages, vlasništvo firme Sun Microsystems (2010. godine Sun prelazi u vlasništvo Oracle Corporation);
§
SSI – Server Side Includes, deo Apache Web servera;
§
Perl - nije specijalno dizajniran za server side scripting, ali se često koristi preko CGI ili specijalnog Apache modula;
§
Python i TCL - još dva jezika koji se koriste preko CGI;
§
PHP – veoma popularno open source rešenje.
Elektronske poslovne komunikacije –PRAKTIKUM
Nakon nekoliko loših početaka (ADC, HTX), Mikrosoft se fokusirao na Active Server Pages tehnologiju (ASP) da bi olakšao razvoj dinamičkih HTML stranica i interaktivnih Web aplikacija. Kao što je već izneto, za podršku ASP stranicama, na server računar ste uz Internet Information Server (IIS) morali instalirati i ISAPI, koji je presretao sve zahteve za stranicama sa .asp ekstenzijom. Zahtevi i stranice na koje su oni upućivali obrađivani su unutar ASP run-time okruženja. Takvo okruženje je omogućavalo ubacivanje programskog kôda u HTML stranice. Skriptovi su se nalazili unutar specijalnih blokova ograničenih sa znakovima ili unutar elemenata koji su imali runat=server atribut. Na osnovu korisničkog zahteva, ovi skriptovi su procesirani i kao rezultat su kreirane HTML stranice koje su potom prosleđivane korisniku.
Slika 7: Koncept Web aplikacije sa troslojnom arhitekturom
19
Elektronske poslovne komunikacije –PRAKTIKUM
Pogledajmo kako izgleda ASP kôd: Dobro došli u svet dinamičkog Web-a! Dodali smo jednu liniju izvršnog kôda da bismo demonstrirali način na koji ASP prikazuje dinamički sadržaj. Korisnik nikada ne vidi kôd između znakova. Kada server primi zahtev za ASP stranicom, on će najpre izvršiti ASP kôd, a rezultat će biti obična HTML datoteka koju šalje nazad korisniku. Slika 8. prikazuje kako funkcija Response.Write() ispisuje podatke u izlazni HTML dokument, dok je prikaz trenutnog datuma i vremena (časovnik na serveru) rezultat funkcije Now( ). Pogledajmo sada kako izgleda HTML kôd vraćen klijentovom čitaču:
Dobro došli u svet dinamickog Web-a! 22.12.2009 16:01:48
Slika 8: Primer jednostavne ASP Web aplikacije
20
Elektronske poslovne komunikacije –PRAKTIKUM
Budući da je ASP kôd isprepleten s HTML kôdom, a za razvoj ASP aplikacija nije postojala adekvatna razvojna okolina, programeri su lako mogli praviti greške. Analizirajmo sledeći jednostavan primer ASP kôda za generisanje proste HTML tabele: Rb. Naziv
Programiranje i ovako bezazlenog primera moglo je završiti kobno po Web server. Ako ste samo zaboravili napisati liniju za uvećanje brojača (i=i+1) - blokirali bi ste server tako stvorenom beskonačnom petljom. Slika 9. prikazuje rezultat ispravno napisanog kôda .
21
Elektronske poslovne komunikacije –PRAKTIKUM
Slika 9: ASP stranica – primer jednostavnog tabelarnog prikaza
ASP – objektni model ASP objektni model sastojao se samo od šest objekata: Request, Response, Session, Application, ObjectContext i Server. Request objekt se koristio za čitanje podataka koji su se nalazili unutar HTTP zahteva za stranicom. Response objekt je omogućavao ubacivanje podataka (uključujući i HTML cookies) ili redirekciju zaglavlja u povratnom nizu podataka koji je upućen nazad na korisnički browser. Prilikom prvog korisničkog zahteva za ASP stranicom kreirao se session objekt. On je ostajao aktivan sve do isteka predefinisanog vremena od poslednjeg zahteva istog korisnika. Session objekt se koristio za čuvanje podatka i objekata prilikom višestrukih zahteva za ASP stranicama istog korisnika. Session objekat je zasnovan na cookie-ima koji služi za manipulisanje promenljivim među stranicama. Application objekt je funkcionalno sličan session objektu, s jednom razlikom. U njemu su sačuvani podaci i objekti svih korisnika od trenutka pokretanja aplikacije do njenog zatvaranja. Pomoću njega možete pisati kôd koji se automatski izvršava prilikom startovanja i zatvaranja ASP aplikacije. ObjectContext je korišten za potvrđivanje ili prekidanje MTS (Microsoft Transaction Server) i COM+ (Component Object Model) transakcija. Server objekt je
22
Elektronske poslovne komunikacije –PRAKTIKUM
omogućavao kreiranje COM objekata, enkodiranje HTML i URL stringova, te za pronalaženje stvarnih lokacija datoteka u odnosu na virtuelne putanje. Većina ASP Web stranica se pišu u VBScript-u, ali se i drugi Active Scripting jezici mogu izabrati pomoću naredbe @Language. JScript je drugi jezik koji je podržan. Perl i ostali jezici se mogu dodati, ali tek uz pomoć third-party endžina. ASP – slabosti ASP model je bio uspešan i opšte prihvaćen, ali i kao takav je patio od mnogih značajnih nedostataka koji su neminovno doveli do razvoja savremenijeg i daleko funkcionalnijeg ASP.NET-a. Svaki put kada je korisnik pristupao ASP stranici, ASP kôd se interpretirao liniju po liniju. Ovo ste mogli zaobići samo kreiranjem ActiveX DLL datoteka u Visual Basicu, ali jednom pozvani DLL ostajao je u memoriji sve do spuštanja Web servera. Ako vam Web server fizički nije bio dostupan, postupak registracije predmetnih DLL-ova je bio gotovo nemoguć bez pomoći administratora "s druge strane" mreže. Stoga je održavanje ASP aplikacija bilo prilično mukotrpno. Budući da je ASP programski kôd bio isprepleten s HTML kôdom, Web programerima i dizajnerima bilo je gotovo nemoguće raditi svoj deo posla, a da se pri tome ne "petljaju" u tuđi posao. Nimalo manji nedostatak predstavljala je i činjenica da nije postojala kvalitetna integrisana razvojna platforma koja bi olakšala izradu i testiranje ASP aplikacija. Microsoftov InterDev, Macromedijin Visual UltraDev i ostali alati olakšali su razvoj, ali se funkcionalnošću nikada nisu približili razvojnim alatima za Windows aplikacije. Kako su se za razvoj tipične ASP stranice kombinovale mnoge različite tehnologije (VBScript, JavaScript, Cascading Style Sheets, Dynamic HTML, ADO, XML, XSL), programeri su se većinom oslanjali na jednostavan Notepad ili sličan editor. Uobičajno je da se ASP stranice ponovno učitavaju kako korisnik unosi i selektuje podatke. Da prilikom ponovnog učitavanja korisnik ne bi izgubio ono što je prethodno uneo, bilo je potrebno napisati programski kôd koji prihvaća podatke i prilikom ponovnog učitavanja stranice šalje ih korisniku. Kada su u pitanju kompleksne stranice s velikim brojem objekata, pisanje ovog kôda bilo je iscrpljujuće i vrlo složeno. Zatim, prilikom razvoja intranet rešenja, moglo se pretpostaviti da svi korisnici imaju instaliranu noviju verziju browsera, naprimer Internet Explorer 6.0. U slučaju Internet rešenja - to nije dolazilo u obzir. Ne želimo li ograničiti svoje Web stranice isključivo na osnovne HTML mogućnosti, moramo pisati kôd koji detektuje
23
Elektronske poslovne komunikacije –PRAKTIKUM
tip i verziju korisničkog browsera i prilagođava mu HTML kôd. Ako želimo podržavati više različitih browsera, stvari će se prilično iskomplikovati. Napomenimo samo da podrška za mobilne uređaje (PDA, GSM telefoni ...) nije ni postojala. Svedoci smo korenitih promena koje su potresale Web u zadnjih 15 godina. Do pre desetak godina Web sajt je bio jedan direktorijum na nekom serveru u kome su se nalazili međusobno povezani dokumenti. Nikakve dinamike među njima nije bilo. Kako se Web razvijao polako se počela ukazivati potreba za moćnijim rešenjem, koje će uneti više dinamike i olakšati razvoj i održavanje Web sajtova. Tako su nastali dinamički sajtovi iza kojih stoje Web aplikacije kakve sе danas najčešće sreću. Nastali su portal sistemi, sistemi za upravljanje sadržajem, alati za upravljanje projektima, ekomerc i e-banking rešenja te mnoge druge manje ili više kompleksne aplikacije. Ono što je programerima donedavno nedostajalo je mogućnost direktnog odgovora na korisnikov zahtev bez potrebe za ponovnim učitavanjem kompletne stranice. Zahvaljujući AJAX1 konceptu programeri su napokon dobili i tu mogućnost, a jedan od pionira tog pokreta je Google sa svojim servisima kao što su GMail i Google Maps. Ohrabreni ovim potezom, programeri su počeli AJAX prebacivati i na .NET pa ćete na Internetu pronaći i varijantu Ajax.NET. Iskusniji "arhitekti" su po pravilu i kritičari AJAX strategije razvoja Web stranica. Naime, svaka Web aplikacija se može apstrahovati u tri logička dela: prezentacioni deo (Web forme sa kojim rade korisnici ali i administratori), deo biznis logike koji bi trebao biti transparentan i na kraju, naravno, perzistencija (trajne biblioteke rutina). AJAX spaja prezentacioni deo sa biznis logikom kako bi se povećala efikasnost, brzina rada i jednostavnost upotrebe, ali time znatno smanjuje kvalitet informacionog sistema, posebno njegovu fleksibilnost. Može se dakle slobodno zaključiti da je AJAX idealno rešenje za male, jednostavne i često korištene servise. Mikrosoft-ov odgovor na pitanje kako pojednostaviti AJAX i iskoristiti sve njegove mogućnosti je ASP.NET 2.0 ATLAS tehnologija. Na klijentskoj strani ATLAS pruža impresivan skup JavaScript biblioteka koje sadrže objektno-orijentisane mogućnosti, HTML/HTTP za pozive procedura na udaljenim računarima, te komponente sa event-ima i često korištenim metodama poput drag and drop, auto completion, popup i mouse hovering. Na serverskoj strani Atlas se sastoji od ASP.NET serverske kontrole i ASP.NET servisa. Serverske kontrole su odgovorne za slanje klijentskih skripti na korisničku mašinu, čime se omogućava transparentan i nezavisan rad od korisničkog browser-a. 1
Asinhroni JavaScript + XML
24
Elektronske poslovne komunikacije –PRAKTIKUM
Servisi nam omogućavaju da čuvamo podatke o korisniku kao što je novi ASP.NET profiles koji je bio poznat pod nazivom Application i Session varijable. Personalizacija interfejsa, autentifikacija i uloge (roles) omogućuju da korisnik u zavisnosti od privilegija dobije manji ili veći broj kontrola na interfejsu i da iste složi po svom nahođenju.
Slika 10: Arhitektura savremene WEB aplikacije Ako se u obzir uzmu sve činjenice, budućnost Web aplikacija je zagarantovana, posebno kada poslovni korisnici uvide sve prednosti koje one donose (pojednostavljeno održavanje, platformska nezavisnost i tako dalje). Sa širim prihvatanjem AJAX koncepta Web aplikacije će postajati sve sličnije desktop aplikacijama. Naravno, neke desktop aplikacije nikada neće biti zamenjene Web aplikacijama (razvojna okruženja, grafički softverski alati i slično), ali sistemi za kolaboraciju i upravljanje projektima, skladišta dokumenata i sistemi za upravljanje dokumentima i sadržajem, webmail servisi, e-commerc rešenja itd. – to su savršena mesta gde Web aplikacije već danas predstavljaju proverena i pouzdana rešenje. Nezahvalno je predviđati budućnost, bar kada je IT u pitanju, ali se jasno nameće zaključak da je Web platforma budućnosti. U vremenima kada je informacija vrlo skupa i kada postoji naglašena potrebe za brzom i pouzdanom razmenom informacija i unapređenjem komunikacije među ljudima Web ima ogroman potencijal, daleko veći od svih odavno dostupnih, "klasičnih" platformi. Na samom početku Internet je služio za prenos statičnih HTML stranica na osnovu HTTP zahteva Internet pretraživača (browsera) kako je to ranije prikazano na Slici 4. Te Web stranice sadržavale su hiperlinkove koji su korisnicima omogućavali
25
Elektronske poslovne komunikacije –PRAKTIKUM
jednostavno kretanje s jedne stranice na drugu. Ali to je bilo sve što se tiče interaktivnosti. Evolucijom Interneta, razvijali su se sve sofisticiraniji načini koji su korisnicima omogućavali veću kontrolu nad stranicama koje su učitavali. HTML forme su omogućile unos informacija korišćenjem kontrola sličnih onima koje su koristili u Windows operativnim sistemima (text box, list box, check box). Podaci iz tih kontrola bili su integrisani u HTTP upite koji su se slali na Web server nakon što bi korisnik pritisnuo submit dugme. Web serverske tehnologije, poput CGI-a (Common Gateway Interface) razvijene su da bi dodatno povećale interaktivnost. CGI skriptovi su korišćeni za presretanje određenih Web zahteva i pokretanje programa koji su kreirali i vraćali Web stranice. CGI se često upotrebljavao i za pristup bazama podataka. Današnji Web se međutim, ne može zamisliti bez Active Server Pages (ASP) tehnologije. Od svog prvog pojavljivanja u drugoj polovini 1996. godine, ASP se veoma brzo širio, da bi danas postao najčešće korišćena tehnologija i de facto standard za programiranje na serverskoj strani u Windows okruženju. Standardna specifikacija za interfejs Web servera, Common Gateway Interface, dakle CGI, omogućavala je da izvršni program pristupi svim informacijama koje stižu sa strane klijenta. Program onda može da generiše izlaz, HTML stranu, i da je pošalje klijentu putem Web servera. Da bi posao izrade ovakvih aplikacija bio jednostavniji, neki programski jezici, kao što je Perl, koriste procedure koje prihvataju tekstualne skript datoteke i izvršavaju ih. Sve što programer treba da uradi je da napiše skript, a Web server će ga izvršiti koristeći Perl interpreter. Mikrosoft je za IIS (Internet Information Server) razvio svoj interfejs poznat pod imenom ISAPI (Internet Server Application Programming Interface) koji se razlikovao od CGI-a po tome što je dozvoljavao da se kompajlirani kôd u okviru DLL-a izvršava direktno od strane Web servera.
Objektno orijentisano Web programiranje Svakih desetak godina pojavi se nova tehnologija koja menja pristup razvoju aplikacija. U ranim osamdesetim godinama prošlog veka, te nove tehnologije bile su operativni sistem Unix s grafičkim korisničkim okruženjem, i programski jezik C, za čiji je razvoj zaslužna kompanija AT&T. Početkom devedesetih stigli su operativni sistem Windows i jezik C++. Svi ovi tehnološki pomaci doneli su mnoštvo promena u pristupu programiranju. Sledeći talas stigao je 2000. godine, u vidu platforme .NET i programskog jezika C#. Prelaz na nove tehnike programiranja zaokružila je platforma .NET 2.0. Ipak treba naglasiti da se kompanije, pri razvoju svojih informacionih
26
Elektronske poslovne komunikacije –PRAKTIKUM
sistema, u suštini opredeljuju između dve platforme: Java i .NET. Ponekad obe platforme figurišu u istoj kompaniji gde delovi sistema rade na različitim platformama i gde je neophodna njihova integracija. Rešenje za integraciju su otvoreni standardi: § XML – za prezentaciju podataka § XML Web servisi – za integraciju sistema: - omogućuju komunikaciju između slabo spregnutih delova sistema, - delovi sistema mogu raditi na različitim platformama (Java, .NET, ...). Mikrosoft je neprikosnoveno krenuo napred s platformom .NET. Kada kompanija te veličine i uticaja potroši milijarde dolara i reorganizuje čitave svoje strukture da bi podržala novu platformu, programeri to moraju zapaziti. Platforma .NET predstavlja veliku promenu u načinu na koji pristupamo programiranju. Ukratko, reč je o novoj razvojnoj platformi za objektno orijentisano programiranje okrenuto Internetu. Za ovu platformu odabran je jezik C#, koji je od jezika C preuzeo efikasnost, od C++ objektno orijentisanu strukturu, od Jave visok nivo bezbednosti i mehanizam "čišćenja smeća", a od jezika Visual Basic brzinu razvoja aplikacija. Zahvaljujući tim odlikama, C# je idealan jezik za programiranje višeslojnih Web aplikacija, zasnovanih na komponentama. Verzija C# 2.0 odabrana je za platformu .NET 2005, i sadrži poboljšane alatke i novo moćno razvojno okruženje. Jednom rečju, u pitanju je kruna istraživanja i razvoja u kompaniji Mikrosoft. .NET (dot net) strategija Predstavljajući novu strategiju razvoja aplikacija kao odgovor novostvorenim potrebama modernog poslovanja, Mikrosoft je za cilj postavio novi koncept: "Bilo kada, bilo gde, na bilo čemu". Na tom konceptu je razvijena .NET tehnologija. Ona omogućava razvoj nove generacije kako desktop tako i Web aplikacija. Ideja je da se omogući pristup informacijama bilo kada, bilo gde i preko bilo kog uređaja. Za primer možemo uzeti neki Web servis za generisanje izveštaja, čiji su finalni proizvod podaci u XML formatu. Kada se nalazite u kancelariji i koristite PC računar, pozivom predmetnog Web servisa dobijate bogat ispis i kompletnu funkcionalnost. U slučaju da se nalazite izvan firme, naprimer u jednom od Internet kafea, i pomoću Internet browsera pristupate istom Web servisu, ponovno će vam biti poslati isti XML podaci, ali će u ovom slučaju biti formatirani tako da se prilagode Internet browseru koji koristite i uz manje grafičkih detalja zbog uštede vremena prenosa. Istom Web servisu možete
27
Elektronske poslovne komunikacije –PRAKTIKUM
pristupati i preko savremenih mobilnih uređaja i GSM telefona. I u tom slučaju će vam biti prikazani isti podaci, ali oni će biti formatirani i prikazani u skladu s mogućnostima uređaja koji koristite za prikaz podataka. "Bilo kada, bilo gde, na bilo čemu" je u stvari .NET tehnološka vizija. Komponente Visual Studio .NET-a, ASP.NET-a i .NET Framework-a imaju zadatak pojednostavljenja razvoja takvih svestranih aplikacija.
Slika 11: .NET Framework - nova programerska paradigma .NET je dakle ime najmodernije platforme koju Microsoft vezuje za softverske tehnologije budućnosti. U nazivu je osnovna poruka koju nosi ova tehnologija dostupnost u svakom trenutku na svakom mestu. Ova platforma predstavlja dugoročni i strategijski plan razvoja ne samo u Microsoftu. .NET daje realne osnove da postane osnovna platforma razvoja modernih aplikacija. Radni okvir .NET razvijen je sa ciljem da obezbedi okruženje za razvoj svih modernih aplikacija na Windows operativnom sistemu. Jedna od osnovnih osobina ove platforme je njena orijentacija ka distribuiranim aplikacijama preko Interneta. Ovo obavezno sa sobom nosi još prednosti:
28
§
Distribuirane aplikacije su više objektno orijentisane;
§
Ovaj stil programiranja ubrzava stvaranje kolekcije specifičnog koda na jednom mestu, nasuprot dosadašnjem stilu gde se stvaraju redundantne kopije na mnogo mesta;
Elektronske poslovne komunikacije –PRAKTIKUM
§
Ovaj tip aplikacije pruža softverske celine raspoložive različitim uređajima preko posebnog interfejsa;
§
Kontrolisanjem pristupa u realnom vremenu (real-time) ka distribuiranim čvorovima (delovi jedne softverske celine ) moguće je lakše kontrolisanje rada takvih aplikacija. Ovaj pristup pomera aplikacije od objektno orijentisanih u pravcu 'services provided';
§
Biblioteka klasa razvijena je od samog početka koristeći dragocena iskustva. Ovo kao rezultat ima dobar dizajn, dosledno i dobro definisanje osnovnih tipova;
§
Jezička nezavisnost. Ovo je postignuto postojanjem međujezika, IL (Intermediate Language, ili MSIL), tj. kôd napisan na bilo kom jeziku koji ima podršku za .NET prevodi se u kôd razumljiv tom međujeziku;
§
Podrška za Web (XML) servise. .NET ima razvijene alate za jednostavno pisanje XML servisa;
§
Poboljšani pristup dinamičkim Web stranicama baziran na ASP.NET tehnologiji;
§
Efikasniji pristup podacima preko ADO.NET klasa;
§
.NET postavlja i novi pristup za zajedničko korišćenje koda. Nasuprot tradicionalnih .dll biblioteka, uvodi se koncept sklopova (assembly);
Zajedničko funkcionisanje različitih platformi imperativ je u distribuiranim aplikacijama. Zato je bilo neophodno obezbediti standardizaciju u razmeni podataka. Tako je .NET platforma sagrađena na standardima tehnologije XML i SOAP. Bez obzira na neosporan rast važnosti Web aplikacija u poslednjih desetak godina, mnogi iskusni programeri svim su silama nastojali izbeći učešće u njihovom razvoju. Zašto? Proces razvoja Web aplikacija bio je neelegantan i ružan. Programeri su se odjednom našli na ključnoj prekretnici, važnoj poput one kada su s karakterbaziranog korisničkog interfejsa (MSDOS) prelazili na grafički orijentisani interfejs (Windows - GUI). Veliki izazov je bilo odabrati novi alat i prihvatiti novu programersku paradigmu - Mikrosoftov .NET Framework. Ova paradigma je temelj razvoja, distribucije i korišćenja XML Web servisa (XML Web Services), ali i ostalih tipova aplikacija: desktop, mobilnih i svakako Web orijentisanih. Ideja vodilja prilikom razvoja .NET Framework modela bila je rešiti fundamentalni problem prisutan od samih početaka računarstva - integraciju.
29
Elektronske poslovne komunikacije –PRAKTIKUM
Početkom trećeg milenijuma aplikacije su evoluirale od pojedinačnih softverskih sistema do kompleksnih mrežnih rešenja koja se prostiru na različitim uređajima, servisima i operativnim platformama. Povezivanje ovih solucija je frustrirajući posao ako smo primorani da koristimo tradicionalne programerske alate i modele. XML Web servisi su Mikrosoftov odgovor na ovaj kompleksan izazov.
30
Elektronske poslovne komunikacije –PRAKTIKUM
XML (eXtensible Markup Language)
Extensible Markup Language (XML) je specijalizovani jezik koji služi prenošenju formatiranih podataka. XML koncepcijski je sličan HTML-u, možemo ga smatrati metajezikom koji upotrebljavamo za kreiranje drugih, specijalizovanih jezika. XML je dakle jezik koji programerima omogućuje kreiranje specifičnih jezika za upotrebu na Webu. Microsoft, IBM i Oracle prihvatili su ga kao standard za podizanje performansi i funkcionalnosti Interneta. XML se upotrebljava prilikom razmene informacija između poslovnih aplikacija, pa se pomoću njega jednostavno i jeftino mogu obavljati on-line transakcije. Može biti korišten i za prenos zvučnog i video zapisa, i uopšte bilo kojeg oblika podataka putem Weba. XML specifikacija se sastoji od tri dela. Prvi deo (primarni) je dizajniran kao uvod u ono što kreira XML šemu. Drugi deo opisuje temeljne strukture koje se mogu kreirati korišćenjem XML šeme, i definiše pravila provere dokumenata, što omogućava izradu XML procesora. U trećem delu su definisani jednostavni tipovi podataka zbog lakšeg rukovanja datumima, brojevima i ostalim posebnim tipovima informacija. Upotrebom XML šeme programeri mogu bolje definisati tipove stringova u dokumentu (npr. možete definisati predstavlja li broj u dokumentu celobrojnu vrednost ili recimo datum). Definisanje stringova je važno prilikom razmene informacija s korisnicima koji možda ne koriste isti XML jezik. Kompletnu specifikaciju XML jezika možete pronaći nа http://www.w3.org/XML/.
31
Elektronske poslovne komunikacije –PRAKTIKUM
AJAX (Asynchronous JavaScript and XML)
Naziv potiče od Asynchronous JavaScript and XML i odnosi se na nestandardni način upotrebe JavaScript objekta XMLHttpRequest za povezivanje sa serverskim skript-kôdom u različitim formatima, npr. XML-om, HTML-om i standardnim tekst fajlom. Asinhroni način rada se odnosi na mogućnost izmene delova stranice bez osvežavanja kompletne stranice, što omogućava bržu reakciju na događaje koji nastaju u interakciji s korisnikom. Uz to, predviđen je i rad sa XML dokumenatima. AJAX predstavlja posebnu kombinaciju više tehnologija: -
Prikaz podataka je zasnovan na standardima XHTML i CSS,
-
Dinamički prikaz i interakcija se realizuju korišćenjem Document Object Model-a,
-
Razmena i manipulacija podacima se vrši korišćenjem XML i XSLT,
-
Asinhroni pristup podacima se realizuje upotrebom XMLHttpRequest,
-
Integracija tehnologija se vrši pomoću jezika JavaScript.
Na Slici 12. su prikazana dva različita modela: klasične i AJAX Web aplikacije.
32
Elektronske poslovne komunikacije –PRAKTIKUM
Slika 12: Dva savremena modela Web aplikacije Razlika je i u mehanizmu interakcije s korisnikom, koji je kod klasične Web aplikacije sinhroni, a kod Ajax aplikacije asinhroni:
Slika 13: Klasična sinhrona Web aplikacija
33
Elektronske poslovne komunikacije –PRAKTIKUM
Slika 14: Asinhrona Web aplikacija (AJAX) U danima razvoja prvih aplikativnih rešenja programeri su brinuli samo o tipu računara za koje su izrađivali aplikacije. Nedugo zatim morali su obratiti pažnju i na različite operativne sisteme koji su se mogli instalirati na isti tip računara. Ako danas želimo biti programer u trendu, moramo razvijati aplikacije koje će se moći izvršavati na bilo kom računaru, na bilo kom operativnom sistemu, bilo gde u svetu. ASP.NET bi nam mogao u tome pomoći.
ASP.NET – deo Mikrosoftovog .NET Framework-a Kada se 1996. pojavila beta verzija ASP-a (codename: Denali), zauvek je promenila razvoj Web aplikacija. Izvršavanje kôda u okviru Web strane je postalo veoma jednostavno i veoma moćno. Finalna verzija ASP 1.0 koja se pojavila kao dodatak za IIS 3.0, ubrzo je postala široko rasprostranjena. ASP 2.0 je stigao 1998. godine, kao deo besplatnog Windows NT4 Option Pack-a. ASP 2.0 i IIS 4.0 omogućili su kreiranje ASP aplikacija i izvršavanje komponenti u zasebnom, sopstvenom, memorijskom prostoru (out-of-process). Početkom 2000. godine, zajedno sa Windows-om 2000 i IIS-om 5.0 pojavio se i ASP 3.0, sa par manjih poboljšanja. Međutim, to je danas samo deo istorije Web programiranja, a sve posle toga je ASP.NET.
34
Elektronske poslovne komunikacije –PRAKTIKUM
Šta je to zapravo ASP.NET?
Jednostavan, ali ne i dovoljno precizan odgovor bi bio da se radi o novom Mikrosoftovom "server side" skriptnom jeziku. Međutim, bilo bi to nedopustivo minimiziranje moćne tehnologije. Za preciznije određivanje uloge ASP.NET-a u svetu Web programiranja, potrebno je istaći i par činjenica iz prošlosti razvoja tih tehnologija. Pre više od petnaest godina napravljen je prvi prenos podataka http protokolom. Nedugo nakon toga protokol je široko prihvaćen, te se ukazuje potreba za definisanjem standardnog formata za opis dokumenata. I tu se HTML prepoznaje kao favorit, te nešto kasnije i XML. HTML se pokazao odličnim za opis statičkih dokumenata sa tekstom i grafikom. Međutim, za bilo kakvu interakciju s potencijalnim korisnicima bilo je potrebno nešto više. Rešenja za izneti problem uglavnom se mogu svrstati u dve kategorije: § skripte koje se izvršavaju na strani servera, § posebne aplikacije koje se takođe izvršavaju na serveru. U prvu grupu se svrstavaju jezici poput PHP-a i klasičnog ASP-a. Karakteristika tih jezika je kôd koji je potpuno isprepleten s HTML kôdom unutar iste datoteke. Na serveru se pokrene aplikacija koja izvršava taj kôd naredbu po naredbu, te rezultat vraća unutar HTML stranice. Uz to što kôd nije odvojen od dizajna, najveća mana ovog pristupa je brzina. Skripte se interpretiraju što znači izvršavaju se daleko sporije od kompajliranih aplikacija. Reprezentativan primer drugog pristupa je CGI (Common Gateway Interface). Za svaki zahtev klijenta na serveru se pokreće posebna aplikacija koja dinamički generiše HTML stranicu. Pošto se ne radi o skripti, već o kompajliranoj aplikaciji, brzina izvođenja je veća, ali su veći i zahtevi za serverskim resursima. ASP.NET nije moguće svrstati niti u jednu od ovih grupa. Integracijom (novih) programskih jezika i posebnih softverskih sistema na serveru (.NET Framework) u svet Web programiranja uvedene su pogodnosti do sada dostupne samo programerima desktop aplikacija. Zašto takav zaokret? Zašto je Mikrosoft odustao od klasičnog ASP-a i okrenuo se potpuno novoj platformi? Ako već iznetom problemu brzine dodamo i to da su za najjednostavnije operacije klasičnim rešenjima potrebne desetine linija kôda, sve skupa postaje gotovo
35
Elektronske poslovne komunikacije –PRAKTIKUM
neupotrebljivo za bilo kakve kompleksnije e-biznis zadatke. Drugi veliki problem bio je sam jezik. Za kreiranje ASP kôda koriste se skriptni jezici poput VBScripta, koji izvorno nisu bili namenjeni za korišćenje u Web okruženju. Jedina prednost je bila ta što programeri nisu morali učiti novi jezik, a cena koju je bilo potrebno platiti za to su znatno lošije performanse. Svaka varijabla unutar ASP skripti je tipa variant, zbog čega zauzima više memorije. Osim toga, bilo je gotovo onemogućeno kreiranje razvojne platforme koja bi ASP programerima ponudila naprednije opcije poput upotrebljivog Debugging alata ili IntelliSens-a. Sa ASP.NET-om stvari stoje mnogo bolje. Web aplikacije se pišu na sličan način kao i desktop aplikacije, uz poštovanje pravila objektno orijentisanog programiranja. Ipak najvažnija razlika u odnosu na klasični ASP je ta što se sada kôd prevodi (kompajlira), te izvršava unutar CLR-a (Common Language Runtime). Sam kôd je moguće pisati u bilo kom programskom jeziku za koji postoji prevodilac. Jedna od velikih novosti su i Web servisi, o kojima nešto više u jednom od narednih poglavlja. ASP.NET je dakle vrlo efikasan programski model (platforma) za razvoj: § Windows aplikacija; § Web aplikacija; § Web formi (UI za Web aplikacije); § Web servisa (programske komponente, koje donose dodatne, vrlo specifične funkcionalnosti, do kojih dolazimo putem posebnih Web protokola). ASP.NET se temelji na: § Microsoft .NET Framework-u; § Microsoft Internet Information Services-u (IIS). Primetite da izbegavamo frazu: "razvoj aplikacija u operativnom sistemu Windows". Iako je prva verzija .NET okruženja radila samo na operativnom sistemu Windows, budući planovi su podrazumevali i rad na drugim sistemima, kao što su FreeBSD, Linux, Macintosh, pa čak i na uređajima klase ličnog digitalnog asistenta (PDA). Jedan od ključnih razloga za razvoj ove tehnologije je namera da ona postane sredstvo kojim se vrši integracija različitih operativnih sistema. Pored toga, ova definicija .NET okruženja ne ograničava mogućnosti bilo kog tipa aplikacije. Ograničenja zapravo ne postoje - .NET okruženje daje nam mogućnost izrade Windows aplikacija, Web aplikacija, Web servisa i skoro svega ostalog što bi se moglo zamisliti. .NET okruženje je dizajnirano tako da se može koristiti bilo koji programski
36
Elektronske poslovne komunikacije –PRAKTIKUM
jezik: C#, C++, Visual Basic, JScript, pa čak i stariji jezici kao što je COBOL. Da bi sve to funkcionisalo, pojavile su se i posebne verzije ovih jezika za .NET: Managed C++, Visual Basic .NET, JScript .NET, kao i razni drugi. Ne samo da svi oni imaju pristup .NET okruženju, već mogu i međusobno komunicirati. Sasvim je moguće prilikom programiranja u jeziku C# koristiti kôd napisan u Visual Basic.NET-u, kao i obrnuto. Sve ovo omogućuje dosad nezamisliv nivo višestruke namene, što pored ostalog .NET okruženje čini toliko atraktivnim.
. NET Framework Kada je u pitanju .NET Framework radi se zapravo o ogromnom, hijerarhijski uređenom skupu klasa, struktura, interfejsa i ostalih programskih elemenata. Te iste klase koriste se i kod programiranja desktop aplikacija i kod Web aplikacija, čime su ta dva tipa programiranja postala bliža nego ikad do sada. Velika prednost ASP.NET-a u odnosu na neka druga rešenja je brzina. Ta brzina je direktna posledica toga što se ASP.NET aplikacije prevode (kompajliraju). Prevođenje se odvija u dva stepena kako je to prikazano Slikom 16. U prvom stepenu kôd se prevodi u "međujezik" nazvan Microsoft Intermediate Language (MSIL ili samo IL). Drugi stepen prevođenja dešava se u trenutku kada se aplikacija izvršava. Tada se IL pseudo kôd prevodi u mašinski kôd. Ova faza poznata je kao JIT ("just-in-time") prevođenje, i odvija se na isti način kod svih .NET aplikacija. JIT prevođenje ne bi imalo smisla kada bi se odvijalo svaki put kada se zatraži Web stranica. Umesto toga, prevođenje se izvršava samo prvi put, te svaki put kada se izvrše eventualne promene u kôdu. Zahvaljujući prevođenju u IL, .NET kôd je moguće pisati u čitavom nizu različitih jezika (C#, VisualBasic.NET, JScript.NET, ...). Svi se oni prvobitno prevode u IL, koji je zapravo jedini jezik kojeg CLR prepoznaje, te se zatim konačno prevode u mašinski kôd razumljiv procesoru. Kao što je već rečeno, jedan od najvažnijih aspekata ASP.NET-a je taj što se izvršava unutar CLR okruženja. Pa koja je zapravo uloga CLR-a? Radi se o kompleksnom okruženju čiji su zadaci između ostalog i automatsko upravljanje memorijom, takozvano "skupljanje smeća", pružanje podataka o dostupnim klasama, njihovim članovima, tipovima podataka, i ostalim programskim elementima, obrađivanje grešaka i slično.
37
Elektronske poslovne komunikacije –PRAKTIKUM
Za razliku od ASP-a, čiji objektni model predstavlja samo tanki sloj iznad HTTP-a i HTML-a, ASP.NET nudi pravi, objektno orijentisani model. Najbolji primer za to su serverske kontrole, kojima je moguće manipulisati preko implementiranih metoda, dok su detalji vezani za HTML kôd skriveni od programera. U poslednjih nekoliko godina, značaj Interneta je enormno porastao u gotovo svim oblastima računarstva i obrade informacija. Direktan rezultat takvog rasta je taj što se od programera traži da kreiraju aplikacije koje maksimalno koriste mogućnosti Interneta, bilo da je to proces naručivanja robe, isporuka robe, online saradnja ili bilo koja druga upotreba. Nažalost, razvojni alati koji su ranije bili dostupni programerima, kao što je Visual C++ i Visual Basic, potiču iz pre-Internet ere. Bilo koja Internet mogućnost koju su imali je bila rezultat naknadnog dodavanja, koje je trebalo da zadovolji potrebe programera. Treba ipak biti pošten pa reći da su neke ranije tehnologije Internet programiranja, takođe bile impresivne i mnoge odlične aplikacije su bile kreirane sa njima. Ali uprkos tome, činjenica da potpune Internet mogućnosti nisu bile ugrađene u ove alate za programiranje od samog početka vodila je do nezaobilaznih problema kod efikasnosti pri razvoju, greškama i otežanom održavanju programa. Mikrosoftov odgovor na ovu dilemu je da krene od početka, kreirajući novi strukturni okvir programerskih alata koji je dizajniran sa potpuno integrisanom Internet podrškom. .NET (čitaj: dot net) je dakle, naziv za najnoviju Mikrosoftovu viziju budućnosti računarstva u kojoj se aplikacije izvršavaju distribuirano putem Interneta. Da bi to ostvarili, bilo je potrebno ispuniti nekoliko uslova. Kao prvo, distribuirano računarstvo je konceptualno isto objektno orijentisanom programiranju, što se najbolje vidi u sposobnosti da se programski kôd za određenu operaciju smešta u jedan blok, umesto da se prepisuje gde god je to potrebno. Upravo prelazak na distribuirani model doneo je toliko potrebnu efikasnost u razvoju aplikacija. Drugo, smeštanjem specijalizovanog kôda na jedno mesto i otvaranjem javno dostupnog interfejsa, različiti uređaji (telefoni, PDA, stoni računari itd.) su podržani istim programskim kôdom. Odavde vuče korene Mikrosoftova filozofija «pokreći uvek i na bilo čemu». I kao treće, kontrolom pristupa u realnom vremenu distribuiranim resursima, kompanije imaju mogućnost bolje kontrole izvršavanja svojih aplikacija. Na taj način aplikacije sa koncepta «posedujem objekt» prelaze na koncept «podržavam servis». Zanimljivo je da Mikrosoft prelaskom na .NET odustaje od strogog načina patentiranja svog vlasništva (sve tehnologije koje razvije nastojao je prilagoditi Windows operativnom sistemu). Pošto sada budućnost vidi u pružanju softverskih servisa putem distribuiranih aplikacija, .NET Framework je napravljen tako da
38
Elektronske poslovne komunikacije –PRAKTIKUM
aplikacije i na drugim platformama mogu pristupiti tim servisima. Na primer, .NET je izgrađen na standardizovanim tehnologijama poput XML-a i SOAP-a. U aspektu razvoja aplikacija, .NET se oslanja na .NET Framework. .NET Framework, kao što smo već naučili, je platforma za razvoj, instalaciju i pokretanje Web aplikacija i XML Web servisa. .NET Framework se sastoji od dva glavna dela: CLR-a (Common Language Runtime) i FCL-a (Framework Class Library). CLR upravlja memorijom, izvršava kôd, brine se o sigurnosti kôda, prevodi (compilation) kôd u mašinski jezik, te upravlja ostalim sistemskim resursima. CLR je dizajniran za maksimalno iskorišćenje performansi računara na kojem se izvodi programski kôd, tako da se CLR brine o mnogim standardnim servisima za vreme izvršavanja kôda. Još jednom se potsetimo da se kôd nikada ne interpretira. CLR koristi Just-In-Time (JIT) kompajler koji prevodi kompletan CLR pseudo-kôd u mašinske CPU instrukcije pre izvršavanja. CLR ima dve zanimljive mogućnosti. Prva je ta da mu je specifikacija otvorena što omogućuje portiranje na newindows operativne sisteme. Drugo, za pisanje aplikacija koje koriste standardne klase može se koristiti bilo koji programski jezik koga podržava CLR.
Slika 15: Struktura .NET Framework-a
39
Elektronske poslovne komunikacije –PRAKTIKUM
Jedan od jezika koji se savršeno uklapa u .NET Framework jest C#. Taj novi jezik, naslednik C++, objavljen je zajedno s .NET Frameworkom, te je zato logično da bude primarni programski jezik za pisanje .NET aplikacija(Slika 15.). Što se tiče FCL-a, u pitanju je hijerarhijski set unifikovanih biblioteka klasa.
Tabela 1: Verzije .NET Framework-a Verzija
Službena oznaka
Godina izdavanja
Visual Studio
Podrazumevani Windows OS
1.0
1.0.3705.0
2002.
Visual Studio .NET
1.1
1.1.4322.573
2003.
Visual Studio .NET 2003
Windows Server 2003
2.0
2.0.50727.42
2005.
Visual Studio 2005
Windows XP, Windows Server 2003
3.0
3.0.4506.30
2006.
3.5
3.5.21022.8
2007.
Visual Studio 2008
Windows Vista, Windows Server 2008 R2
2009-2010.
Visual Studio 2010
Windows 7, Windows Server 2008 R2
4 Beta 2
40
Windows Vista, Windows Server 2008
Elektronske poslovne komunikacije –PRAKTIKUM
ASP.NET je deo .NET SDK-a (Software Development Kit) koji predstavlja skup tehnologija neophodnih za pravljenje i testiranje .NET aplikacija. Microsoft tvrdi da SDK možete instalirati bez brige za svoje postojeće klasične ASP aplikacije. Teoretski gledano, ASP.NET i ASP aplikacije mogu zajedno da egzistiraju. Ekstenzije datoteka ASP aplikacija (.asp, .asa) se razlikuju od ekstenzija datoteka ASP.NET aplikacija (.aspx, .asax, .ascx, .asmx) tako da se mogu nalaziti čak i u istom folderu. Kada se ASP3 pojavio, nije se mnogo razlikovao od verzije 2. Sa ASP.NET-om situacija je sasvim drugačija, on je radikalno promenjen u odnosu na stari ASP2 i ASP3. Doživeo je fundamentalne promene i obezbedio nam kompletno nov pristup Web programiranju. Kao što je bio slučaj kod ASP aplikacija i ASP.NET aplikacije se mogu pisati u najobičnijem tekst editoru. Međutim, više se ne koriste obični skript jezici već je moguće koristiti proizvoljan .NET programski jezik. Za sad su na raspolaganju nekoliko takvih jezika: C#.NET, VB.NET, Visual C++.NET, Visual J#.NET i JScript.NET. Ove jezike podržava Visual Studio .NET, ali treba istaći da postoji još niz jezika za .NET: COBOL, Component Pascal, Delta Forth, Eiffel, Fortran, Perl, Python, SmallScript, SML.
Slika 16: Model dvostepenog prevođenje (kompajliranja) ASP.NET aplikacija
41
Elektronske poslovne komunikacije –PRAKTIKUM
Iako uočavamo da je ASP.NET stranice još uvek moguće razvijati sa JScriptom, reč je o značajno promenjenoj i unapređenoj verziji. Za razliku od "klasičnog" ASP-a, ASP.NET stranice se ne interpretiraju kada ih browser zatraži. Umesto toga, prvi put kada se stranica poziva, ona se kompajlira u Intermediate Language (IL). IL kôd se zatim sačuva i svaki sledeći put kada se ta stranica zatraži, on se poziva, dodatno kompajlira pomoću Just-In-Time (JIT) kompajlera i kao takav izvršava (Slika 16.). Rezultujuća HTML strana se zatim šalje browser-u. Platformaska nezavisnost i jezička neutralnost Programski jezik C# je definisan u Mikrosoftu, ali je standardizovan (ECMA334). Multijezička .NET platforma je osnova za razvoj i izvršenje C# programa. C# nije jedini jezik za razvoj aplikacija za .NET platformu. U osnovi radi se o sličnoj ideja kao kod Jave: § C# se prevodi u međukôd; § međukôd se ne interpretira, već se JIT prevodiocem prevodi u toku izvršenja; Od pojave Jave (1996) desile su se značajne promene na polju mogućnosti savremenih informacionih tehnologija (IT): § eksplozija Interneta - raspoloživost visoko-propusnih veza za kompanije i individualne korisnike § velike promene u projektovanju softverskih sistema kompanija - tanki klijenti, višeslojni serveri, virtualizacija § razvoj i usvajanje otvorenih standarda za podršku integracije sistema - XML - široko prihvaćeni standard za reprezentaciju, rukovanje i razmenu podataka § ekspanzija inteligentnih uređaja - mobilni telefoni, PDA, konzole za igre § porast raspoloživih besplatnih softverskih alternativa - open source inicijativa § kompanije su pojačale naglasak na usvajanju tehnologija u interakciji B2C i B2B
42
Elektronske poslovne komunikacije –PRAKTIKUM
eksplozija interesovanja za Web servise u komunikaciji između preduzeća i potrošača § Anders Hejlsberg, glavni arhitekta C# programskog jezika - 1996. prešao iz Borlanda u Microsoft, - inače je tvorac Turbo Pascal-a, glavni arhitekta za Borland Delphi. § Prvobitno ime jezika "Cool" (11.07.2000.) - Tada Microsoft najavljuje .NET radni okvir za integrisanje programskih jezika Web namene, - Sredinom 2000. Microsoft podnosi predlog C# standarda organizaciji ECMA, - ECMA (European Computer Manufacturers Association 13.12.2001.), - ECMA standardizuje C# (334) i CLI (335). § Trenutno je aktuelno četvrto izdanje ECMA specifikacije C# (Jun 2006.) § Standardi međunarodne organizacije za standarde: - ISO/IEC 23270(C#)/23271(CLI):2006, § Java slogan - "piši jednom, izvršavaj svuda“: - JVM, J2SDK za većinu platformi, Nedostatak: - nemogućnost korišćenja specijalizovanog hardvera i naprednih mogućnosti OS. § .NET - drugačiji pristup "bilo kada, bilo gde, na bilo čemu": -
-
izgrađen na Windows platformi i podržava osobine Win32 API-a,
-
definisan PAL (Platform Adaptation Layer), · omogućuje korišćene Win32 API poziva
CLI (Common Language Infrastructure), · zajednička infrastruktura za razne jezike § ECMA standardizuje CLI (osnova PAL) - implementacija PAL je moguća za bilo koju platformu, -
preslikavanjem Win32 API poziva, § JVM - široko raspoloživa, de facto standard, § CLI - je takođe standard ali pre svega proizvod, § Java je praktično jedini jezik Java platforme (JVM)
43
Elektronske poslovne komunikacije –PRAKTIKUM
postoji pokušaj implementacije Python jezika (Jython) koji proizvodi bajt kôd za JVM, § .NET platforma je jezički neutralna - aplikacije i komponente se pišu na raznim jezicima, § Zajednički sistem tipova - CTS (Common Type System), § Zajednička specifikacija jezika - CLS (Common Language Specification), § Programi pisani na svakom jeziku koji poštuje CLS, a kreira i koristi CTS tipove mogu se izvršavati na .NET platformi, § Postojeći jezici koji se prilagođavaju .NET platformi malo menjaju sintaksu -
Visual Basic i Visual Basic.NET nisu identični jezici, C++ za .NET (upravljani C++) razlikuje se od standardnog C++ (Managed Extensions), § .NET je prilagođen OO jezicima, proceduralni jezici se teško adaptiraju - ipak, postoji čak i COBOL.NET, kao i funkcionalni jezici kakav je SML. -
HTML i Web kontrole ASP.NET nam po prvi put predstavlja koncept pod nazivom Web Forms. Web Forms zapravo predstavljaju ASP.NET strane koje koriste serverske kontrole. Osnovni gradivni element za korisnički interfejs čine serverske kontrole. Reč je zapravo o dve grupe kontrola – HTML kontrolama i Web kontrolama. Instance HTML kontrola se generišu za svaki HTML tag koji sadrži runat=“server“ atribut. Na primer, sledeći kôd kreira instancu kontrole HtmlInputText pod nazivom ‘textBox1’.
Sve HTML kontrole postoje u okviru takozvanog imenskog prostora (namespace-a) System.Web.UI.HtmlControls i direktno ili indirektno su izvedene iz osnovne klase HtmlControl. U ove kontrole spadaju i HtmlAnchor (tag ), HtmlSelect (), HtmlTextArea (), HtmlInputButton (), HtmlInputHidden (), HtmlForm (), HtmlImage (), HtmlTable (), HtmlTableRow (),
44
Elektronske poslovne komunikacije –PRAKTIKUM
HtmlTableCell
()
itd.
Ukoliko
dodamo
još
jedan
atribut,
recimo
onserverclick=“MojPotprogram“, možemo izvršiti povezivanje nekog događaja (u ovom slučaju click mišem) sa našim kôdom na serverskoj strani. Druga grupa serverskih kontrola u okviru ASP.NET-a su Web kontrole. Ove kontrole postoje u okviru System.Web.UI.WebControls namespace-a i izvedene su iz osnovne WebControl klase. Web kontrole sadrže i tradicionalne kontrole sa HTML formulara, kao što su TextBox i Button, ali i neke sa većim stepenom apstrakcije kao što su Calendar i DataGrid (GridView) koje ćemo kasnije u konkretnim primerima intenzivno koristiti. Ove kontrole pružaju nekoliko zgodnih mogućnosti koje značajno pojednostavljuju razvojni proces Web aplikacije. Tu je pre svega dosledan i obiman objektni model. Osnovna WebControl klasa implementira više svojstava koja su zajednička za sve Web kontrole (ForeColor, BackColor, Font, Enabled i dr.). Bilo koje svojstvo kontrole može biti određeno i parametrima iz same baze podataka. Atraktivno i potencijalno moćno je i automatsko detektovanje browser-a i automatsko prilagođavanje. U praksi to znači da će se Web kontrola u klijentovom browser-u prikazati na način koji će najbolje iskoristiti mogućnosti tog browser-a. Interfejs se tako može automatski prilagođavati da bude u HTML 3.2 formatu, DHTML-u, ili WML-u. Od prve verzije ASP-a pa do današnjih dana, način na koji pristupamo Internetu se dosta izmenio. Danas nije retkost da se za surfovanje po Webu koriste razni Windows CE računari, Palm Pilot uređaji i mobilni telefoni. To je stavilo poseban izazov pred projektante ASP.NET-a i oni su u velikoj meri rešili sve te nove zahteve. U okviru HTML kôda Web kontrole su takođe reprezentovane tagovima, ali je ovog puta reč o posebnim tagovima sa prefiksom. Kao i za HTML kontrole i ovi tagovi moraju sadržati runat=“server“ atribut. Pogledajmo primer za TextBox kontrolu. Prefiks „asp“ se odnosi na System.Web.UI.WebControls namespace.
Na prvi pogled deluje da postoje velike sličnosti između nekih HTML i nekih Web kontrola, pa možda čak i duplirane funkcionalnosti. Međutim, između ove dve grupe kontrola postoje i suštinske razlike. Kada koristite HTML kontrole, vi zapravo programirate slično kao u „klasičnom“ ASP-u. Dodavanjem atributa runat=“server“ jednostavno dobijate serverske kontrole. Ove serverske kontrole imaju prilično siromašan objektni model, uglavnom sa atributima koji
45
Elektronske poslovne komunikacije –PRAKTIKUM
odgovaraju atributima HTML taga, a Web kontrole imaju znatno bogatiji objektni model, umnogome sličan Visual Basic modelu. Takođe, dok su HTML kontrole u 1:1 odnosu sa HTML tagovima, dotle Web kontrole imaju znatno veći stepen apstrakcije. Ovo omogućava prilagođavanje prikaza i funkcionalnosti otvara vrata za široki spektar novih kontrola nezavisnih proizvođača. Međutim, veća fleksibilnost podrazumeva i manju mogućnost kontrolisanja kako će sama kontrola konačno izgledati u nekom browser-u. Na programerima je da odluče koje je rešenje bolje za konkretnu situaciju i traženu funkcionalnost. Čak i u okviru jedne Web strane moguće je slobodno kombinovati HTML i Web kontrole. Da li je stvarno bilo potrebe za dve grupe serverskih kontrola? Stručnjaci Microsoft-a nas autoritativno ubeđuju da jeste. WEB servisi Web Forms nisu jedini adut ASP.NET tehnologije. Drugi veoma bitan činilac su Web Servisi (Web Services). Reč je o tehnologiji za generisanje serverskih objekata, aplikacija, koje bi obezbeđivale različite servise - usluge udaljenim klijentima, pogotovo kada se server i klijent izvršavaju na različitim operativnim sistemima. Komunikacija između servera i klijenta bi se obavljala u XML formatu, ili preciznije rečeno u SOAP (Simple Object Access Protocol) formatu. Ovi servisi, generisani pomoću ASP.NET-a mogu da primaju SOAP zahteve i da šalju odgovore u SOAP formatu. Klijentu se ovi objekti otkrivaju i opisuju uz pomoć SDL-a (Service Description Language), još jednog jezika baziranog na XML-u. Klijent pristupa objektu uz pomoć HTTP-GET, HTTP-POST ili HTTP-SOAP metoda koji obezbeđuju dodatnu fleksibilnost.
Public Class Test1 Public Function Inkrementacija(a As Integer) As Integer Return a + 1 End Function End Class Razmena poruka o SOAP formatu i nije neka velika mudrost. Ono što je velika prednost ASP.NET-a je veoma jednostavno generisanje ovakvih objekata. Dovoljno je
46
Elektronske poslovne komunikacije –PRAKTIKUM
da u bilo kom od podržanih jezika na serverskoj strani kreirate objekat definisan kao Public Class i da jednu, ili više metoda obeležite posebnim WebMethod indikatorom. Nikakvo poznavanje DCOM/COM+, HTTP i SOAP tehnologija nije potrebno. ASP se iz korena promenio. Za prelazak sa klasičnog ASP na ASP.NET tehnologiju potrebno je ipak malo truda i vremena. Ali to je cena koja se mora platiti, a poučen iskustvom, Mikrosoft je doneo ispravnu odluku da omogući paralelni rad ASP.NET i klasičnih ASP skriptova. Ponekad Mikrosoft menja nazive tehnologijama koje je sam razvio, ali ne menja i samu tehnologiju. Podsetimo se, na primer, da je pre izvesnog vremena ta kompanija preimenovala tehnologiju OLE u ActiveX, pri čemu je suština vrlo malo izmenjena. Ali postoje suprotne situacije u kojim je Mikrosoft ostavljao nazive manje ili više istim, dok je u isto vreme radikalno izmenio identitet date tehnologije. Upravo je ASP.NET blistav primer ovog drugog fenomena. Iako naziv zvuči prepoznatljivo, u biti je mnogo drugačiji od klasične ASP tehnologije. Procesiranje .aspx stranice Najbolji način da uvidite šta ovo znači jeste opis procesa koji se dešava kada ASP.NET stranici pristupite iz Web browser-a. U svrhu ilustracija poslužićemo se jednostavnom .aspx stranicom, .NET ekvivalentom klasične .asp stranice koja je ranije diskutovana i prikazana Slikom 9:
Sub PrikaziBrojeve() Dim broj As Integer For broj = 1 To 11 Response.Write(broj) Response.Write("Naziv(") Response.Write(broj) Response.Write(")") Response.Write("") Next End Sub Datum i vreme: Brojevi i Nazivi:
47
Elektronske poslovne komunikacije –PRAKTIKUM
Slika 17: ASP.NET stranica - jednostavni tabelarni prikaz Kao i tradicionalne ASP (.asp) stranice, ASP.NET (.aspx) stranice mogu da sadrže HTML kôd, plain tekst i kôd isprepleten bilo putem taga ili kôd umetnut između . U stvari, stranica iz primera najviše liči na običnu .asp stranicu: oslobodite se Dim deklaracije, promenite deklaraciju jezika "vb" u "vbscript", i sve će biti po tradicionalnom ASP-u. Ali ono što se dešava kada ovu stranicu izvršimo na ASP.NET platformi, veoma je različito u odnosu na izvršenje u ASP okruženju. Ako bi ova stranica bila procesirana kao ASP stranica, kôd koji sadrži bio bi interpretiran od strane servera, a izlaz koji se generiše bio bi ubačen u tok podataka i poslat ka browser-u. Tekst i HTML kôd na stranici bili bi direktno prosleđeni browser-u, nepromenjeni. Pristupanjem stranici iz primera, preko ASP.NET-a, kao rezultat imamo kompletno različit proces izvršavanja. ASP.NET aplikacije pripadaju .NET Framework rešenjima, što znači da su zasnovane na Common Language Runtime (CLR). Zbog ovoga, svaka .aspx stranica se automatski prebacuje u klasu i to onog momenta kada joj pristupi prvi klijent. Ta nova klasa je naslednik standardne Page klase iz .NET Framework biblioteke klasa, a različiti segmenti sadržaja .aspx stranice umetnuti su na različita mesta unutar ove klase. Na primer, bilo koji kôd sadržan unutar elemenata ubačen je u klasu samostalno. U našem
48
Elektronske poslovne komunikacije –PRAKTIKUM
slučaju, jednostavna funkcija PrikaziBrojeve() postaje metod u generisanoj klasi. Ostatak ove stranice, uključujući tu i tekst, HTML tagove, i kôd između elemenata , smešta se u jednu metodu nazvanu Render, i to u istu klasu. Potom se ova nova klasa kompajlira i pakuje u jedan poseban sklop (engl. assembly), kako se naziva kontejner koji .NET koristi za skladištenje kompajliranog kôda. Jednom kada je ovaj assembly kreiran, koristiće se za upravljanje svim budućim zahtevima za ovom stranicom. Ukoliko ovu stranicu izmenimo, opisani proces se ponovo odigrava i generiše se novi assembly. Ovako generisani sklopovi - assemblyes izgledaju tačno kao dynamic link library (.dll) ili izvršni programi (.exe). Prvih nekoliko bajtova unutar svakog sklopa sadrže mašinski kôd koji aktivira Common Language Runtime kada se sklopu pristupi iz drugog programa ili kada mu pristupi korisnik. Unutar sklopa je mešavina IL-a i mašinskog kôda, u zavisnosti koliki deo sklopa je kompajliran CLR-om. Sklopovi takođe sadrže metapodatke. Metapodaci za .NET program uključuju: - informaciju o svakoj javnoj klasi ili tipu, uključujući ime, iz kojih klasa je klasa izvedena i svaki interfejs koji klasa implementira, - informacije o svakoj javnoj metodi u svakoj klasi, uključujući ime i povratnu vrednost, - informacije o svakom javnom parametru za svaku metodu, uključujući ime svakog parametra i tip, - informacije o svakom javnom nabrajanju, uključujući imena i vrednosti za svaki član nabrajanja, - informaciju o verziji specifikacije skupa. Jedan od problema svojstvenih DLL datotekama je taj što nema načina da se pregleda koje tipove funkcija podržavaju, možete naći samo imena. COM datoteke ili komponente su obično izgrađene na vrhu DLL datoteka i imaju isti problem. Možete povezati biblioteke COM-tipova sa COM objektom, u zavisnosti od ogromnog broja ulaza Windows Registry-a koji vrlo lako mogu postati nekonzistentni. Imajući tako obilje podataka u svakom sklopu, .NET Framework nema potrebu da koristi Registry za pokretanje sklopova. Ako .NET program ima potrebu da koristi drugi .NET sklop, oni samo treba da budu locirani u istom direktorijumu. Ovo znači da ako želite da razmestite .NET program na drugom računaru, možete proći sa jednostavnim kopiranjem potrebnih datoteka. Možete pisati .NET kôd za pregledanje metapodataka drugog sklopa da biste pronašli da li podržava funkcije koje su vam potrebne. Ovaj proces se naziva refleksija o čemu Microsoft online dokumentacija sadrži veliki broj detalja.
49
Elektronske poslovne komunikacije –PRAKTIKUM
Opsezi imena ili imenski prostor (namespaces) Termin opseg imena ili imenski prostor (namespaces) poznat je iz jezika C++, a predstavlja hijerarhijski objektni model koji podržava veliki broj osobina i metoda. Na primer, serverske HTML kontrole nalaze se u okviru System.Web.UI.HtmlControls namespace-u, dok su serverske Web kontrole u System.Web.UI.WebControls namespace-u, a ADO+ u System.Data namespaceu. Namespaces su slični referencama u Visual Basic 6. Oni predstavljaju gradivne blokove u koje ubacuju objekte koji se koriste u ASP.NET stranama i uopšte u .NET okruženju. Opseg imena se koristi u .NET jezicima da bi se obezbedio kontejner za set klasa. Ovaj kontejner vam omogućuje da kreirate klase sa istim imenima koje koriste drugi programeri ili CLR-i. Na primer, možete koristiti set pomoćnih Visual Basic klasa koje ste preuzeli sa neke od Web aplikacija. Ove pomoćne klase mogu sadržati naprimer, klasu nazvanu ErrorLogger, koja ispisuje poruke o greškama u tekstualnu datoteku. Nažalost, već ste razvili klasu koja se takođe naziva ErrorLogger. Imati isto ime nije problem jer pomoćna klasa koristi različit imenski prostor od vašeg. Pogledajte "Helloworld.vb", uobičajni "Hello, World" program:
Imports System Module Module1 Sub Main ( ) Console.Writeline ("Hello, World") End Sub End Module
Prva linija koristi Imports ključnu reč, koja kaže kompajleru da uključi opseg imena System u ovaj program. Linija koja ispisuje "Hello, World" (Zdravo Svete), može biti napisana različito. Da u gornjem listingu nije korištena Imports ključna reč u prvoj liniji, linija za ispis bi morala izgledati ovako:
.
.
.
System.Console.WriteLine ("Hello, World.") .
.
.
Kao što se da primetiti, opsezi imena grupišu slične klase u jednu logičku grupu da bi sprečili konflikte sa imenima. Druga linija, u gornjem listingu, deklariše modul za kôd
50
Elektronske poslovne komunikacije –PRAKTIKUM
programa, jedan od načina na koji VB.NET organizuje svoj kôd. Linije od Sub Main() do kraja definišu podproceduru nazvanu Main ( ), gde se izvršava logika programa.
Izvršavanje Web Stranica i Web Servisa Pre upuštanja u bilo kakvo Web programiranje potrebno je dobro razumevanje kako Web server izvršava Web stranice ili Web servise. Internet aplikacije kao što su dinamičke Web strane ili korisnički Web servisi (Web Services) brinu o samo jednom zadatku - obrada korisničkih zahteva. Ovi zahtevi dolaze kao HTTP zahtevi iz klijentovog Web pretraživača ili kao SOAP zahtevi iz klijent programa Web Service-a (vidi Sliku 4). Web Service-i mogu takođe biti pozvani direktno iz Web pretraživača, pored toga što ih pozivaju i korisnički klijent programi. U većini slučajeva, korisnički klijent je potreban da uradi bilo šta korisno sa podacima koje vraća Web Servis. Tipičan HTTP zahtev izgleda ovako:
GET http/www.mojafirma.com/index.htm HTTP 1.1 Ovaj zahtev traži od Web servera koji se nalazi na računaru nazvanom "www.mojafirma.com" da pošalje nazad stranu sa imenom index.htm. Kao što smo ranije naveli, SOAP znači Simple Object Access Protocol. On je dakle, kao i HTTP, još jedan standard za slanje i primanje podataka sa servera. U stvari, SOAP se oslanja na HTTP i dodaje dodatne nivoe sofisticiranosti da bi dozvolio kompleksnije interakcije. U većini slučajeva SOAP zahtevi se šalju Web serveru kako bi obradio zahtev. SOAP zahtevi i odgovori su u stvari prilagođeni pozivajućim funkcijama umesto da prosto vraćaju Web strane. Web pretraživač najčešće generiše HTTP zahtev za određenom stranom koju korisnik želi da vidi. Web server, koji sve vreme osluškuje HTTP zahteve, preuzima zahtev i traži datoteku za tu određenu stranu. Ako se strana završava sa .htm ili .html ekstenzijom, Web pretraživač jednostavno vraća sadržaj datoteke. Naravno, Web serveri mogu uraditi više nego jednostavno prikazivanje datoteka koje se završavaju .htm ekstenzijom. Trenutno, možete naći Web prezentacije koje rade puno vrsta komplikovanih zadataka, kao što je naprimer usluga ispisivanja čekova kod online banaka, koja će vam omogućiti da plaćate svoje račune korišćenjem samo Web pretraživača. Kako ove dinamičke Web strane rade? Trik u procesu je da dinamičke
51
Elektronske poslovne komunikacije –PRAKTIKUM
strane koje sadrže kompleksnu programsku logiku koriste različite ekstenzije datoteka. Na primer ASP.NET strane se završavaju sa .aspx ekstenzijom. Kada Web server vidi zahtev za takvom stranom, on ne čita datoteku. Umesto toga, zna da prosledi HTTP zahtev .NET-u (tačnije, ASP.NET procesu), i omogući ASP.NET-u da preuzme zadatak procesiranja strane i slanja odgovora. Rezultat je da ASP.NET izvršava vaš kôd, koji realizuje bilo koji zadatak za koji je dizajniran. Web Servisi (Web Services) izvršavaju sličan zadatak sa dinamičkim Web prezentacijama jer Web Servisi jednostavno odgovaraju na zahteve klijenata sa Interneta i vraćaju podatke. Kao što je pomenuto, umesto da primaju HTTP zahteve, Web Servisi primaju SOAP zahteve. Svaki SOAP zahtev sadrži ime naročite funkcije, kao što je naprimer GetMyAppointments, i parametar za funkciju, kao što je recimo današnji datum. Svaki odgovor SOAP-a sadrži podatke koje vraća funkcija. Na primer, metoda GetMyAppointment može da vrati strukturu podataka koja izlistava sve dogovorene sastanke korisnika za danas. SOAP omogućuje klijent programima da prosleđuju skoro bilo koju vrstu strukture podataka Web Servisu. Zbog toga WebServisi i koriste SOAP. Slično ovome, Web Servisi mogu da vrate gotovo bilo koju vrstu strukture podataka klijent programu korišćenjem SOAP-a. Većina Web Servisa još uvek koriste Web server za komunikaciju sa spoljnim svetom. Posle svega, Web serveri su dobri za osluškivanje zahteva i vraćanje podataka. .NET Web Servisi koriste ASP.NET za obradu SOAP zahteva i prevode ih u strukture podataka koje oni mogu koristiti. Ovaj proces radi na isti način kao i dinamičke Web strane. Svi .NET Web Servisi završavaju sa ekstenzijom .asmx. Internet Information Serveri znaju da treba da proslede sve zahteve koji se završavaju sa .asmx ASP.NET-u, koji zatim preuzima i obrađuje SOAP zahteve i prosleđuje ih vašem korisničkom kôdu Web Servisa. Pogodan je momenat da se naglasi još jedna ideja koju promoviše ASP.NET, a koja se naziva Code-Behind model. Suština je u odvajanju biznis logike od prezentacione logike u dva separatna fajla. Tabela 2 prikazuje koje fajlove kreiraju pojedine .NET forme. Održavanje strana koje sadrže kombinaciju HTML i ASP ili sličnog kôda je komplikovano, kôd je težak za razumevanje zbog kombinovanja HTML-a i scripta. Možete lako praviti sintaksne greške u skriptu koje prouzrokuju grešku čitave strane, i često ASP automat ne daje dobru informaciju o greškama pri kodiranju. Želimo li sav programski kôd i logiku staviti u jedan fajl, a sav HTML i elemente korisničkog interfejsa u drugi, koristićemo code-behind (kôd-iza) osobinu ASP.NET-a.
52
Elektronske poslovne komunikacije –PRAKTIKUM
Pogledajmo Login page primer koji koristi kôd-iza, prikazan na sledeća dva listinga. LoginCodeBehind.aspx (samo elementi HTML-a i korisničkog interfejsa):
Welcome to the Sample Login Page UserName: Password
Prva linija listinga koristi inherits i src atribute unutar direktive strane (@ Page). Atribut inherits definiše pozadinski kôd klase koju će koristiti ova Web forma (ASP.NET strana). Svaka Web forma koristi samo jednu klasu. Atribut src kaže ASP.NET-u gde da locira izvornu "kôd-iza" datoteku za ovu Web formu. Preostale linije u ovom listingu su identične sa prethodnom verzijom login strane (ranije diskutovana), izuzev što je sav kôd uklonjen. Ovo znači da je sav kôd korisničkog interfejsa na jednom mestu. Login.vb (Visual Basic datoteka koja sadrži sav kôd za login stranu):
53
Elektronske poslovne komunikacije –PRAKTIKUM
imports System imports System.Web imports System.Web.UI.WebControls public class MyLoginPage inherits Page protected UserName as TextBox protected Password as TextBox protected LoginButton as Button public sub LoginClicked(Sender as Object, e as EventArgs) dim strUserName as string = UserName.Text dim strPassword as string = Password.Text if (strUserName = "Jovan Simić") and (strPassword ="topsecret") then Response.Write("Log on uspešan za " & strUserName & "") else Response.Write("Vaš username/password ne postoji.") end if end sub end class
Ovakav kôd deklariše klasu MyLoginPage, razvijenu iz Page klase. MyLoginPage je ime klase koje se koristi u inherits atributu u prethodnom listingu. Sav kôd iz klasa za Web forme mora biti razvijen iz Page klase. Primetite da MyLoginPage klasa deklariše svaku Web kontrolu korištenu u .aspx datoteci kao zaštićene članove klase. Napravili smo ove deklaracije jer koristimo kontrole u LoginClicked metodi za rukovanje događajem. Takođe smo dodali imports direktive za svaki opseg imena koji MyLoginPage koristi. Iako je kombinovani kôd iz ova dva listinga duži od originalne verzije koja nije koristila kôd-iza, ova nova implementacija je bolje organizovana. Takva organizacija
54
Elektronske poslovne komunikacije –PRAKTIKUM
postaje posebno značajna kada Web forme porastu, kao što se to dešava u praktičnim poslovnim aplikacijama. Tabela 2. Elementi Web aplikacije
Web Form
Ekstenzija kreiranog fajla .aspx fajl .aspx.vb ili .aspx.cs fajl .master fajl
Master Page
Web User Control
.master.vb ili .master.cs fajl .ascx fajl .ascx.vb ili .ascx.cs fajl .asmx fajl
Web Service .asmx.vb ili .asmx.cs fajl
ASP.NET – prednosti
Kao direktan odgovor problemima koji su programeri imali s ASP-om, dizajnirana je potpuno nova ASP.NET tehnologija koja se nameće kao rešenje za razvoj modernih i skalabilnih Web aplikacija. ASP.NET kôd se ne interpretira, već se koristi .NET Common Language Runtime (CLR). Drugim rečima, programerima su na raspolaganju svi .NET programski jezici, a kôd se kompajlira korišćenjem .NET Just-In-Time (JIT) kompajlera. Objektna orijentisanost ASP.NET-a znači da svaka ASP.NET Web stranica koju kreirate rezultuje kreiranjem klase izvedene iz generičke System.Web.UI.Page klase. Prilikom svakog poziva ASP.NET Web stranice kreira se instanca ove klase. Želite li zameniti komponentu svoje ASP.NET aplikacije, ne morate „spuštati“ server. Štaviše, možete je samo prekopirati preko stare. Ne morate brinuti ni o tome koristi li ko u to vreme staru komponentu. ASP.NET će opsluživati sve postojeće zahteve za starom komponentom, dok će korišćenjem nove komponente procesirati sve nove zahteve. Ovo je moguće jer CLR dozvoljava istovremeno
55
Elektronske poslovne komunikacije –PRAKTIKUM
postojanje više verzija iste komponente, čak i u unutar istog procesa. U arhitekturi ASP.NET-a jasno su odvojeni HTML i programski elementi Web stranice. Tako je omogućeno spremanje tih elemenata u odvojene datoteke, pri čemu se znatno olakšava saradnja između Web programera i dizajnera. Visual Studio .NET predstavlja izuzetno bogato razvojno okruženje. Web programeri su sada, u poređenju s Windows programerima, po prvi put u mogućnosti da ravnopravno razvijaju aplikacije. Microsoft IntelliSense podrška nije ograničena samo na programski jezik (Visual Basic, Visual C#), već pomaže i prilikom upisivanja HTML i XML kôda. Postavke ASP.NET aplikacija spremljene su u XML datoteke koje se jednostavno mogu čitati i menjati. Važno je takođe da ih zajedno s ostalim datotekama koje sačinjavaju vašu aplikaciju jednostavno možete kopirati sa servera na server. ASP.NET automatski uključuje skrivenu kontrolu u Web stranice u koju sažima i sprema stanja svih kontrola na stranici. Ove (viewstate) podatke koristi za automatsko popunjavanje podataka koje je korisnik uneo. Malo koji programski jezik je ikada, još u Beta1 verziji, pobudio toliko zanimanje programera kao što je to bilo u slučaju s ASP.NET-om. Sada je jasno i zbog čega su ASP.NET programeri bili oduševljeni, jer ne događa se svaki dan da bude odgovoreno na sve njihove dotadašnje probleme i zahteve. ASP.NET dakle, pokušava da olakša prelaz programera Windows aplikacija na Web aplikacije tako što im dozvoljava da prave stranice koje se sastoje od kontrola koje su slične Windows korisničkom interfejsu. Web kontrola, kao što je dugme ili labela funkcioniše na skoro isti način kao kad je deo Windows-a. ASP.NET teži da privoli programere da razvijaju aplikacije koristeći event-driven paradigmu, a ne tradicionalni Web skripting način. Nadalje, ASP.NET koristi .NET Framework kao infrastrukturu, koja nudi Runtime Environment virtuelnu mašinu i biblioteku klasa kao kod Jave. Prednosti u odnosu na klasični ASP su mnogobrojne: - Aplikacije se brže izvršavaju i lakše je uočiti greške, - Moguće je korišćenje već predefinisanih template-a i time skratiti vreme izrade, - Velika biblioteka klasa, korišćenje više programskih jezika, - Mogućnost keširanja cele ili delova stranice, radi uštede vremena i resursa, - Session state se može sačuvati u SQL Server bazi ili u odvojenom procesu na istoj mašini gde je Web server, ili na različitoj mašini, tako da se vrednosti sesije ne izgube kad se resetuje IIS.
56
Elektronske poslovne komunikacije –PRAKTIKUM
Međutim, ključna prednost ASP.NET-a ogleda se u načinu pisanja kôda dakle, u načinu programiranja što ćemo ilustrovati konkretnim primerom. Klasične ASP stranice pišu se proceduralno, što znači da je svaki zadatak koji je potrebno obaviti najčešće smešten u posebnoj ASP stranici, a redosled kojim se izvršavaju pojedine komande unutar stranice određen je njihovim položajem (komande se izvršavaju odozgo prema dole). Kod ASP.NET-a, situacija je drastično drugačija. Recimo, za jednostavan zadatak ispisa forme u koje korisnik treba upisati podatke i prikazati te podataka nakon slanja forme, u klasičnom ASP-u potrebne su dve stranice: jedna za ispis forme, druga za prikaz podataka nakon klika na submit dugme. Alternativa je korišćenje jedne stranice, sa nekoliko if petlji za proveru da li je forma poslata i da li su polja popunjena. Doda li se tome potreba za proverom unosa (error checking), postaje jasno da to nije jednostavno programirati (zahteva puno kôda). U ASP.NET-u sve se to može uraditi pomoću jedne stranice. I ne samo to – korišćenjem serverskih kontrola i ugrađenih rutina za proveru grešaka moguće je gore navedeni primer napisati u tek par linija kôda. Da biste shvatili iznetu ideju, pogledajmo kôd: Klasični ASP – datoteka za ispis forme forma.asp:
Ime i prezime: E-mail adresa: Datoteka za prikaz podataka nakon traženog klika na dugme: ispis.asp
ASP.NET - datoteka primer.ascx:
Ime i prezime: E-mail adresa: Sub Prikazi (sender as Object, e as EventArgs) WelcomeMessage.Text = "Pozdrav, vaše ime je " & Ime.Text & "!" End Sub
Kôd više liči na deo nekog Visual Basic projekta, nego na Web stranicu. Dok je kod klasičnog ASP-a teško izbeći tzv. špageti kôd, ASP.NET kôd je lako čitljiv, uspešno odvojen od dizajna stranice i uopšte mnogo sličniji pravom programskom jeziku. Pored iznetih programskih poboljšanja jedna od najvažnijih novosti ASP.NET jeste značajno ubrzanje izvršavanja programskog kôda. Za razliku od dosadašnjih ASP
58
Elektronske poslovne komunikacije –PRAKTIKUM
skripti, koje su interpretirane prilikom svakog pozivanja od strane klijenta, ASP.NET kôd se u potpunosti kompajlira. Kada se stranica prvi put pozove biće kompajlirana pomoću CLR-kompatibilnog (Common Language Runtime) kompajlera i pri svakom sledećem učitavanju pokreće se već kompajlirana verzija, koja se izvršava puno brže. Kada dođe do osvežavanja (update) stranice, ona pri prvom učitavanju biva rekompajlirana. Kompajliranje donosi određeno ubrzanje, ali najveći deo vremena izvršavanja neke skripte ipak odlazi na pristupanje bazama i uzimanje podataka iz njih. Upravo zato ASP.NET donosi nekoliko tehnika keširanja podataka. Recimo da imate stranicu na kojoj prikazujete poslednjih 20 unosa iz baze i da toj stranici pristupa oko 100 ljudi u minuti. Bez obzira koju bazu podataka koristili i koliko jak server imali, ovi korisnici će prouzrokovati prilično usporenje servera. U ASP.NET skripti koja obavlja taj zadatak dovoljno je upisati naredbu koja će keširati podatke na nekoliko minuta (nekoliko sati ili dana, zavisi od frekvencije dodavanja novih podataka u bazu), tako da će skripta samo za prvog korisnika uzeti podatke iz baze, a ostali će biti usluženi keširanom stranicom! Moguće je i fragmentno keširanje, tako da možete recimo odrediti da se reklame ne keširaju (uvek se učitavaju iz baze), ali da se ispisi onih 20 unosa iz baze keširaju. Još jedna bitna novost jesu serverske kontrole. Dok ste u ASP-u za ispis forme koristili standardne HTML kontrole (texbox, password, select, button i sl.), u ASP.NET-u koristite ekvivalentne serverske kontrole, koje se kasnije renderišu u obični HTML, u zavisnosti od browsera. Dakle, problemi sa kompatibilnošću browsera su prošlost! U svojoj skripti pišete naredbe koje su uvek iste (recimo aspxtextbox ili aspxbutton), a server vraća klijentu HTML kôd u zavisnosti od njegovog browsera. Sa ovim kontrolama možete kombinovati kontrole za proveru (validation), tako da i kompleksne if petlje potrebne za proveru unosa u formi konačno odlaze u prošlost. Jedan od najvećih problema sa klasičnim ASP skriptama jeste njihovo postavljanje na server. Ako se radi o jednostavnim skriptama koje ne koriste nikakve serverske objekte ili posebne postavke IIS-a, onda je postavljanje na server vrlo jednostavno. Ali ako vaša skripta zahteva posebne COM objekte ili IIS postavke postavljanje na server može biti kompleksno. Potrebno je proveriti da li ti objekti postoje na serveru, da li su registrovani, proveriti kakve su postavke servera... Sve ove probleme rešava ASP.NET. COM objekte koje vaša skripta koristi više uopšte nije potrebno registrovati na serveru. Dovoljno ih je kopirati na server u odgovarajući folder i skripta ih može koristiti. Takođe, sa ASP.NET-om stiže i tekstualna konfiguraciona datoteka u kojoj možete podesiti bitne postavke, koje su se do sada mogle menjati jedino preko IIS administratorskih stranica. Iako je i klasični ASP po tom pitanju već bio iznad
59
Elektronske poslovne komunikacije –PRAKTIKUM
konkurencije, ASP.NET uvodi još nekoliko jezika koji se mogu koristiti za programiranje skripti. Umesto VBScript-a (oslabljene verzije VB-a), koja je do sada predstavljala default jezik za programiranje ASP stranica, ASP.NET stranice se mogu programirati u dva "prava" programska jezika - VB.NET i C#. Pored njih, direktno je podržan JScript.NET, a Visual Studio.NET (samim tim i ASP.NET) će podržavati oko 20 jezika! VB.NET i C# su moderni jezici, koji ne samo da podržavaju polimorfizam i nasleđivanje objekata, nego se mogu i kombinovati – VB.NET može nasleđivati C# objekte i obratno. Pored prednosti, ni ASP.NET nije bez mana: - Server .NET Framework radi samo na IIS ili na Cassini-ju, Web serveru razvijenom u .NET okruženju koji se koristi uglavnom sa WebMatrix-om, open source ASP.NET 1.1 razvojnom okruženju. Može se izvršavati i pod Linux operativnim sistemom na alternativnom Framework-u, kao što je npr. Mono Project. - Ranije verzije ASP.NET su kritikovane zbog nepoštovanja standarda. Generisani HTML i JavaScript koji je slat korisničkom browseru nije uvek bio validan prema W3C/ECMA standardima. Takođe deo koji se bavi detekcijom browsera je često slao korisnicima, koji ne koriste Internet Explorer, lažne poruke da poseduju verziju čitača koja je ispod 4.0 verzije IE-a, te tako korisnici nisu mogli da pristupe sadržaju sajta. Tendencije u razvoju ASP.NET-a ASP.NET je svoju punu zrelost dostigao u svojoj drugoj verziji. Setimo se da je ASP .NET kao deo .NET Frameworka osmišljen kako bi programeri korišćenjem nekog od .NET jezika (Visual Basic, C#, ...) mogli pisati moćne Web aplikacije. ASP.NET je u svojoj prvoj verziji doneo mnoga poboljšanja i bio je mnogo više od same nadogradnje za korisnike koji su koristili obični ASP. Naredne verzije ASP.NET-a obiluju novim i poboljšanim mogućnostima na području programerske produktivnosti, administracije, upravljanja, performansi itd. ASP .NET 2.0 uključuje uobičajne Web zadatke u aplikacione servise i kontrole koje programeri mogu više puta upotrebljavati tokom izrade svojih aplikacija. Mikrosoft ističe kako je korišćenjem ASP .NET moguće značajno skratiti vreme potrebno za realizaciju kompleksnih projekata. Još se nisu stišali utisci izlaska Visual Studia 2008 i C# 3.0, a Microsoft je još krajem prošle godine najavio svoju novu verziju 2010, kao i novine koje trebaju doći. Šta donosi VS 2010:
60
Elektronske poslovne komunikacije –PRAKTIKUM
§
§ §
ParallelFx biblioteku za paralelno programiranje pod .NET jezicima. Ovo proširenje .NET-a je ugledalo svetlo dana još u decembru 2007. godine lansiranjem prvog CTP-a ove biblioteke. Druga najavljena vest je da će novi .NET programski jezik F# biti uključen u novi Visual Studio 2010. Naravno, pored dobrih vesti Microsoft je najavio da napušta razvijanje LINQ to SQL tehnologije, te preporučuje developerima da koriste i prelaze na Entity Framework koji bi u novoj verziji bio “poboljšan“.
Pored ParallelFX nove biblioteke odnosno proširenja .NET Frameworka, vrlo interesantne stvari dogodile su se u samom C# programskom jeziku koji postaje i ostaje jedan od najpopularnijih programskih jezika. C# 4.0 proširen je u nekoliko smerova:
§ § § §
Imenski i opcioni parametri (Named and Optional parameters) Dinamička podrška Varijance COM interoperabilnost
Web forme i AutoPostBack
Jedan od osnovnih delova ASP.NET aplikacije su Web forme, čija je uloga vezana za prikaz same stranice prema korisniku. Novost koju donose Web forme je već pomenuta mogućnost izrade Web korisničkog interfejsa na isti način kao i kod windows aplikacija. Radi se o objektno orijentisanom pristupu, gde se nakon učitavanja dokumenta generišu odgovarajući objekti, događaji, te reakcija na njih. Cilj ovakvog pristupa je omogućiti programerima što bržu i bezbolniju izradu korisničkog interfejsa. Međutim, postoje dve bitne razlike između klasičnih, klijentskih aplikacija i Web aplikacija, koje to bitno otežavaju. Prva bitna razlika je ta da se Web aplikacije izvršavaju na serveru. Sve što korisnik napravi u svom browseru potrebno je poslati natrag. Tek nakon što primi te informacije, server izvršava odgovarajući kôd. Druga razlika je ta što se kod Web aplikacija na pamte stanja (stateless). Šta to zapravo znači? U trenutku slanja generisane stranice korisniku, svi stvoreni objekti i informacije specifične za klijenta se uništavaju, čime se znatno manje opterećuje sistem. Negativna posledica je gubitak informacija potrebnih za bitno jednostavniju interakciju s
61
Elektronske poslovne komunikacije –PRAKTIKUM
korisnikom. Još jedna otežavajuća stvar vezana za prvi problem je način na koji se podaci šalju sa klijentskog računara na server. Kod HTML formi, kada korisnik unese određene podatke ili odabere neku od ponuđenih opcija, informacije se šalju natrag na server u obliku niza znakova. Na primer, u formi gde se od korisnika traži da unese ime, prezime, i odabere neku opciju (checkbox), niz znakova sa tim podacima bi mogao izgledati ovako:
Ime=Marko&Prezime=Marković&NekaOpcija=on
Šta sa tim informacijama? Naravno, uvek je moguće parsirati niz, međutim to baš i ne bi bio preterano elegantan niti jednostavan pristup. U klasičnom ASP-u postoji sloj iznad tih podataka dobijenih POST metodom, koji parsira niz, te omogućuje nešto jednostavniji pristup tim podacima. Na primer, moguće je napisati sledeće:
string ime = Request.Form[”Ime”]; Iako dosta pojednostavljuje stvar, ovakav pristup je još uvek daleko od objektno orijentisanog pristupa. ASP.NET tu ide korak dalje, te pomoću dobijenih podataka konfiguriše odgovarajući kontrolni objekt. Tako je recimo moguće napisati sledeće:
string ime = txtIme.Text;
Prednost ovakvog pristupa je osim jednostavnosti i to što sada tip podatka nije isključivo string, već odgovara kontroli. Tako recimo za odabranu opciju iz gornjeg primera nećemo dobiti niz znakova "on", već odgovarajuću logičku vrednost. Isto tako, koristeći kontrolni objekt, moguće je i postavljati vrednosti. Naredba: txtIme.Text = "Marko Marković" postavlja taj tekst unutar odgovarajućeg polja za unos na samoj stranici. Još jedna novost kojom je znatno olakšana izrada korisničkih interfejsa je model zasnovan na događajima. Zapravo, ne radi se o novoj funkciji, pošto se takav pristup već dugo koristi kod izrade windows aplikacija, međutim novost je njegova primena kod Web interfejsa. Do sada su programeri u slučaju da imaju više od jednog
62
Elektronske poslovne komunikacije –PRAKTIKUM
dugmeta na stranici, morali pisati kôd koji proverava koji od njih je pritisnut, pa tek onda izvršiti odgovarajući deo kôda. Sada za svaku kontrolu na Web stranici postoji odgovarajuća metoda, koja se izvršava u slučaju odgovarajućeg događaja. Postavlja se pitanje kako je moguće implementirati ovakav model, uz već spomenuta ograničenja Web aplikacija? ASP.NET zapravo u pozadini izvršava čitav niz operacija kako bi za programera emulirao događaje. Podaci dobijeni sa Web forme ne koriste se samo za ažuriranje kontrolnih objekata, već se njihovo stanje upoređuje sa stanjem u trenutku prethodnog postbacka, te u slučaju promene sistem generiše odgovarajući događaj. Sam postback je pomenut već nekoliko puta. O čemu se zapravo radi? Windows programeri su navikli na bogat model događaja, koji omogućuje reagovanje na pomake miša, stisnute tastere, interakciju sa interfejsom i slično. Problem Web aplikacija je u tome što se sama aplikacija izvršava na serveru, dok se interakcija odvija unutar Internet browsera na klijentovom računaru. Reagovanje na akcije korisnika uključuje slanje informacija sa forme na server, njihovo analiziranje, te aktiviranje odgovarajućih događaja. Slanje svih tih podataka kod svakog pokreta mišem bilo bi krajnje nepraktično. Kada se onda dešava taj postback? Kod običnog HTML-a jedini način je bio klik na odgovarajuće ”submit” dugme. Za bilo kakvu ugodniju interakciju s korisnikom, to nije dovoljno. Možda nije potrebno reagovati na svaki pokret miša, ali promene unutar polja za unos teksta ili izbor određenih opcija unutar forme su akcije koje bi trebale aktivirati određeni događaj. Kako funkcioniše automatski postback, kojim je u ASP.NET-u rešen ovaj problem? Da bi se nakon određene promene unutar kontrole automatski obavio postback, potrebno je toj kontroli postaviti opciju AutoPostBack. Tada se generiše odgovarajući klijentski JavaScript kôd, koji reaguje na događaje unutar browsera, te koristeći funkciju _doPostBack() šalje podatke na server. Čitava stvar je i kod klasičnog ASP-a funkcionisala na isti način. Programer je u JavaScriptu definisao funkcije koje bi reagovale na promene unutar forme, te slao podatke na server. Ono što je novo kod ASP.NET-a je automatizovanost čitavog procesa. Umesto pisanja klijentskih skripti i brige oko toga kada će se te skripte pokrenuti, sada je sasvim dovoljno postaviti logičku vrednost svojstva AutoPostBack za određenu kontrolu. Serverske kontrole Jedan od osnovnih delova ASP.NET-a su serverske kontrole. Radi se o klasama .NET Frameworka koje predstavljaju vizuelne elemente na formi. Neke od
63
Elektronske poslovne komunikacije –PRAKTIKUM
njih su prilično jednostavne i vezane su za određene HTML tagove, dok su druge kompleksnije i na stranici su prikazane čitavim nizom HTML elemenata. ASP.NET 2.0 je doneo više od 50 novih serverskih kontrola koje olakšavaju rad s bazama podataka, autentifikacijom, čarobnjake za izradu navigacije, menije, tzv. treeview kontrole, portale itd. Mnoge od ovih kontrola direktno iskorištavaju nova svojstva ASP.NET-a.
ASP.NET kontrole možemo svrstati u sledeće kategorije: §
HTML serverske kontrole U ovo grupu spadaju obične HTML kontrole deklarisane sa atributom runat="server". U HTML serversku kontrolu moguće je pretvoriti bilo koji HTML tag. Ukoliko ne postoji odgovarajuća klasa, ASP.NET jednostavno koristi HtmlGenericControl klasu. Na sledećoj slici je prikazana hijerarhija klasa definisanih za HTML kontrole:
§
Web kontrole Ove klase uz standardnu funkcionalnost HTML tagova sadrže i određena svojstva i metode koje programerima omogućuju lakši pristup i manipulaciju tim kontrolama. U ovu grupu spadaju između ostalog HyperLink, ListBox, te Button kontrole. Sledeća slika prikazuje deo hijerarhije klasa za ovu grupu:
64
Elektronske poslovne komunikacije –PRAKTIKUM
§
Rich kontrole; Ovakve kontrole imaju mogućnost generisanja većih delova HTML i JavaScript kôda, kojim prikazuju nešto kompleksnije delove korisničkog interfejsa. Primer kontrola iz ove grupe su Calendar, AdRotator i TreeView kontrola.
§
Validacijske kontrole; Kao što sam naziv kaže, ove kontrole su zadužene za validaciju vrednosti koje korisnik unosi preko forme. Moguće je na primer definisati da unos u određeno polje mora biti broj, datum, ili da mora sadržavati određeni broj znakova.
§
§ §
Kontrole podataka (Data Controls); Radi se o kontrolama namenjenih ispisu i editovanju većih količina podataka. Navigacione kontrole (Navigation Controls); Koriste se za navigaciju unutar hijerarhije sajta. Login kontrole (Login Controls);
65
Elektronske poslovne komunikacije –PRAKTIKUM
§
§
Umesto ručnog pisanja kôda koji bi se bavio autentikacijom korisnika, praćenjem njihovog statusa, registracijom i sličnim problemima, ASP.NET nudi već gotove kontrole za to. Web parts kontrole (Web Part Controls); U ovu grupu spadaju kontrole koje nude podršku za izgradnju modularnih Web portala. ASP.NET mobile kontrole. Radi se o grupi kontrola koje nude podršku za mobilne klijente poput ručnih računara i mobilnih telefona.
Korisničke kontrole Kao što se već da zaključiti, ASP.NET dolazi sa podrškom za jako veliki broj kontrola, od onih najjednostavnijih, do vrlo kompleksnih, poput Calendar kontrole. Ipak, ma koliko kontrola bilo podržano, pre ili kasnije će se pojaviti potreba za nečim drugačijim. Ono što ASP.NET nudi je mogućnost kreiranja vlastitih kontrola. Korisničke kontrole predstavljaju mali deo stranice koji uključuje statički HTML kôd i Web server kontrole. Prednost ovog pristupa je ta što je jednom kreiranu kontrolu moguće koristiti unutar više stranica iste aplikacije, te joj dodavati vlastita svojstva, događaje i metode. Time postižemo da su delovi koji se ponavljaju unutar više stranica standardizovani. Ista stvar bi se mogla postići kopiranjem tog dela kôda svaki put kada nam je to potrebno, međutim, takav pristup donosi jako puno problema. Šta u slučaju debagiranja ili nekih drugih izmena unutar tog dela? Ukoliko ne koristimo kontrole, već obično kopiranje kôda, izmene je potrebno napraviti na svim mestima gde se taj kôd pojavljuje. Korisničke kontrole se spremaju u datoteke s ekstenzijom .ascx i jako su slične ASP.NET Web formama (.aspx), a mogu sadržavati sve što i bilo koja druga stranica. Ipak, osim nekih sitnih razlika u sintaksi, kao što su definicije u zaglavlju datoteke, bitna stvar je da korisničke kontrole nije moguće direktno pozvati, već se mogu videti samo kao deo neke stranice. Kako se bitno ne razlikuju, često je najjednostavnije napraviti korisničku kontrolu na način da se napravi obična Web stranica, te izmeni par linija datoteke, kao što je "Control" umesto "Page" u zaglavlju, te se uklone i tagovi. Ovako definisanom kontrolom se unutar stranice manipuliše na isti način kao i svakom drugom ASP.NET kontrolom. Dakle, preko definisanih svojstava, metoda i događaja. Međutim, još jednom je potrebno naglasiti, elementima same kontrole nije moguće pristupiti.
66
Elektronske poslovne komunikacije –PRAKTIKUM
Ukoliko kontrola sadrži recimo neko dugme, njegovim metodama i svojstvima je moguće pristupiti samo unutar te kontrole. Ako im želimo pristupati van kontrole, potrebno je definisati javne metode kojima bi se to moglo napraviti. Teme Kod izrade Web aplikacije nije dovoljno dizajnirati svaku stranicu za sebe. Bitno je i da to sve skupa bude uniformno i izgleda kao jedna celina. Da bi ta standardizacija izgleda stranica bila što jednostavnija, ASP.NET nudi dve mogućnosti: teme i master pages. I jedan i drugi pristup su novost predstavljena u verziji ASP.NET 2.0. Postavlja se pitanje čemu sve to kada je izgled stranica moguće stanadrdizovati korišćenjem CSS-a (Cascading Style Sheets). Iako CSS dosta pomaže kod definisanja izgleda stranica, problem je što je ograničen na određene atribute kojima je moguće formatirati stranicu (na primer font, margine, pozadina, boje i slično). Ukoliko želimo standardizovati stvari poput ponašanja GridView kontrole ili pak Kalendara na stranici, CSS nam neće biti dovoljan. ASP.NET teme nude rešenje za taj problem. Moguće ih je koristiti za definisanje stilova i atributa bilo koje kontrole. Ono u čemu se bitno razlikuju u odnosu na CSS je to što je podrška za CSS implementirana unutra samog browsera, dok su teme implementirane unutar .NET frameworka na samom serveru. Za korišćenje tema unutar aplikacije potrebno je unutar osnovnog direktorijuma te Web aplikacije kreirati direktorijum "App_Theme", te još poseban direktorijum za svaku od tema koje želimo koristiti. Moguće je imati proizvoljan broj tema, ali u jednom trenutku samo je jedna aktivna. Sam kôd, odnosno opis teme nalazi se u skin datoteci. Ta datoteka zapravo predstavlja listu kontrolnih tagova za one atribute koje želimo definisati. Ako na primer želimo da su elementi Button i ListBox bele boje sa crvenom pozadinom, u .skin datoteku ćemo ubaciti sledeće dve linije:
67
Elektronske poslovne komunikacije –PRAKTIKUM
Uz naziv kontrole, obavezan deo je i runat="server", dok je sve ostalo opciono. Osim definisanja fonta i boje, moguće je definisati i korišćenje slika. Sledeći primer pokazuje kako se umesto standardnog izgleda dugmeta mogu koristiti slike.
Uz prethodni kôd, potrebno je i unutar .aspx datoteke svako dugme na koje želimo da se ovo odnosi, definisati na sledeći način:
Temu je moguće definisati i u više .skin datoteka. Dok god se nalaze u istom direktorijumu, ASP.NET ih tretira kao deo definicije jedne teme. Kako definisati koja se od dostupnih tema koristi? Definisanje teme za određenu stranicu moguće je postići korišćenjem atributa Theme u zaglavlju .aspx datoteke, kao što je pokazano u sledećem primeru:
Drugi način je definisanje teme unutar konfiguracione datoteke aplikacije. To se postiže na sledeći način:
68
Elektronske poslovne komunikacije –PRAKTIKUM
Treća opcija je dinamičko dodeljivanje teme pri učitavanju stranice. Taj pristup koristimo u slučaju da želimo korisniku omogućiti biranje teme, te istu želimo učitati iz određene varijable. U tom slučaju jednostavno atributu Page.Theme dodelimo željenu vrednost. Master Pages Master Pages je svojstvo koje omogućava da na svom Web projektu definišete strukturu i elemente interfejsa za vašu aplikaciju. To uključuje elemente poput zaglavlja, podnožja, trake za navigaciju… Na jednom mestu sada možete kontrolisati izgled i ponašanje celog projekta. To omogućava svima da imaju lep, unificiran izgled stranica, takođe, izbegava se nepotrebno dupliranje kôda za one delove stranice koji su zajednički celom projektu. Teme i CSS nam omogućuju definisanje izgleda delova Web stranice, ali njima nije moguće odrediti strukturu i raspored elemenata. Za rešenje ovog problema ASP.NET nudi novost pod nazivom master pages. To su zapravo šabloni stranica pomoću kojih je moguće definisati fiksni sadržaj, te prostor za umetanje ostatka sadržaja. Osim uniformne strukture stranica, prednost ovakvog pristupa je i to što se u slučaju izmene šablona automatski menja izgled svih stranica. Master pages nude podršku za sledeće elemente: §
Kreiranje odvojenih delova stranice i njihovo korišćenje unutar više drugih stranica.
§
Mogućnost definisanja zaštićenih delova i delova koje je moguće editovati. Stranice koje koriste ovakve šablone mogu menjati samo delove koji su im dozvoljeni.
§
Mogućnost prilagođavanja elemenata koji su preuzeti iz šablona.
§
Mogućnost ručnog korišćenja šablona unutar stranice, ili njegovog dinamičkog definisanja prilikom učitavanja.
Osim pojma master pages, podrška za ovu funkcionalnost donosi i još jedan novi pojam, nazvan content pages. Radi se zapravo o stranicama koje mogu sadržavati proizvoljan sadržaj, a koriste se za popunjavanje „praznina“, odnosno popunjavanje onih delova koji su ostavljeni za prilagođavanja unutar šablona. Na primer, tipičan slučaj je kada master page sadrži fiksne elemente poput zaglavlja ili nekog menija, dok content page popunjava centralni deo stranice.
69
Elektronske poslovne komunikacije –PRAKTIKUM
Master page se u većini stvari bitno ne razlikuje od običnih stranica. Dakle može sadržavati bilo kakav HTML kôd i kontrole. Kao i kod korisničkih kontrola, i ovde je prva razlika u samom zaglavlju datoteke, koje može izgledati ovako:
Druga bitna razlika je ta što se ovde može koristiti kontrola ContentPlaceHolder, koju inače nije moguće koristiti u običnim stranicama. Sama kontrola nema nikakvih bitnih svojstava koja je potrebno podešavati, a u šablon se ubacuje na sledeći način:
Da bi iskoristili već definisanu master page pri kreiranju nove stranice, potrebno je u zaglavlju dodeliti vrednost atributu MaterPageFile. Taj atribut mora pokazivati na datoteku sa šablonom.
Putanja u gornjem primeru počinje sa "~/", što zapravo predstavlja osnovni direktorijum Web aplikacije. Ukoliko izostavimo taj deo, .NET Framework će datoteku tražiti u direktorijumu s nazivom Master-Pages, koji je potrebno ručno kreirati. Stavljanje ovog atributa u zaglavlje nije jedino što trebamo napraviti da običnu stranicu pretvorimo u content page. Kako se sadržaj ove stranice dodaje na odgovarajuće mesto u šablonu, stranica ne sme sadržavati tagove poput , i . Osim toga, za dodavanje sadržaja potrebno je koristiti kontrolu Content. Za svaki ContentPlaceHolder iz šablona definiše se po jedna Content kontrola sa istom vrednosti ID svojstva. Za ContentPlaceHolder iz gornjeg primera, definisanje sadržaja bi izgledalo otprilike ovako:
70
Elektronske poslovne komunikacije –PRAKTIKUM
Nekakav sadržaj.
Ukoliko nismo sigurni da li ćemo uvek menjati sadržaj nekog dela stranice, moguće je postaviti sadržaj koji se pojavljuje na mestu ContentPageHoldera samo u slučaju da nije definisan nikakav drugi sadržaj. To je moguće napraviti na sledeći način:
Nekakav sadržaj.
Ukoliko želimo koristiti isti šablon za sve stranice unutar Web aplikacije, moguće je to definisati u web.config datoteci na sledeći način:
Ovakav pristup zna biti nezgodan pošto se odnosi baš na sve stranice i u slučaju da trebamo neki izuzetak, dosta teško ga je napraviti. Zbog toga je možda bolje koristiti kompromisno rešenje, gde bi u jedan direktorijum stavili sve stranice za koje se koristi isti šablon, te samo za taj direktorijum ubacili gornji kôd u web.config datoteku. Treći način korišćenja master stranice je njeno dinamičko definisanje. Ovakav pristup koristimo u slučaju da za različite korisnike želimo prikazati nešto drugačije stranice. Sve što je potrebno napraviti je dodeliti vrednost atributu Page.MasterPageFile za vreme inicijalizacije stranice. Personalizacija i lokalizacija
Ova svojstva omogućavaju da se korisnicima pruži što bolji osećaj prilikom poseta i rada na njihovoj stranici ili Web aplikaciji. Objekt Profile omogućava da se na
71
Elektronske poslovne komunikacije –PRAKTIKUM
jednom mestu čuvaju specifični podaci i informacije te da se na osnovu njih prilagodi ponašanje, ali i izgled sajta. Danas kada je svet postao globalno selo, lokalizacija postaje važan i neizostavan deo projekata. Do sada je lokalizacija zahtevala dosta kodiranja i resursa, ali počevši od verzije ASP.NET 2.0. i Visual Studija 2005, ovo je postalo jednostavnije. Sada odmah možete automatski prepoznati lokalne postavke korisnika i prikazati interfejs na njegovom jeziku/kulturi. Osim ovih, nove verzije ASP .NET-a donose čitav niz novih opcija i poboljšanja za sve strane uključene u projekt. Do službenog izdavanja Visual Studia 2010 proći će je još neko vreme, a u međuvremenu smo sasvim sigurno koristili zanimljive i uzbudljive mogućnosti tekuće verzije ASP.NET-a.
Visual Studio .NET Želite li Visual Studio .NET instalirati na svoj računar, morate imati Windows XP , Vistu ili Windows 7 operativni sistem. Sam postupak instalacije je krajnje jednostavan i u pravilu se svodi samo na pažljivo praćenje uputstva instalacionog čarobnjaka. Skrećemo pažnju na to da najpre instalirate MS Internet Information Server (IIS) i MS SQL Server, pa tek onda .NET Framework i Visual Studio .NET. Visual Studio.NET (VS) je namenjen za izradu mnogih softverskih proizvoda, počev od aplikacija sastavljenih od prostih linijskih komandi, pa sve do kompleksnih tipova projekata. VS nije neophodan za programiranje u C#, ali nam znatno olakšava izradu aplikacije. Možemo (ako to poželimo) napisati naš kôd u najobičnijem tekst editoru, kao što je Notepad, i kompajlirati kôd u programske skupove koristeći kompajler za linijske komande koji je u sastavu .NET okruženja. Međutim, zašto ići linijom većeg otpora, kada možemo iskoristiti izvanrednu moć VS-a da nam pomogne? Sledi kratka lista razloga zbog kojih je VS pravi izbor za .NET razvojno okruženje:
72
}
VS automatizuje korake neophodne pri kompajliranju izvornog koda, ali u isto vreme dozvoljava i kompletnu kontrolu nad opcijama ukoliko želimo da ih promenimo.
}
VS editor je tesno povezan sa jezicima VS-a (uključujući C#) i to tako da omogućuje pametnu detekciju grešaka i sugeriše odgovarajući kôd na pravom mestu dok kucamo program – IntelliSense tehnologija.
Elektronske poslovne komunikacije –PRAKTIKUM
}
VS sadrži i dizajnerske alate za aplikacije koje uključuju Windows obrasce (Forme) kao i Web obrasce (Web Forme), koji vam omogućuju prost prevuci– i–spusti (drag-and-drop) dizajn UI elemenata.
}
Mnogi tipovi projekata koji su mogući u C# mogu se napraviti sa "opštenamenskim" kôdom koji se već nalazi na pravom mestu. Umesto da počinjemo od nule često ćemo naći različite datoteke koje sadrže gotov kôd, usled čega se skraćuje vreme potrebno za realizaciju projekta.
}
VS sadrži nekoliko čarobnjaka ili vodiča koji vam automatizuju zadatke opšte namene, koji mogu dodati odgovarajući kôd postojećim datotekama, a da mi o tome ne vodimo brigu (ili u nekim slučajevima čak i ne pamtimo tačnu sintaksu).
}
VS sadrži moćne alatke za prikazivanje i navigaciju elemenata našeg kôda, bez obzira da li se radi o prirodnom C# kôdu ili nekoj bitmap slici, ili možda zvučnoj datoteci.
}
Pored toga što olakšava pisanje aplikacija, VS omogućuje i jednostavniju distribuciju i prilagođavanje projekata klijentima, kako bi ih oni lakše koristili ili instalirali.
}
VS omogućuje i napredne tehnike otklanjanja grešaka pri razvoju projekata, i to tako da možemo u isto vreme ući u kôd jedne instrukcije dok pazimo u kakvom je stanju aplikacija koja se izvršava.
Kada koristimo VS za razvoj aplikacija, mi to radimo preko takozvanih rešenja. Rešenje, po VS terminologiji, predstavlja nešto više od aplikacije. Rešenja sadrže projekte, koji mogu biti zasnovani na "Windows obrascima", "Web obrascima", i tako dalje. Mada rešenja mogu sadržati i višenamenske projekte, tako da možemo grupisati srodne kôdove na jedno mesto, iako će se oni kompajlirati u različite programske skupove (assemblies) na različitim mestima na hard disku.
73
Elektronske poslovne komunikacije –PRAKTIKUM
Slika 18: Verzije .NET Framework-a i njihove karakteristične funkcionalnosti ASP.NET Web stranice ćete odmah prepoznati po .aspx ekstenziji, a prilikom njihove izrade možete koristiti bilo koji .NET jezik. Mikrosoft je omogućio svim proizvođačima programskih jezika da ih prilagode .NET Frameworku i dao im je kompletne specifikacije potrebne za razvoj. Tako danas imamo približno dvadesetak različitih .NET programskih jezika. Bez obzira koji programski jezik koristili, dostupne su vam sve mogućnosti ASP.NET-a. Ipak, najpoznatija alternativa Visual Basicu je C# (si šarp). Programski jezik C# je baziran na C i C++ programskim jezicima, a sintaksa mu je vrlo slična Javi. Dvoumite li se koji jezik odabrati, formula za pravilan izbor je jednostavna. Ako ste već programirali u C-u, C++-u, Javi ili JavaScriptu, vaš izbor bi trebao biti C#. Zbog jednostavnosti i raširenosti Visual Basic programskog jezika, u uvodnim primerima koristićemo ga za pisanje kôda. Kasniji primeri, koji su izloženi u formi praktičnih vežbi, koriste C# kao neprikosnoveni programski jezik na serverskoj strani. Primeri koji slede izrađeni su korišćenjem Visual Studio .NET integrisane razvojne okoline i Visual Basic .NET-a. Naravno, Visual Studio .NET nije nužan za
74
Elektronske poslovne komunikacije –PRAKTIKUM
razvoj ASP.NET aplikacija. Dovoljni su vam Notepad (ili bilo koji tekst editor) i alati koje pokrećete iz komandne linije, a besplatni su i dolaze u sklopu .NET Frameworka. Ipak, kada jednom osetite čari Visual Studia, teško da ćete ga više napustiti. IDE (Integrated Development Environment) Samo zagriženi avanturisti još i danas iz komandne linije kompajliraju i pokreću .NET programe. Možda ćete biti u prilici da vas nazovu razmaženima, ali bez integrisane razvojne okoline (Integrated Development Environment - IDE) ne treba da IDEte u ozbiljnije projekte. Za one koji se tek planiraju uključiti u svet vizuelnog programiranja, IDE je razvojna kontrolna tabla kojom upravljamo projektom, u kojoj pišemo programski kôd, pokrećemo debugger i pristupamo dokumentaciji, odnosno programskim alatima za pomoć. VS .NET, po mišljenju iskusnih programera, ima trenutno jednu od najboljih i najefikasnijih integrisanih razvojnih platformi. Alati za kreiranje grafičkog interfejsa nalaze se skriveni na levoj strani ekrana ispod Server Explorera. Oba prozora se otvaraju tek dovođenjem kursora iznad naslova. Ovaj IDE predstavlja značajan pomak u odnosu na prethodnike. Pre njegovog pojavljivanja mnogi su razmišljali o očajnim rešenjima, poput upotrebe dva velika (naprimer 22’’) monitora, ali s VS .NET-om i rezolucija 1024x768 sasvim je dovoljna za ugodan rad. Radni deo ekrana je višenamenski te služi za unos programskog kôda, kreiranje grafičkog interfejsa, a može poslužiti i kao Web browser, i kao platforma za pregled programske pomoći. Kada se istovremeno otvara više dokumenata, njihovi nazivi se pojavljuju na vrhu radne površine, pa je na taj način olakšano pristupanje predmetnim dokumentima. Radni deo IDE-a je nasledio sve osobine Web browsera, između ostalog, i navigaciju napred i nazad, čime je olakšano snalaženje i programiranje u projektima koji sadrže po nekoliko desetina ili stotina formi, modula i klasa. Tekst editor ima mogućnost snimanja teksta u više međuskladišta, pa tako možete nekoliko različitih blokova kôda prebaciti u međuskladišta i kopirati ih prema željama i potrebama. Editor ima i word-wrap funkciju, pa je programski kôd lakši za čitanje. Osim IntelliSense podrške za programske jezike (daje opcije i sintaksu ključnih reči, te ih automatski nadopunjuje), editor podržava kreiranje HTML dokumenata, CSS-a (Cascading Style Sheets) i XML-a (Extensible Markup Language). Greške u sintaksi su podvučene, pa izgledaju kao gramatičke greške u MS Wordu. Kada prvi put pokrenete Visual Studio .NET, prikazat će vam se početna HTML stranica koja sadrži sve značajnije linkove. Download link vas vodi na MSDN
75
Elektronske poslovne komunikacije –PRAKTIKUM
(Microsoft Developers Network) stranice, gde možete pronaći najnovije alate, primere programskog koda i ostale korisne stvari spremne za prebacivanje na vaš računar. Web Hosting link daje popis sajtova na koje možete smestiti svoje ASP.NET aplikacije. My Profile link omogućava prilagođavanje početne stranice i Visual Studio okoline vašim potrebama. Temelji prve aplikacije Otvorite Visual Studio i odaberite File/New/Project ili pritisnite Ctrl+Shift+N. Dijaloški okvir za kreiranje novog projekta pojavit će se na ekranu. Za tip projekta odaberite Visual Basic Projects, a iz popisa šablona (templates) selektujte ASP.NET Web Application. U polje za unos lokacije projekta upišite http://localhost/EPK_vezbe/PrviProjekt. Visual Studio će iz nje automatski izdvojiti PrviProjekаt kao naziv projekta, i smestiti ga u virtuеlni root folder http://localhost/EPK_vezbe. Pritiskom na OK, automatski će se kreirati i novi podfolder za vašu aplikaciju (http://localhost/EPK_vezbe/PrviProjekt).
Komponente ASP.NET-a
76
Elektronske poslovne komunikacije –PRAKTIKUM
Treba proveriti da vam prilikom otvaranja projekta Internet Explorer nije podešen na Work Offline. Automatski će se kreirati i nova ASP.NET stranica, ili korektnije rečeno Web forma, pod nazivom Default.aspx. Često se preporučuje odabir opcije View/Ruler and Grid/Snap to Grid jer će vam to omogućiti lakše poravnavanje kontrola na formi.
Dizajner za Web forme u Visual Studio .NET-u
77
Elektronske poslovne komunikacije –PRAKTIKUM
Kliknite na Toolbox, ili ako ga ne možete pronaći, odaberite View/Toolbox opciju (Ctrl+Alt+X). Otvorite Standard kategoriju kontrola i mišem prevucite na novoformiranu formu TextBox, Button i Label kontrole (isto tako možete i dvostruko kliknuti na navedene kontrole, te ih naknadno razmestiti po formi). Selektujte sve tri kontrole tako da držeći Shift taster kliknete na njih (možete i kliknuti levim tasterom miša na formu, te povlačenjem miša uokviriti sve tri kontrole). U Format meniju odaberite Align/Lefts, Make Same Size/Width (sve kontrole će biti postavljene na širinu zadnje selektovane kontrole), i Vertical Spacing/Make Equal. Nakon učinjenog, vaša bi forma trebala izgledati kao na sledećoj slici.
Smeštanje ASP.NET kontrola na Web formu:
Source editor podržava IntelliSense tehnologiju
78
Elektronske poslovne komunikacije –PRAKTIKUM
Visual Studio automatski kreira zasebnu datoteku u kojoj je VB ili C# kôd
Show All Files dugme prikazuje sve datoteke koje sadrže programski kôd
Web stranica pokrenuta unutar Visual Studio integrisane okoline
79
Elektronske poslovne komunikacije –PRAKTIKUM
Svojstva koja promenite u Properties prozoru su automatski boldirana Kliknite na Source karticu koja se nalazi na dnu form dizajnera. Obratite pažnju da HTML kôd odgovara kontrolama koje ste kreirali u form dizajneru. Za svaku ASP.NET stranicu koju kreirate postoji pripadajuća datoteka koja sadrži programski kôd. Taj kôd je u biti ASP.NET klasa, koja se koristi za prikazivanje stranice. Ako u Solution Exploreru želite videti codebehind datoteke, kliknite na Show All Files dugme koji se nalazi pri vrhu Solution Explorer prozora. Isto ćete postići i izborom Project/Show All Files opcije. Vreme je za prvo pokretanje naše prve ASP.NET Web stranice. U SolutionExploreru desnim tasterom kliknite na Default.aspx datoteku i odaberite View in Browser opciju. Ukucajte svoje ime i kliknite na dugme. Priznajte, nije bilo teško! Osim unutar Visual Studio integrisane okoline, ovoj stranici možete pristupiti i iz Internet Explorera. Dovoljno je da unesete adresu:
http://localhost/EPK_vezbe/PrviProjekаt/Default.aspx
80
Elektronske poslovne komunikacije –PRAKTIKUM
Transformacija HTML kôda na serveru Proverimo kako izgleda HTML kôd naše web stranice u Internet Exploreru. U browseru desnim tasterom kliknite na stranicu i odaberite View Source. Odmah treba primetiti da se HTML kôd prilično razlikuje od onoga koji ste videli u Visual Studio .NET okruženju. U Visual Studiu je label kontrola bila definisana sledećim kodom:
Dok je u browseru HTML kôd:
Label kontrola je primer ASP.NET server kontrole. Obratite pažnju da u Visual Studio code prozoru HTML kôd labele sadrži runat=”server” atribut. Ovaj atribut označava da je predmetni HTML element serverska kontrola koju ASP.NET, zavisno od browsera koji korisnik upotrebljava, pretvara u odgovarajući HTML kôd. U našem slučaju ona je postala HTML span sa id atributom, koji odgovara imenu label kontrole, i style atributima, koji definišu njenu veličinu i položaj. Tipovi serverskih kontrola ASP.NET serverske kontrole možemo podeliti u dve osnovne kategorije: HTML kontrole i Web Forms kontrole (često ih skraćeno zovemo Web kontrole). One se pojavljuju u nekoliko odvojenih sekcije na traci alata (toolbox). HTML kontrole su vrlo slične standardnim kontrolama koje koristimo prilikom pisanja HTML koda. Njihove postavke (properties) odgovaraju HTML atributima koje upotrebljavamo prilikom formatiranja standardnog HTML koda. Samo, za razliku od klasičnog HTML
81
Elektronske poslovne komunikacije –PRAKTIKUM
koda, u zavisnosti od tipa korisničkog browsera, ASP.NET ih pretvara u browseru kompatibilne HTML tagove. Web kontrole u HTML editoru možete lako prepoznati po asp prefiksu. Slično HTML kontrolama, i ove kontrole korisničkom browseru moraju poslati standardni HTML kôd, jer to je jedino što browser može prikazati. Ali Web kontrolama možemo podešavati svojstva (properties), koristiti njihove metode (methods) i programirati događaje (events). Sve to daleko prevazilazi ono što nam pružaju standardne HTML kontrole, a ujedno nam daje slobodu i nove mogućnosti za kreiranje Web stranica. I najvažnije, ASP.NET će se sam pobrinuti o komplikovanom pretvaranju kontrola u HTML. ASP.NET nam dozvoljava i kreiranje vlastitih kontrola. Ova mogućnost prilično sliči načinu na koji se u Visual Basicu kreiraju ActiveX kontrole. U većini slučajeva HTML kontrole ćemo koristiti samo prilikom migracije već postojećih stranica. Ako već imamo izbora, šteta bi bilo ne iskoristiti posebne mogućnosti koje nam pružaju Web kontrole. Pristup bazi podataka Jedna od najzanimljivijih (i najpotrebnijih) stvari koje možete raditi u ASP.NET-u svakako je programiranje baza podataka. Za primer ćemo izraditi ASP.NET aplikaciju koja će pristupati Northwind bazi podataka (dolazi s MS SQL Serverom kao primer za testiranje servera). Prvo ćemo to napraviti korišćenjem HTML kontrola, a zatim i upotrebom Web kontrola. Otvorite novi projekat i nazovite ga UvodBaze. Web formu nazovite ProizvodiHTML.aspx. HTML kôd je prilično jednostavan:
Proizvodi - HTML kontrole(EPK Vežbe)
82
Elektronske poslovne komunikacije –PRAKTIKUM
Odaberite kategoriju:
Potpun pristup podacima iz baze, popunjavanje list box kontrole i tabele obavlja se preko programskog kôda koji se nalazi u ProizvodiHTML.aspx.vb datoteci. Referencu na tu datoteku možete videti na samom vrhu HTML koda. Kodiranje Objekte HTML server kontrole programirate u code-behind klasi koju HTML stranica "nasleđuje”. Visual Studio obavlja sav posao potreban za kreiranje datoteke s programskim kodom, uključujući i kreiranje klase za vašu stranicu koja je izvedena iz System.Web.UI.Page klase .NET Frameworka. Osim toga, za svaku serversku kontrolu koju stavite na formu, Visual Studio automatski kreira varijablu.
Public Class ProizvodiHTML Inherits System.Web.UI.Page Protected WithEvents Kategorija As
83
Elektronske poslovne komunikacije –PRAKTIKUM
System.Web.UI.HtmlControls.HtmlSelect Protected WithEvents Proizvodi As System.Web.UI.HtmlControls.HtmlTable Protected WithEvents Prikaz As System.Web.UI.HtmlControls.HtmlInputButton
Kao što možete primetiti, imena varijabli se podudaraju s ID atributima kontrola koje se nalaze na formi. Page_Load Programski kôd koji ćemo upisati u Page_Load proceduru koristi te varijable za popunjavanje padajućeg DropDownList boksa i tabele na formi. Visual Studio automatski dodaje Page_Load event proceduru klasi. Ova procedura se izvršava prilikom Load eventa Page klase (učitavanje stranice) iz koje je naša klasa izvedena.
Private Sub Page_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load
Ova procedura je izuzetno važna i potrebna jer se izvršava svaki put kada klijent pristupa ASP.NET stranicama (uključujući i postback). U našem slučaju, smestit ćemo kompletan kôd u ovu proceduru. Napomenimo da se ovoj proceduri može dodeliti i neko drugo ime. Naime, sve .NET event procedure ne moraju nužno biti imenovane po pravilu Objekt_Event (u našem slučaju Page_Load). Dodeljivanje naziva Page_Load samo je pridržavanje konvencije koja nam omogućava lako prepoznavanje svrhe funkcije, a ovaj način dodeljivanja imena procedurama dobro je poznat Visual Basic programerima. Iako je pridržavanje te konvencije bilo obavezno u prethodnim verzijama Visual Basica, u Visual Basic .NET-u samo se preporučuje. SQL Primarni zadatak Page_Load eventa je da preko ADO.NET objekata preuzme podatke iz Northwind SQL Server baze podataka (radi se o bazi koja dolazi uz instalaciju MS SQL Server DBMS i koja uglavnom služi za testiranje SQL Servera i
84
Elektronske poslovne komunikacije –PRAKTIKUM
učenje SQL-a), te da pomoću tih podataka popuni serverske HTML kontrole na stranici. Na sam vrh Visual Basic datoteke (ispred ProizvodiHTML klase) smestite tri Import naredbe za ADO.NET namespace koje ćemo koristiti.
Imports System.Data Imports System.Data.SqlClient Imports System.Web.UI.HtmlControls
Ove linije koda nam služe isključivo da uštedimo vreme prilikom pisanja koda i da učinimo kôd čitljivijim. One nam omogućuju da ADO.NET klasama pristupamo direktno preko njihovog imena, bez ukucavanja kompletnog prefiksa. Na primer, bez Import naredbe za System.Data.SqlClient deklaracija cmd objekta bi izgledala ovako:
Dim cmd As System.Data.SqlClient.SqlCommand
Uz Import naredbu koju smo prethodno upisali, možemo pojednostaviti:
Dim cmd As SqlCommand Da bismo mogli koristiti ADO.NET, naš projekat mora imati referencu na System.Data, koju možete pronaći na References kartici unutar Solution Explorer prozora. Deklaracije ADO.NET varijabli treba smestiti na početak Page_Load procedure. Deklaracija SqlConnection objekta uključuje i konstruktor u kome je definisana veza na SQL bazu podataka.
Dim cnn As New SqlConnection( _ “Data Source=(local);User ID=sa;Password=;” & _ “Initial Catalog=Northwind;”) Dim cmd As SqlCommand Dim rdr As SqlDataReader
Postback Pravilo je da se unutar Page_Load procedure vrši provera da li korisnik učitava prvi put ovu stranicu, ili se radi o postback učitavanju stranice. Page klasa u
85
Elektronske poslovne komunikacije –PRAKTIKUM
ASP.NET-u sadrži Postback svojstvo pomoću koga to možemo utvrditi. Padajuću listu (DropDownList) trebamo popuniti samo jednom, prilikom prvog učitavanja stranice. ASP.NET će prilikom svakog postbacka automatski čuvati vrednosti snimljene u toj listi. U sledećim linijama proveravamo postback svojstvo. Ako ono nije true, znamo da se radi o svežem učitavanju stranice. Tada se izvršava kôd koji kreira ADO.NET SqlDataReader objekat i koji obuhvata listu kategorija iz baze podataka:
If Not Page.IsPostBack Then cmd = New SqlCommand( _ “SELECT CategoryID, CategoryName “ & _ “FROM Categories ORDER BY CategoryName;”, _ cnn) cnn.Open() rdr = cmd.ExecuteReader( _ CommandBehavior.CloseConnection)
(nastavlja se na jednoj od sledećih stranica uz objašnjenje HTML tabele) Popunjavanje HTML liste HTMLSelect klasa ima DataSource svojstvo, pa je popunjavanje liste vrlo jednostavno. Takođe ćemo koristiti DataTextField i DataValueField svojstva za čuvanje teksta koji će se pojavljivati u listi, i interno čuvanje vrednosti elementa liste (nije vidljiva na ekranu). Nakon postavljanja tih svojstava moramo pozvati DataBind metodu kojom popunjavamo listu:
With Kategorija .DataSource = rdr .DataTextField = “CategoryName” .DataValueField = “CategoryID” .DataBind() End With rdr.Close()
86
Elektronske poslovne komunikacije –PRAKTIKUM
Skrivena kontrola Proverite li HTML kôd ASP.NET aplikacije u Web browseru (desni klik - View Source), vidićete skrivenu kontrolu __VIEWSTATE.
Ova kontrola je deo forme, pa se njena vrednost šalje Web serveru prilikom pritiska na dugme Prikaz (postback). Kriptovani sadržaj ove kontrole nije ništa drugo nego skup svih vrednosti svojstava kontrola koje se nalaze na stranici i čije je EnableViewState svojstvo postavljeno na vrednost true. Za vreme postbacka ASP.NET može upotrebiti ViewState podatke da bi rekonstruisali stanje na stranici koje je bilo prilikom njenog poslednjeg slanja korisniku. Ovaj mehanizam ASP.NET-u omogućuje detekciju promena na stranici i ponovno kreiranje delova forme koji se ne trebaju promeniti. U našem primeru, Page_Load event popunjava padajuću listu (Kategorija) samo jednom za svaki session, odnosno samo kada je stranica prvi put pozvana. Za vreme postbacka lista se automatski kreira korišćenjem ViewState podataka. HTML tabеlа
Tabelu ćemo u našem slučaju popunjavati samo prilikom postbacka. Pretpostavimo da je korisnik odabrao kategoriju i pritisnuo dugme Prikaži Proizvode.
87
Elektronske poslovne komunikacije –PRAKTIKUM
Popunjavanje HTML Table kontrole ne svodi se samo na postavljanje DataSource svojstva i povezivanja podataka. Na nama je da u tabelu dodamo redove, u redove dodamo ćelije, a ćelije popunimo podacima. Krenimo redom i kreirajmo zaglavlje tabele: (nastavak)
Else ‘ postback - prikaži tabelu ‘ Kreiranje zaglavlja tabele Dim row As HtmlTableRow Dim cell As HtmlTableCell row = New HtmlTableRow() cell = New HtmlTableCell(“th”) cell.InnerText = “Sifra Proizvoda” row.Cells.Add(cell) cell = New HtmlTableCell(“th”) cell.InnerText = “Naziv Proizvoda” row.Cells.Add(cell) cell = New HtmlTableCell(“th”) cell.InnerText = “Stanje na Skladistu” row.Cells.Add(cell) Proizvodi.Rows.Add(row) I tek na kraju ćemo ponovno upotrebiti ADO.NET za kreiranje liste podataka na osnovu selektovane kategorije. Za svaki red u bazi podataka dodat ćemo red u našoj tabeli: ‘ Upisivanje podataka u tabelu cmd = New SqlCommand( _ “SELECT ProductID, ProductName, UnitsInStock “ _ & “ FROM Products” _ & “ WHERE CategoryID = “ & Kategorija.Value, _ cnn) cnn.Open() rdr = cmd.ExecuteReader( _ CommandBehavior.CloseConnection) Do While rdr.Read row = New HtmlTableRow() cell = New HtmlTableCell() cell.InnerText = rdr(“ProductID”).ToString
88
Elektronske poslovne komunikacije –PRAKTIKUM
row.Cells.Add(cell) cell = New HtmlTableCell() cell.InnerText = rdr(“ProductName”).ToString row.Cells.Add(cell) cell = New HtmlTableCell() cell.InnerText = rdr(“UnitsInStock”).ToString row.Cells.Add(cell) Proizvodi.Rows.Add(row) Loop rdr.Close() End If End Sub
Ovaj kôd će generisati standardnu HTML tabelu (proverite ga pritiskom na ViewSource u browseru). Svojstva Web kontrola
Vreme je da isprobamo i drugu po mnogima ključnu vrlinu ASP.NET-a, a to su Web kontrole. Ovo je HTML kôd ProizvodiWeb.aspx stranice: Proizvodi - Web kontrole(EPK Vežbe) Odaberite kategoriju: Kao što možete videti, sve kontrole na ovoj stranici imaju prefiks Beverages Condiments Kao što možete videti, ASP.NET je kreirao JavaScript kôd da bi inicirao postback, skrivenu kontrolu u kojoj se čuva informacija o tome koja je kontrola inicirala event, i skrivenu kontrolu koja čuva argumente za taj event.
Open Source rešenja Pod OpenSource softverom podrazumevamo onaj softver koji je dostupan korisnicima i u izvornom kôdu i koji sami korisnici mogu menjati, prilagođavati i koristiti bez materijalne naknade pod uslovima navedenim u GPL licenci. OpenSource zajednice su zajednice programera i korisnika okupljenih u, često neprofitne, organizacije, koji za cilj imaju razvoj određenih softverskih rešenja. Ljudi koji pristupaju ovim organizacijama i učestvuju u izradi softvera vode se različitim motivima: od želje za novim saznanjima, učenja kroz rešavanje praktičnih problema, želje za potvrdom sopstvenih sposobnosti, pa do sticanja materijalne koristi kroz obuke, kurseve i druge vidove pomoći korisnicima softvera. Iako je osnovna ideja softvera otvorenog kôda besplatnost i javna dostupnost, sve je više profitnih organizacija koje iz svojih razloga pristupaju, a često i vode ovakve projekte. Tako naprimer i najveće korporacije kao što su IBM ili Sun Microsystems vode neke od ovih projekata. Kao što smo već ranije naveli u srži Web sajta, koji se upravlja podacima, je baza podataka. Da bi sistem mogao da radi, mora da postoji baza podataka i ona mora da se nalazi na Web serveru, ili na posebnom računaru – serveru baze kome Web server može da pristupa. Da bi kreirali bazu podataka i mogli sa njom da komuniciramo, moramo posedovati softver uobičajno poznat kao sistem za upravljanje bazama podataka (DataBase Menagement System - DBMS). Da bi baza bila deo sistema, mora da se nalazi na serveru. Baze podataka informacije čuvaju u tabelama, odnosno nizu polja (kolona) i zapisa (redova). Ovakva struktura se naziva hijerarhijskim skladištenjem podataka. Međutim, za rukovanje složenim informacijama koriste se relacione baze podataka. Ovim bazama manipuliše sistem za upravljanje relacionim bazama podataka (RDBMS). Osnovne mogućnosti relacionih baza su: višestruke tabele i primarni i vanjski ključevi. Da bi funkcionisao kao online sistem, DBMS mora biti relaciona baza dakle, RDBMS, mora biti u stanju da radi pod
93
Elektronske poslovne komunikacije –PRAKTIKUM
operativnim sistemom koji podržava server, mora da podržava SQL iskaze i mora biti kompatibilan sa ODBC-om, JDBC-om ili nekim drugim standardnim formatom drajvera - konektora. Najpoznatiji su, odnosno najviše se koriste sistemi: Microsoft Access, SQL Server, MySQL, PostgreSQL i Oracle. MySQL MySQL je DBMS sistem koji je razvijen na Unixu, kao dobra alternativa za Access, ali danas nije ograničen samo na ovaj operativni sistem (radi podjednako dobro i na Windows i na Linux platformi). Za razliku od Accessa kod MySQL ne postoje ograničenja vezana za istovremeni pristup, a već je čuvena njegova brzina i stabilnost. MySQL je sposoban da upravlja velikim količinama podataka. Najveća prednost ovog DBMS sistema jeste njegova cena - besplatan je. Iako postoje i kompleksnija open source rešenja kao što je PostgeSQL, MySQL je veoma popularan i gotovo da nema pružalaca hosting usluga koji na svojim serverima ne daju podršku za ovaj sistem. Procenjuje se da je MySQL instaliran na preko četiri miliona računara, gde se koristi za potrebe Web sajtova, za datawarehous, poslovne aplikacije i u druge svrhe. MySQL server je sredinom 90-tih kreirao finac Michael Wideniu. Cilj je bio da se kreira server baze podataka koji će imate sve funkcionalnosti koje nedostaju u mSQL bazi, koja je u to vreme bila jedna od retkih OpenSource baza podataka. Sekundarni cilj je bio da se kreira pristojna platforma za razvoj Web aplikacija. Prve verzije kôda su se pojavile maja 1995. godine i kasnije su date OpenSource zajednici. Od tada, MySQL je doživeo proces razvoja, kako samog softvera za upravljanje bazom podataka, tako i propratnih alata. MySQL danas postoji u verzijama za velik broj različitih operativnih sistema kao što su Linux, Windows, MacOS, HPUX, FreeBSD, i drugi. Rastom popularnosti Linux operativnog sistema i PHP programskog jezika, raste i popularnost MySQL baze podataka. Razlog leži u tome što su ove aplikacije postale nazvaničan standard u OpenSource svetu. Prilikom instalacije Linux-a, kao standardan sistem za upravljanjem bazama podataka se nudi MySQL, a i PHP jezik ga podržava u osnovnom skupu funkcionalnosti. Široka rasprostranjenost je još jedan razlog korišćenja, jer kada se neko ko nije upućen opredeljuje za bazu podataka, prvo se upita: koji sistem koristi najviše ljudi? Takođe, većina Internet provajdera nudi MySQL kao server prilikom davanja usluge hostinga Web prezentacija. Činjenica da je
94
Elektronske poslovne komunikacije –PRAKTIKUM
MySQL besplatan, ne znači da je loš. Kao i svaki drugi sistem ima svoje prednosti i nedostatke. Prednost MySQL-a u poređenju se drugim sistemima za upravljanje bazama podataka leži u tome što je optimizovan za rad na Web sajtovima. Pred MySQL je postavljena misija da bude brz prilikom uspostavljanja konekcija i davanja odgovora na upite. Server ima nekoliko metoda optimizacije upita i keširanja rezultata u memoriji, što mu daje prednost kod upotrebe na Internetu, gde je moguće da identičan upit bude postavljen nekoliko desetina, stotina ili čak hiljada puta uzastopno. Na ovom polju MySQL nema pravog rivala, jer ostali sistemi nisu optimizovani za takav rad. Sa druge strane, MySQL ne podržava velik broj funkcionalnosti koja se očekuje od ozbiljnog servera baze podataka: pre svega se misli na podršku referencijalnog integriteta i pod-upita. Zatim, u kompleksnijim aplikacijama se kao problem može javiti i nedostatak trigera i uskladištenih procedura. Nedostatak ovih opcija je neposredno vezan za brzinu rada koju MySQL postiže, jer održavanje referencijalnog integriteta i pozivanje trigera direktno utiče na brzinu upita. Jedan od problema je u činjenica da se tabele i indeksi ove baze drže u zasebnim fajlovima, što uz loše dizajniran sistem zaključavanja može da izazove bezbednosne probleme baze podataka. MySQL kao sistem otvorenog kôda (Open Source) može da se koristiti pod dvostrukom licencom Open Source i komercijalnom. Inicijalno, proizvod je kompanije MySQL AB poreklom iz Švedske. Sada (krajem 2009) je Oracle-ov proizvod u SAD, a Sun-ov proizvod u Evropi. Na ovogodišnjoj Oracle Day manifestaciji, predstavnici Oracle-a su izjavili da će MySQL ostati open source, kao i da će Java biti glavna razvojna platforma, jer se odlično uklapa u “Grid computing” strategiju, koju Oracle forsira zadnjih godina. Michael Widenius “Monty”, jedan od osnivača i autora MySQLa, je na svom blogu komentarisao trenutno stanje MySQL-a i dao kritički osvrt na MySQL 5.1 GA verziju. On navodi i listu bagova, koji su trebali davno biti rešeni, napominjući da su novine uvedene u 5.1 zapravo nedovršene i na kraju dodaje opasku: “Install and test MySQL 5.1; If it works, feel lucky.” Tekuća (2010.) (ne)stabilna verzija je MySQL 5.4. Instaliranje MySQL-a Za MySQL 5.0 moguće je izabrati jedan od tri instalaciona paketa: ▫ The Essentials Package (osnovni paket): Ovaj paket sadrži minimalan skup fajlova koji je neophodan da bi se instalirao MySQL, uključujući čarobnjaka za konfigurisanje. Ovaj paket ne uključuje opcione komponente, kao što su ugrađeni (embedded) server i paket za testiranje
95
Elektronske poslovne komunikacije –PRAKTIKUM
▫
▫
performansi (benchmark suite). Ugrađeni server predstavlja ugrađenu biblioteku koja može da radi sa više niti(multithreaded) i koja se može povezati u aplikaciji da bi se dobio manji, brži i za upravljanje lakši samostalan proizvod. Paket za testiranje performansi služi da korisniku pruži informaciju koje operacije predmetna SQL implementacija izvodi dobro, a koje loše. Na ovaj način se utvrđuje gde su uska grla aplikacije i baze podataka. The Complete Package (kompletan paket): Ovaj paket sadrži sve fajlove potrebne za kompletno instaliranje, ukljućujući čarobnjaka za konfigurisanje. Ovaj paket uključuje opcione komponente, kao što su ugrađeni server i paket za testiranje performansi. The Noninstall Archive: Ovaj paket sadrži sve fajlove koji se nalaze u prethodnom paketu sa izuzetkom čarobnjaka za konfigurisanje. Ovaj paket ne uključuje automatski alat za instaliranje i mora biti manuelno instaliran i konfigurisan. Osnovni paket je preporučen za većinu korisnika.
Sledi prikaz procedure instaliranja MySQL Community Server (verzija je 5.0.) korišćenjem kompletnog paketa. Pokretanje MySQL čarobnjaka za instaliranje Pokretanje čarobnjaka (za kompletan paket) se vrši dvostrukim klikom levim tasterom miša na setup.exe fajl. Pojavljuje se prva stranica čarobnjaka. Klikom na dugme Next prelazi se na sledeću stranicu čarobnjaka na kojoj se bira tip instalacije. Izbor tipa instalacije Moguće je izabrati jedan od tri tipa instalacije: Typical (tipična), Complete (kompletna) i Custom (prilagođena). Izborom tipične instalacije instalira se MySQL server, Mysql klijent za rad sa komandne linije i još neki alati za rad sa komandne linije. Izborom kompletne instalacije instaliraju se sve komponente koje su uključene u instalacioni paket. Prilagođeni tip instalacije daje korisniku potpunu kontrolu nad tim koji će paketi biti instalirani i koja će biti lokacija i naziv instalacionog foldera. Izborom tipične ili kompletne instalacije i klikom na dugme Next prelazi se na prozor za potvrdu gde se još jednom mogu proveriti izabrane opcije i otpočeti instalacija. Nakon izbora tipa instalacije i eventualnog izbora komponenti koje će biti instalirane (ako je izabran Custom tip instalacije) prelazi se na prozor za potvrdu gde se mogu videti tip instalacije i instalacioni folder. Ako su podešavanja zadovoljavajuća klikom na dugme Install otpočinje instalacija.
96
Elektronske poslovne komunikacije –PRAKTIKUM
Nakon završetka instalacije pojavljuje se prozor koji nudi mogućnost registracije korisnika na MySQL sajtu. Registracija daje mogućnost potpunog korišćenja MySQL foruma, zajedno sa mogućnošću prijavljivanja bagova i mogućnošću pretplate na MySQL bilten. Možete izabrati opciju Skip Sign-Up (preskakanje registracije) i kliknuti na dugme Next. Poslednji prozor čarobnjaka daje obaveštenje o završetku instalacije i daje mogućnost pokretanja MySQL čarobnjaka za konfigurisanje koji se koristi za kreiranje konfiguracionog fajla, instaliranje MySQL servisa i konfigurisanje sigurnosnih podešavanja. Na ovom prozoru možete zadržati unapred čekiranu opciju Configure the MySQL Server now i kliknuti na dugme Finish. Čarobnjak za konfigurisanje MySQL servera Čarobnjak za konfigurisanje MySQL servera automatizuje proces konfigurisanja servera. On kreira prilagođeni MySQL konfiguracioni fajl (my.ini ili my.cnf) postavljanjem niza pitanja korisniku i primenom niza odgovora na šablon. Ovaj čarobnjak se pokreće automatski kao deo instalacionog procesa. Nakon ovog prvog pokretanja korisnik može ponovo pokrenuti čarobnjaka kada je potrebno da promeni konfiguracione parametre svog servera. My.ini fajl se može modifikovati i otvaranjem u nekom od tekstualnih editora izvršenjem potrebnih izmena. Čarobnjak smešta my.ini fajl u instalacioni folder MySQL servera (C:\Program Files\MySQL\MySQL Server 5.0). Klikom na dugme Next prelazi se na sledeću stranicu čarobnjaka. Izbor tipa konfiguracije Postoje dva osnovna tipa konfiguracije: Detailed Configuration (detaljna konfiguracija) i Standard Configuration (standardna konfiguracija). Standardna konfiguracija je namenjena za nove korisnike koji žele da započnu rad sa MySQL-om brzo bez potrebe za donošenjem mnogo odluka vezano za konfiguraciju servera. Detaljna konfiguracija je namenjena za napredne korisnike. Korisnicima koji prvi put koriste MySQL server i žele server koji će biti konfigurisan kao jednokorisnička razvojna mašina, bi trebalo da odgovara standardna konfiguracija. Kod ovog tipa konfiguracije čarobnjak sve konfiguracione opcije podešava automatski osim opcija vezanih za servis i sigurnost. Predlažemo izbor opcije Detailed Configuration a zatim je potrebno kliknuti na dugme Next.
97
Elektronske poslovne komunikacije –PRAKTIKUM
Izbor tipa servera Postoje tri tipa servera. Tip servera koji korisnik izabere utiče na odluke koje pravi čarobnjak vezano za korišćenje memorije, hard diska i procesora. ▫ Developer Machine (razvojna mašina): Ovu opciju treba izabrati za tipičnu desktop radnu stanicu gde je MySQL namenjen samo za lične potrebe. Pretpostavlja se da su mnoge druge aplikacije istovremeno aktivne. MySQL server je konfigurisan da koristi minimum sistemskih resursa ▫ Server Machine (serverska mašina): Ovu opciju treba izabrati za serversku mašinu gde je MySQL server aktivan zajedno sa drugim serverskim aplikacijama, kao što su FTP, email i WEB serveri. MySQL server je konfigurisan za osrednje korišćenje sistemskih resursa. ▫ Dedicated MySQL Server Machine (serverska mašina namenjena samo za MySQL server): Ovu opciju treba izabrati za serversku mašinu na kojoj će biti aktivan samo MySQL server. Pretpostavlja se da druge aplikacije nisu aktivne. MySQL server je konfigurisan da koristi sve raspoložive sistemske resurse. Predlažemo zabor opcije Developer Machine i klik na dugme Next. Upotreba baze podataka Ovaj prozor čarobnjaka omogućava korisniku da odluči koje će mašine za skladištenje koristiti prilikom kreiranja MySQL tabela. Izabrana opcija definiše da li je InnoDB mašina za skladištenje na raspolaganju i koji procenat resursa servera je na raspolaganju za ovu mašinu. ▫ Multifunctional Database (multifunkcionalna baza podataka): Ova opcija omogućava korišćenje i InnoDB i MyISAM mašine za skladištenje i deli resurse servera jednako između ove dve mašine. Ova opcija je preporučena za korisnike koji koriste obe mašine za skladištenje svakodnevno. ▫ Transactional Database Only (samo transakciona baza podataka): Ova opcija omogućava korišćenje i InnoDB i MyISAM mašine za skladištenje ali dodeljuje većinu resursa servera InnoDB mašini za skladištenje. Ova opcija se preporučuje korisnicima koji skoro isključivo koriste InnoDB mašinu za skladištenje, a minimalno koriste MyISAM mašinu za skladištenje.
98
Elektronske poslovne komunikacije –PRAKTIKUM
▫
Non-Transactional Database Only (samo netransakciona baza podataka): Ova opcija isključuje potpuno InnoDB mašinu za sladištenje i sve resurse servera dodeljuje MyISAM mašini za skladištenje. Ova opcija je preporučena za korisnike koji ne koriste InnoDB mašinu za skladištenje.
Tipovi tabela se nazivaju i mašine za skladištenje (storage engine). To odražava činjenicu da je za upotrebu nekih tipova tabela neophodna značajna količina posebnog programskog kôda koji upravlja smeštanjem podataka, indeksiranjem, zaključavanjem podataka i pristupanjem disku. To takođe odražava suštinu baze podataka: skladištenje podataka. Tabele koje podržavaju transakcije omogućavaju da korisnik zada da je određena grupa upita nedeljiva jedinica obrade – transakcija. Trebalo bi da se cela transakcija obavi do kraja, a ako to nije moguće, baza podataka mora da je poništi (roll back), odnosno da se vrati u stanje u kojem je bila pre transakcije. Može se zamisliti baza podataka o prometu na bankovnim računima. Ako želimo da se prebaci 100000 dinara s jednog računa na drugi, potrebna su najmanje dva SQL upita – jedan, koji na prvom računu smanjuje stanje za 100000 dinara i drugi, koji povećava stanje na drugom računu za 100000 dinara. Bilo bi nezgodno kada bi se zbog nečeg (npr. nestanka struje) prvi upit izvršio do kraja, ali ne i drugi. U takvim slučajevima bilo bi neuporedivo bolje da se izvrše ili oba upita, ili nijedan, jer baza podataka mora uvek biti u usklađenom stanju. Treba izabrati opciju Multifunctional Database i kliknuti na dugme Next. Lokacija InnoDB Tablespace fajlova (fajlovi tabelarnog prostora) Dok MyISAM smešta svaku tabelu u zaseban fajl, InnoDB smešta sve tabele i indekse u tabelarni prostor, što znači da se delovi jedne tabele mogu nalaziti u više fajlova. Neki korisnici žele da lociraju InnoDB tablespace fajlove na neku drugu lokaciju različitu od MySQL server data foldera. Smeštanje tablespace fajlova na zasebnu lokaciju može biti poželjno ako sistem ima uređaje za skladištenje podataka većeg kapaciteta ili većih performansi, kao što je RAID sistem za skladištenje. Da bi se promenila podrazumevana lokacija za InnoDB tablespace fajlove treba izabrati novu particiju ili novi hard disk iz padajuće liste i nakon toga izabrati novi put iz padajuće liste. Ako korisnik želi da sam kreira put treba da klikne na dugme . U ovom prozoru se ne mora ništa menjati. Kliknuti na dugme Next.
99
Elektronske poslovne komunikacije –PRAKTIKUM
Broj istovremenih konekcija Da bi se izbegle situacije u kojima bi server radio sa nedovoljnim resursima, neophodno je ograničiti broj istovremenih konekcija na server koje se mogu uspostaviti. Ovaj prozor omogućava da se izabere očekivano korišćenje servera i u skladu sa tim podesi granica za broj istovremenih konekcija. Granica za broj istovremenih konekcija se može podesiti i manuelno. ▫ Decission Support (DSS)/OLAP (podrška odlučivanju): Ovu opciju treba izabrati ako server ne zahteva veliki broj istovremenih konekcija. Maksimalan broj konekcija je podešen na 100, a pretpostavlja se da će biti prosečno 20 istovremenih konekcija. Online Transaction Processing (OLTP) (obrada online transakcija): Ovu opciju treba izabrati ako server zahteva veliki broj istovremenih konekcija. Maksimalan broj konekcija je podešen na 500. ▫ Manual Setting (manuelno podešavanje): Ovu opciju treba izabrati da bi se manuelno podesio maksimalan broj istovremenih konekcija. Treba izabrati maksimalan broj iz padajuće liste ili ga ukucati ako ne postoji u padajućoj listi. Predlažemo izabor opcije Decission Support (DSS)/OLAP i klik na dugme Next. ▫
100
Elektronske poslovne komunikacije –PRAKTIKUM
Mrežne i Strict Mode opcije Mrežne opcije omogućavaju da se dozvoli ili zabrani kreiranje TCP/IP konekcija i da se konfiguriše broj porta koji će se koristiti za konektovanje na MySQL server. Kreiranje TCP/IP konekcija je podrazumevano dozvoljeno. Port 3306 je podrazumevana opcija. Da bi se promenio port potrebno ga je izabrati iz padajuće liste ili ga uneti ako se ne nalazi u listi. Strict Mode čini da se server ponaša kao drugi sistemi za upravljanje bazama podataka. Strict Mode kontroliše kako MySQL manipuliše ulaznim vrednostima koje su loše ili nedostaju. Možemo čekirati opciju Enable TCP/IP Networking i zadržati port 3306. Takođe treba čekirati opciju Enable Strict Mode i kliknuti na dugme Next. Izbor lokalne azbuke MySQL server podržava različite setove karaktera i moguće je podesiti podrazumevani set karaktera za server koji će biti primenjen na sve tabele, kolone i baze podataka. Collation (uparivanje) je skup pravila za poređenje karaktera u okviru seta karaktera. ▫ Standard Character Set (standardni set karaktera): Treba izabrati ovu opciju ako se kao podrazumevani set karaktera želi koristiti latin1. Ovaj set karaktera se koristi za engleski i mnoge zapadnoevropske jezike. ▫ Best Support For Multilingualism (najbolja podrška za veliki broj jezika): Treba izabrati ovu opciju ako se kao podrazumevani set karaktera želi koristiti utf8. Ovo je Unicode skup karaktera i može smeštati karaktere iz mnogo različitih jezika. ▫ Manual Selected Default Character Set / Collation (manuelan izbor podrazumevanog seta karaktera /uparivanja): Izaberite ovu opciju ako želite da se manuelno definiše podrazumevani set karaktera. Željeni set karaktera treba izabrati iz padajuće liste. Ako naprimer želite abecedu ili azbuku srpskog jezika, treba izabrati opciju Best Support For Multilingualism i kliknuti na dugme Next. Opcije vezane za servis Na Windows NT baziranim sistemima MySQL server može biti instaliran kao Windows servis. Kada je instaliran na ovaj način MySQL server može biti startovan automatski prilikom pokretanja sistema i čak restartovan automatski od strane Windows-a u slučaju problema sa servisom.
101
Elektronske poslovne komunikacije –PRAKTIKUM
Čarobnjak instalira MySQL server kao servis podrazumevano i daje naziv MySQL servisu. Ako ne želimo da se MySQL server instalira kao servis treba dečekirati opciju Install As Windows Service. Naziv servisa se može promeniti izborom drugog naziva iz padajuće liste ili ukucavanjem novog naziva ako se željeni ne nalazi u padajućoj listi. Ako želimo da se MySQL server instalira kao servis ali da se servis ne startuje automatski prilikom pokretanja sistema treba dečekirati opciju Launch the MySQL Server automatically. Predlažemo dakle, čekirati opciju Install As Windows Service, zadržati ponuđeno ime servisa i dečekirati opciju Launch the MySQL Server automatically. Potom čekirati opciju Include Bin Directory in WindowsPATH. Sada je moguće pokrenuti bilo koji MySQL izvršni program kucanjem njegovog naziva u interpreteru komandi (Command Prompt) iz bilo kog foldera bez potrebe za prosleđivanjem putanje do bin foldera. Sigurnosne opcije Ovde je preporučljivo definisati root password za MySQL server i čarobnjak podrazumevano zahteva od korisnika da to uradi. Ako korisnik ne želi da ovo uradi treba da dečekira opciju Modify Security Settings. Podrazumevani administrativni nalog u MySQL sistemu za upravljanje pravima korisnika je root . Da bi se definisao root password treba uneti password u polja New root password i Confirm. Da bi se sprečilo konektovanje na server preko root naloga sa drugih računara iz mreže treba dečekirati opciju Enable root access from remote machines. Ovo povećava sigurnost root naloga. Da bi se kreirao anonimni nalog treba čekirati opciju Create An Anonymous Account. Za anonimne naloge nije potrebno zadavanje korisničkog imena i lozinke prilikom prijavljivanja. Kreiranje anonimnog naloga može umanjiti sigurnost servera i izazvati probleme sa logovanjem i pravima pristupa. Možete čekirati opciju Modify Security Settings, uneti i potvrditi root password i dečekirati opciju Enable root access from remote machines, te kliknuti na dugme Next. Poslednji prozor čarobnjaka za konfigurisanje MySQL servera je prozor za potvrdu. Da bi otpočeo proces konfigurisanja treba kliknuti na dugme Execute. Nakon završetka procesa konfigurisanja pojavljuje se prozor sa rezultatima. Klikom na dugme Finish izlazi se iz čarobnjaka. MySQL instalacioni paketi se mogu preuzeti sa adrese http://dev.mysql.com/downloads/.
102
Elektronske poslovne komunikacije –PRAKTIKUM
Aplikativni Server(i) Baze podataka i sistemi za upravljanje bazama podataka samo su jedna polovina priče o dinamičkom Webu. Druga polovina su aplikativni serveri koji se ponašaju kao srednji sloj i omogućavaju komunikaciju između pretraživača i DBMS sistema. Najpopularniji aplikativni serveri su: §
ASP/ASP.NET je Microsftov aplikativni server. Za razliku od drugih ASP nije nezavisan program ili softverski modul - njegove funkcije su ugrađene u Microsoftov Web server IIS. Jezik se zasniva na skriptovima, a za pristup bazama podataka može se koristiti VBScript ili JavaScript. ASP je polako izgubio popularnost i zamenjen je kompleksnijim ASP.NET-om. Programi i skriptovi u ASP.NET-u se mogu pisati u nekoliko jezika uključujući C++, C#, Jscript i Visual Basic.
§
JSP ili Java Server Pages su alternativa zasnovana na Javi. Aplikativni server je u obliku apleta koji se nalazi na serveru. Među popularnim JSP kontejnerima postoje neki koji su komercijalni, kao što su Jrun firme Macromedia ili IBM-ov WebSphere, a postoje i open source rešenja, kao što je Tomcat. Naravno, JSP najviše koriste Java programeri.
§
ColdFusion firme Macromedia je zasnovan na tagovima a ne na skriptovima i na taj način komunicira sa bazom podataka. Srce funkcionalnosti ColdFusiona je ColdFusion Markup Language. Deo sa aplikativnog servera je ColdFusion Server. On radi pod Windowsom, Linuxom, HP-Uxom ili Solarisom. Kao i ASP ColdFusion je komercijalno rešenje, odnosno za njegovu upotrebu potrebno je platiti licencu.
§
PHP je popularna open source alternativa za komercijalne sisteme. Njegove komande su zasnovane na skriptovima, koji se pišu u PHP skript jeziku. PHP radi pod Apache i IIS Web serverima. Radi na Windows, Linux i Mac OS X operativnim sistemima. Za razliku od ostalih serverskih tehnologija, PHP je vezan za određene baze podataka, skoro po pravilu to je MySQL baza podataka. Tvorac PHP-a, Rasmus Lefdorf je 1995. napisao jednostavan skup Perl skriptova da bi sebi olakšao rad. Nazvao ih je Personal Home Page tools. Ubrzo su ga kontaktirali
103
Elektronske poslovne komunikacije –PRAKTIKUM
drugi programeri, nakon čega ga je pretvorio u pravi parser izvornog koda. Dodao je podršku za formulare, čime je nastao PHP/FI. Kako je vremenom popularnost rasla, došlo je do okupljanja razvojnog tima koji je napisao API i nastao je PHP3. PHP3 je počeo da se koristi širom sveta, na velikom broju Web servera i dostigao veliku popularnost. Kombinacija lakoće upotrebe i robustonsti koju nudi je uzrokovala da PHP počne da se koristi i u neke svrhe koje njegovi tvorci nisu predvideli. Počeli su da se javljaju problemi sa brzinom rada, jer su se pojavile i velike Web aplikacije koje su zahtevale parsiranje dugačkih php fajlova. PHP je bio u stanju da podnese to opterećenje, ali je razvojni tim znao da to može mnogo bolje da radi. Tada je napisan novi engine za parsiranje izvornog koda, koji je nazvan Zend, i kreiran je PHP4, višestruko brži od svog prethodnika. Oznaka PHP je počela da označava PHP Hypertext Processor. Radi se o rekurzivnom akronimu, kakvi su vrlo popularni u OpenSource zajednici. Osim promena u parseru izvornog koda, proširena je osnovna funkcionalnost gde je dodat velik broj funkcija koje su do tada bile u eksternim modulima. U današnje vreme se pred interpretere kôda postavlja nekoliko teških zadataka, koji se u engleskom jeziku mogu nazvati 4S (Speed, Stability, Security, Scalability): Brzina (Speed). Današnji Web serveri su pod stalnim opterećenjem zbog otvorenosti Interneta, koji omogućava konekciju na server iz celog sveta. Velik broj istovremenih konekcija zahteva da procesi koji ih opslužuju obrađuju njihove zahteve u najkraćem mogućem roku, kako bi što pre oslobodili resurse servera. Zbog toga je brzina rada jedan od ključnih faktora kada se vrši odabir programskog jezika u kome će se raditi Web aplikacija. Pod brzinom se indirektno podrazumeva i da interpreter zauzima što je moguće manje memorije, kako ne bi usporavao ostale procese na računaru. PHP se odlično integriše sa drugim softverima na računaru, a mogućnost upotrebe PHP-a kao modula Apache Web servera je dodatna prednost. Pozivi drugih aplikacija iz PHP skriptova zahtevaju jako malo dodatnih resursa. Stabilnost (Stability). Funkcionisanje i upotrebna vrednost aplikacije zavise od njene stabilnosti. Svaki softver ima neke greške u sebi, ali je važno da se ti bug-ovi što brže otklanjaju. Robustni sistemi, sa kvalitetnim timom programera koji ispravljaju greške, uvek imaju prednost u odnosu na ostale. Iza PHP-a se nalazi OpenSource zajednica, koja garantuje da će se ispravke vršiti u najkraćem mogućem roku.
104
Elektronske poslovne komunikacije –PRAKTIKUM
Sigurnost (Security). Sistem mora biti zaštićen od napada spolja, kao i raznih pokušaja rušenja sistema davanjem loših ulaznih podataka. Da bi se to postiglo, sistem mora u sebi imati ugrađene mehanizme zaštite. PHP nudi velik broj nivoa sigurnosti koji se mogu podesiti u inicijalizacionom fajlu. Skalabilnost (Scalability). Danas se Web okruženje koristi za razvoj potpuno jednostavnih, ali i izuzetno kompleksnih Web aplikacija. Zbog toga je potrebno da programski jezik koji se koristi omogućuje pisanje vrlo jednostavnih skriptova za jednostavne potrebe (dakle, da ne postoji slučaj kada je potrebno napisati 30 redova kôda da bi se ispisao jedan red u prozoru browsera), a da sa druge strane nudi visok nivo kontrole na kompleksnim programima (koji mogu imati i više stotina redova kôda). PHP se u početku koristio za manje skriptove, koji su radili obradu rezultata HTML formulara, tako da je jednostavnost bila primarna. PHP je tako i nastao, jer autor nije hteo da stalno piše nekoliko redova Perl koda iznova, kada god želi da uradi neki jednostavan zadatak. Kada su se oblasti primene Web tehnologija počele proširivati, uvedeni su objektno-orijentisani koncepti, napisan je PHP4 koji nudi pristojan nivo kontrole kompleksnosti. Ono što izdvaja PHP od ostalih programskih jezika je velik broj ugrađenih funkcija koje mogu da obavljaju najraznovrsnije zadatke na potpuno transparentan način. Neke od interesantnijih funkcija PHP-a su: -
manipulacija nizovima, stringovima, datumima, preračunavanje datuma po različitim kalendarima, kontrola pravopisa, pakovanje i raspakivanje fajlova (bzip i zip format), pristup COM objektima, čitanje i kreiranje PDF fajlova, pristup raznim bazama podataka direktno ili kroz ODBC interfejs, manipulacija fajlovima i direktorijumima, upravljanje XML dokumentima uz podršku za DOM model, upotreba .NET tehnologija, ostvarivanje konekcija na FTP server i komunikacija FTP protokolom, ostvarivanje HTTP konekcija na udaljene Web servere, komunikacija IMAP, POP3 i NNTP protokolima, pristup Java objektima i pozivanje njihovih metoda,
105
Elektronske poslovne komunikacije –PRAKTIKUM
-
komunikacija pomoću LDAP protokola, kreiranje i čitanje Flash prezentacija (.swf fajlovi), implementacija SSL-a pomoću OpenSLL biblioteke, upravljanje procesom štampanja, upotreba socket-a, za direktnu komunikaciju na nekom TCP/UDP portu.
Web (HTTP) Server(i) Web server je računar koji koristi neku verziju operativnog sistema kao što su Windows ili Unix/Linux, na kojima rade specijalni programi koji obrađuju HTTP zahteve. Termin Web server, kada govorimo o dinamičkim sajtovima, obično ne ukazuje na sam računar nego na program koji na njemu radi. Program se naziva i HTTP serverom, da bi se razlikovao od aplikacionog servera. Web odnosno HTTP serveri koji se najčešće koriste su IIS i Apache. §
IIS (Internet Information Server) je Mikrosoftovo rešenje što, znači da radi samo pod Windows operativnim sistemima. Ovo je veoma snažan i fleksibilan program čija je najveća prednost što se nalazi kao standardni modul operativnih sistema Windows XP Professional i Windows NT, 2000, 2003, 2005, 2008 server, itd. To praktično znači da ako imate licencu za neke od ovih operativnih sistema imate mogućnost korišćenja IIS-a.
§
Apache je ime jednog od najpoznatijih Web servera. Ime nije dobio po poznatom indijanskom plemenu već je ono skraćenica od "A PAtCHy server" (u slobodnom prevodu: "zakrpljeni server"), jer su se njegovi autori prvobitno bavili zakrpama (patch) za NSCA server, koji je nekada bio vrlo popularan, a danas skoro zaboravljen. Apache je freeware proizvod, što znači da je besplatan, da se uz njega distribuira i njegov kôd i da svako ima pravu na upotrebu i izmenu kôda. Apache postoji u verzijama za praktično sve platforme i operativne sisteme koji postoje na svetu, navedimo samo neke: BeOS, FreeBSD, HPUX, IRIX, Linux, MacOSx, NetBSD, NetWare, OpenBSD, OS/2, QNX, Sinix, Solaris i Microsoft Windows. Širom sveta, na svim ovim platformama postoje korisnici ovog servera, čime se otkrivanje i ispravljanje grešaka i sigurnosnih propusta pretvara u jedan vrlo dinamičan proces, što dodatno uverava u pouzdanost ovog softvera. Apache podržava sve najnovije standarde. Server se lako proširuje dodatnim modulima, podržava DBM format koji omogućava jednostavnu kontrolu pristupa Web
106
Elektronske poslovne komunikacije –PRAKTIKUM
stranicama, omogućava mapiranje više IP adresa na jednoj mašini, samostalno podešavanje error poruka. Podržani su i SSL (Secure Socket Layer), protokoli za zaštićene transakcije koji su osnova svake kupoprodaje preko Interneta. Kad su u pitanju statičke stranice (običan HTML), Apache nije najbrži, ali pokazuje izvrsne rezultate. U izvršavanju aktivnih stranica (CGI) nema mu premca. Apache trenutno drži većinu tržišta Web servera. Rezultati ispitivanja firme "NetCraft" (www.netcraft.com/survey) pokazuju da Apache pokreće više od 60 odsto internet servera u svetu.
107
Elektronske poslovne komunikacije –PRAKTIKUM
LABORATORIJSKE VEŽBE Fokus narednih laboratorijskih vežbi prvenstveno je usmeren na postupke modeliranja i izrade Web aplikacije u čijem središtu je eShoppingCart. EShoppingCart (eKorpa) je u suštini Web aplikacije za elektronsku (online) prodaju koja mora zadovoljiti sledeće zahteve: -
Namena Web aplikacije (Web sajta) je prodaja robe i/ili usluga posredstvom Interneta;
-
Web aplikacija mora da koristi bazu podataka i da omogući ažuriranje izabranih tabela iz te baze;
-
Osnovne elemente poslovnog modela Web prodavnice definisati po ugledu na sisteme e-poslovanja koji se mogu naći na Internetu ili na postojeći poslovni model implementiran u Microsoftovoj Northwind bazi uz određena pojednostavljenja koja su neophodna imajući u vidu ograničeno vreme izrade;
-
Model baze podataka Web prodavnice formalizovati pomoću DBDesignera ili nekog drugog alata za DB modelovanje, a zatim na osnovu tog modela fizički realizovati inicijalnu baza (MS SQL i/ili MySQL DBMS) ;
-
Karakteristične sadržaje baze prikazivati pomoću potrebnog broja Web stranica vodeći računa o potpunoj funkcionalnosti sajta u smislu mogućnosti ažuriranja, unosa novih slogova i brisanja postojećih;
-
Osnovne funkcije online prodavnice implementirati na potrebnom broju Web stranica tako da se omogući:
108
§
kataloški pregled proizvoda (usluga) sa osnovnim skupom podataka za svaki proizvod (kataloški naziv, izgled – slika, jedinica mere, cena, stanje na lageru, itd.),
§
naručivanje – kupovina proizvoda ponuđenih katalogom (punjenje eKorpe),
§
kvantitativnu kontrolu ukupno naručenih proizvoda, pojedinačne ukupne cene naručenih proizvoda u eKorpi,
i
Elektronske poslovne komunikacije –PRAKTIKUM
-
§
definitivnu odluku o kupovini – zaključivanje narudžbe,
§
odustajanje od kupovine u bilo kojoj fazi (brisanje eKorpe),
§
unos elemenata neophodnih za identifikaciju kupca i pripadajućeg novčanog računa u banci (prijava kupca),
§
proveru stanja na računu i upoređivanje sa ukupnim iznosom naručenih proizvoda,
§
omogućavanje izvršenja kupovine (transakcije) ukoliko je račun finansijski solventan,
§
zabranu transakcije ukoliko na računu nema dovoljno novca i o tome obaveštavanje naručioca – kupca,
Tokom svih laboratorijskih vežbi studenti moraju samostalno izraditi sve, modelom predviđene, gradivne elemente predmetne Web aplikacije. Zavisno od uspešnosti u realizaciji svih funkcija, asistent ocenjuje studente adekvatnim brojem bodova. Sve zadatke, definisane na početku svake vežbe, je potrebno realizovati u .NET tehnologiji primenom Visual Web Developer Express Edition razvojne platforme [ili Visual Studia]. Kao programski jezik za kodiranje potrebnih procedura na serverskoj strani koristiti C#.
109
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 1: Upoznavanje sa .NET razvojnim alatima Mikrosoftova komercijalna razvojna platforma Visual Studio se koristi za razvoj kompleksnih poslovnih aplikacija, te zahteva veće računarske kapacitete (posebno memorijske) i dugotrajnije učenje. Najnovija verzija je 2010, a verzije 2005 i 2008 su široko prihvaćene od strane IT stručnjaka koji razvijaju savremene informacione sisteme. Međutim, besplatna i naravno jednostavnija verzija Visual Studia poznata je kao Visual Studio Express, omogućava početnicima brže savladavanje programerskih veština i razvoj manje kompleksnih aplikacija kakvi su primeri za učenje i jednostavniju upotrebu. -
-
-
-
Kome je namenjen? - Programerima početnicima, učenicima i studentima koji žele savladati osnove programiranja u ovoj razvojnoj okolini. Omogućava lakši i brži način kreiranja dinamičnih Web aplikacija. Koje su osnovne mogućnosti ovog razvojnog alata? § Učenje tehnika vizuelnog programiranja koristeći pojedno-stavljeno, nezahtevno razvojno okruženje s ugrađenim pomoćnim sadržajima. § Evaluacija .NET Frameworka za razvoj Windows i Web aplikacija. § Razvoj laboratorijskih (akademskih) modela i drugih zanimljivih, manje ili više kompleksnih Web aplikacija. Koji su "alati" uključeni u ovaj paket? § Visual Web Developer Express § Visual Basic Express § Visual C# Express § Visual C++ Express § Visual J# Express § SQL Server Express (baza podataka) Gde je alat raspoloživ: § Informacije o alatu se nalaze na odgovarajućoj Mikrosoftovoj Web stranici; §
Razvojni alat se može skinuti sa sajta: http://www.microsoft.com/express/Downloads/.
Za realizaciju predviđenih vežbi iz predmeta Elektronske poslovne komunikacije biće korišćeni razvojni alati instalirani na računare elektronske učionice: Visual Web Developer Express odnosno Visual Studio 2008 (MicrosoftÒ). Radi se o prilično
110
Elektronske poslovne komunikacije –PRAKTIKUM
sličnim platformama, a specifične razlike između ova dva razvojna alata biće detaljnije diskutovane tokom neposredne upotrebe pojedinih komponenti. Obe omogućuju razvoj Web aplikacija zasnovan na .NET tehnologiji koja je predstavljena u ranijim poglavljima ovog Praktikuma. Studenti koji žele pojedine zadatke rešavati (vežbati) kod kuće trebaju na svoj računar instalirati sledeći minimalni skup razvojnih komponenti: - Visual Web Developer Express (razvojna okolina za izradu Web aplikacija) - Visual C# Express (razvojna okolina za izradu aplikacija u C# jeziku) - SQL Server Express (baza podataka)
Visual Studio – komponente Kada se instalira Visual Studio dve njegove komponente su obavezne, treća je od velike pomoći ali je neobavezna: 1. .NET Framework Class Library (FCL). To je biblioteka već pripremljenih objekata klase. Ta biblioteka omogućuje brzu izgradnju računarskih aplikacija upotrebom pripremljenih objekata kao što su forme (forms), tekstualni okviri (text boxes), labele (labels), dugmad (buttons), padajuće liste (drop-down list), i drugi objekti. 2. Common Language Runtime (CLR). Ova komponenta upravlja izvođenjem projekta napisanog u bilo kom jeziku Visual Studia (najčešće su to Visual Basic i C#). 3. MSDN (Help) je pomoć u radu s Visual Studiom.
111
Elektronske poslovne komunikacije –PRAKTIKUM
Integrisano razvojno okruženje Primarna uloga integrisanog razvojnog okruženja Visual Studio je da omogući jednostavan dizajn Web forme, editovanje izvornog kôda, kompajliranje, linkovanje, izvršavanje i debagovanje programa. Sadrži u sebi potpunu dokumentaciju o podržanim programskim jezicima, standardnim bibliotekama i operativnom sistemu (Win32 API). Visual Studio IDE (Integrated Developement Environment), u suštini predstavlja integrisano grafičko okruženje, namenjeno za razvoj desktop i Web aplikacija koje su zasnovane na .NET tehnologijama. Sledi kratka lista razloga zbog kojih je VS pravi izbor za razvoj aplikacija u .NET okruženju: §
VS automatizuje korake neophodne pri kompajliranju prirodnog kôda, ali u isto vreme dozvoljava i kompletnu kontrolu nad nizom opcija ukoliko želimo da ih menjamo.
§
VS modul za uređivanje-pisanje kôda je povezan sa jezicima koje podržava VS (uključujući jezik C#) i to tako da omogućuje pametnu detekciju grešaka i sugeriše odgovarajući kôd na pravom mestu dok ga unosimo (IntelliSens) .
§
VS sadrži i dizajnerske alate za aplikacije koje uključuju Windows i Web formulare, koji vam omogućuju da jednostavnom tehnikom povlačenja i puštanja (engl. drag-and-drop) dizajnirate elemente korisničkog interfejsa.
§
Mnogi tipovi projekata koji su mogući u jeziku C# mogu se napraviti sa, "opštenamenskim" kôdom koji se već nalazi na pravom mestu. Umesto da počinjemo od nule, često ćemo naći različite datoteke koje sadrže kôd koji je za nas započet, smanjujući nam vreme provedeno u spremanju projekta.
§
VS sadrži nekoliko čarobnjaka koji vam automatizuju zadatke opšte namene i koji mogu dodati odgovarajući kôd postojećim datotekama, a da mi o tome ne vodimo računa (ili u nekim slučajevima čak i da ne pamtimo tačnu sintaksu).
§
VS sadrži moćne alatke za prikazivanje i navigaciju elemenata našeg projekta, bez obzira da li se radi o prirodnom C# kodu, nekoj slici ili možda nekom audio fajlu.
Pored toga što olakšava pisanje aplikacija, VS omogućuje i jednostavniju distribuciju i prilagođavanje projekata klijentima, kako bi ih oni lakše koristili ili instalirali. VS omogućuje i napredne tehnike otklanjanja grešaka pri razvoju projekata,
112
Elektronske poslovne komunikacije –PRAKTIKUM
i to tako da možemo u isto vreme ući u kôd jedne instrukcije dok pazimo u kakvom je stanju aplikacija. Postoji izvesna sličnost sa NetBeans (Sun Microsystems) razvojnim okruženjem. Osnovni elementi menija su: File, Edit, Website, Build, Debug, Format, Layout, Tools, Window, Community.
2
§
File meni je namenjen za kreiranje novih i/ili otvaranje postojećih projekata2, kreiranje novih i/ili otvaranje postojećih fajlova, njihovo snimanje i slične funkcionalnosti tipične za softvere iz ove kategorije.
§
Edit meni ima potpuno istu funkciju kao istoimeni meniji u ostalim grafičkim i sličnim okruženjima (akcije: undo, redo, copy, paste, find, replace ...)
§
View meni je namenjen podešavanju sadržaja prozora Visual Web Developer razvojnog okruženja. Ovde se dodaju ili uklanjaju palete poput Toolbox palete koja je od primarnog značaja kod tehnika vizuelnog programiranja. Zatim se mogu skrivati i prikazivati takozvani eksploreri od kojih su najbitniji Solution i Database (Server) Explorer.
§
Website meni namenjen je za dodavanje novih ili već postojećih stranica Web aplikaciji, isključivanje istih iz projekta i slično.
§
Build meni namenjen je za izgradnju Web aplikacije od fajlova (stranica) koje su uključene u projekat.
§
Debug meni služi za pokretanje ili preciznije rečeno, testiranje izgrađene Web aplikacije. Omogućen je pristup Debugger-u u cilju otklanjanja grešaka, testiranja i detaljnog praćenja stanja promenljivih u toku rada aplikacije.
Razvoj aplikacije započinje kreiranjem novog projekta
113
Elektronske poslovne komunikacije –PRAKTIKUM
Pored navedenih postoji još nekoliko menija koji omogućuju veliki broj funkcionalnosti svojstvenih kompleksnim razvojnim alatima namenjenih vizuelnom programiranju. Panel sa alatima Toolbox omogućava brzu ugradnju različitih kontrola odnosno .NET komponenti koje donosi Visual Studio. Te kontrole su grupisane u kategorije: Standard, Data, Validation, Navigation, Login, WebParts, HTML i General. Elementi alatnog panela, grupisani u nekoliko kategorija, mogu se širiti ili skupljati sa + odnosno -.
114
Elektronske poslovne komunikacije –PRAKTIKUM
Linija menija
Toolbox panel
Solution Explorer Documnet Window
Pored toga što se može širiti ili skupljati, ovaj panel se upotrebom alatke Auto Hide može učiniti nevidljivim oslobađajući tako radni prostor za dokumente – Web stranice koje su u procesu dizajna. Dodavanje kontrola na Web formu koju kreiramo je moguće na dva načina: § dva puta kliknuti na odabranu kontrolu ili § povući i spustiti (drag and drop) kontrolu na samu formu Solution Explorer – prikazuje fajlove, odnosno Web stranica (filenames) u projektu aplikaciji. Document Window – prikazuje otvorene dokumenta kao što je stranica Default.aspx na slici iznad. Svaki projekt odnosno svaka Web aplikacija počinje sa standardnom (Default) stranicom čije je ime Default.aspx - to je stranica koja će se kasnije modifikovati prema potrebama same aplikacije.
115
Elektronske poslovne komunikacije –PRAKTIKUM
Properties Window - prikazuje svojstva pojedinih objekata koji su na tekućoj Web stranici tokom dizajniranja.
116
Elektronske poslovne komunikacije –PRAKTIKUM
IDE prikazuje standardnu okolinu. Mogu se prikazati ili sakriti sledeći prozori: Toolbox, Solution Explorer, Database (Server) Explorer i Properties. View meni omogućuje prikaz ili skrivanje tih prozora. Ponekad IDE okolina nije onakva na koju ste navikli te je potrebno ponovno postaviti standardni prikaz. Najbrži način postavljanja standardnog prozora je upotrebom menija Window, i podmenija Reset Window Layout, što prikazuje sljedeća slika.
Terminologija objektno orijentisanog programiranja C# je objektno-orijentisani programski jezik. Objektno orijentisani jezici su i C++, Java, i VB.NET. C# se označava kao jezik koji pripada programiranju upravljanom događajima (event-driven programming language). Pišu se dakle programi koji "reaguju" odnosno odgovaraju na događaje. Primeri takvih događaja su: § pritisak na dugme ili meni (Clicking a button ili Menu),
117
Elektronske poslovne komunikacije –PRAKTIKUM
§ § §
otvaranje ili zatvaranje forme (Opening ili Closing a form), pokreti miša preko objekta kakav je recimo tekstualni okvir, kretanje od jednog ka drugom tekstualnom okviru.
Da biste radili sa C# programskim jezikom i uopšte sa Visual Studio razvojnom platformom, potrebno je razumeti objektnu terminologiju ("object terminology") prikazanu sledećom tabelom. Tabela 3: Termini svojstveni objektnom programiranju Pojam Object Property
Definicija Predmet, stvar – slično imenici u jeziku. Primeri objekata su forme (forms) i upravljači na formi kao što su dugmad (buttons), tekstualni okviri (text boxes), i sličice (icons). Objekti imaju svojstva – kao pridevi u jeziku. Svojstva opisuju objekte. Primeri svojstava su Text, Name, BackColor, Font, i Size.
Method
Kao glagol u jeziku – to su akcije koje izvršava objekat. Primeri metoda su Show (pokazati) i Hide (sakriti) formu ili recimo metoda za ispis forme.
Event
Događaji su akcije koje inicira (okida) korisnik kao što je klik na dugme. Događaje mogu okidati i određene akcije objekata. Naprimer, zatvaranje forme može predstavljati okidač (trigger) za neki događaj (event).
Class
To je apstraktni pojam – u pitanju je šablon za objekte. Naprimer, sve forme pripadaju klasi Form. Svi tasteri (dugmad) pripadaju klasi Button. Klase sadrže definicije svojstava (properties), metoda (methods) i sa njima povezanih događaja (events).
Pre upotrebe Visual Studio alata preporučuje se resetovanje The Properties of My Documents. Na Windows desktopu, kliknuti desnim tasterom miša na ikonu My Documents. Odabrati Properties kao na sledećoj slici:
118
Elektronske poslovne komunikacije –PRAKTIKUM
Zatim treba kliknuti na dugme Restore Defaults, a potom OK kako je to prikazano na narednoj slici. Ovim resetovanjem postajete vlasnik određenih resursa i objekata računara kao što ste i prilikom regularnog logovanja pri pokretanju računara. Ovo se posebno preporučuje kada radite u mrežnom ambijentu kakva je računarska laboratorija odnosno učionica. Naravno, da sve ovo nije neophodno ako se VS ne koristi u mreži.
119
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 2: Upoznavanje sa sintaksom i svojstvima Web stranice, kontrolama i objektima ASP.NET aplikacije Osnovna Web stranica je zapravo statični HTML tekst i bilo koja .html stranica može biti nazvana .aspx stranicom. Standardne HTML oznake su: [] § - HTML dokument § - zaglavlje HTML dokumenta § - naslov HTML dokumenta (caption u browseru) § - skok u novi red § - paragraf, odlomak, deo teksta § - generički bafer Stranica sadrži: § Directives: § Server controls: § Code blocks: … § Data binding expressions: § Server side comments: § Render code: i (nasleđeno iz ASP i treba ga izbegavati, koristiti i kôd za obradu događaja)
Svojstva i sintaksa Svojstva stranice: } AspCompat - kompatibilnost s ASP, "true" izaziva pad performansi } AutoEventWireup – automatsko povezivanje kontrola s događajima – preporuka je da se ostavi "false" jer se u protivnom isti događaj može aktivirati dva puta } Buffer - korišćenje međuskladišta za HTTP odzive } Codebehind – izvorna datoteka s pozadinskim kôdom § primer: Codebehind="Default.aspx.cs" } EnableViewState – automatizovano održavanje sadržaja pri ponovnom zahtevu za stranicom, standardno "true" } ErorPage – URL na koji se preusmerava u slučaju neobrađene greške } Inherits – osnovni razred Page objekta § primer Default.aspx: Intrinsic kontrole } Odgovaraju HTML kontrolama:
§ § § § § § § § § § § }
TextBox, ListControl, CheckBox standardno nemaju postavljen automatski postback
127
Elektronske poslovne komunikacije –PRAKTIKUM
§
nužno je ručno postavljanje svojstva AutoPostBack=true za aktiviranje
događaja List kontrile } Liste podataka § § § § § § § }
CheckBoxList i RadioButtonList § kolekcije check box, odnosno radio button kontrola § mogu se povezati na podatke (data binding)
}
Repeater, DataList i DataGrid § snažne, korisnički prilagodljive List kontrole § prilagođavanje se može izvesti šablonima § mogu sadržavati druge kontrole Rich kontrole } Posebne (custom) kontrole § - slično MonthCalendar u Windows Forms § - automatsko prikazivanje oglasa definisanih u XML datoteci čije je ime navedeno u svojstvu kontrole AdvertisemenFile
../images/banner.gif http://www.microsoft.com/NET Microsoft .NET Site 80 Microsoft.NET This is a caption for Microsoft.NET …
128
Elektronske poslovne komunikacije –PRAKTIKUM
}
ostale pridodate (3rd party) kontrole
Validacijske kontrole } Provera sadržaja drugih kontrola § kontrole izvedene iz System.Web.UI.WebControls.BaseValidator § validacija se deklariše van kontrole za unos podataka
}
§
}
§ §
}
provera da li vrednost poštuje uzorak (pattern) svojstvo ValidationExpression, npr. \d{5}(-\d{4})?
§ §
}
poređenje s konstantom, drugom kontrolom ili tipom podatka svojstva Operator, Type i ValueToCompare Operator – Equal, NotEqual, GreaterThan itd.
§ Type - Currency, Date, Double, Integer, String §
}
provera na dozvoljeni raspon vrednostix svojstva MinimumValue, MaximumValue
§ § §
}
provera obaveznog unosa
korisnički definisana validacijska funkcija
§
jedinstvena lista poruka o validacijskim greškama
§
DisplayMode: BulletList, List, SingleParagraph
Primer validacijskih kontrola } Ključna svojstva validacijskih kontrola § Text – tekst koji se prikazuje u trenutku pojedinačne provere § ErrorMessage – tekst za ValidationSummary § ControlToValidate – naziv kontrole koju treba proveriti § Display – način prikaza vrednosti svojstva Text - Static: tekst uvek na istom mestu - Dynamic: izgled stranice (širina i prelom) se menja zavisno -
od teksta None: ne prikazuje se Text, ali se može koristiti ValidationSummary
129
Elektronske poslovne komunikacije –PRAKTIKUM
} }
Za istu kontrolu može se kreirati više validatora Stranica ima § Postupak Page.Validate(); - obavlja validaciju § Svojstvo Page je instanca stranice koja sadrži serversku kontrolu § Svojstvo Page.IsValid – oznaka da su sve provere uspešne
}
Kontrole za napuštanje stranice mogu imati postavljeno svojstvo § CausesValidation=True
Primer: Validation.aspx
private void CustomValidator1_ServerValidate (object source, …ServerValidateEventArgs args) { int num = Int32.Parse(args.Value); if ((num % 2) == 0) { args.IsValid = true; else args.IsValid = false; } } private void Page_Load(object sender, System.EventArgs e) { if (Page.IsPostBack) { Page.Validate(); Msg.Text = "Page.IsValid = " + Page.IsValid.ToString(); } } Povezivanje podataka - Data Binding: }
Postupak povezivanja § kreiranje objekta koji sadrži podatke (DataSet, DataTable, DataView, DataReader, Array, string, …, XML itd.) §
}
130
pridruživanje tog objekta kontroli
Povezivanje navođenjem izraza za povezivanje
Elektronske poslovne komunikacije –PRAKTIKUM
§ }
DataBind() – metod kontrole za povezivanje § § §
evaluira izraz i obavlja povezivanje DataBind – metod za povezivanje pojedinačne kontrole (i podkontrola) Page.DataBind – povezuje sve kontrole na stranici
Povezivanje pojedinačnih vrednosti: }
Definisanje veza, korišćenjem izraza za povezivanje § § § § protected string MyProperty { get { return "The time is: " + DateTime.Now.ToString(); } }
Aktiviranje povezivanja: }
Aktiviranje povezivanja za jednu kontrolu
private void Button2_Click(object sender, System.EventArgs e) { Label6.DataBind(); }
}
Aktiviranje povezivanja za čitavu stranicu
131
Elektronske poslovne komunikacije –PRAKTIKUM
private void Button1_Click(object sender, System.EventArgs e) { Page.DataBind(); }
Povezivanje jednostavnih listi: }
Povezivanje List kontrola § Pri povezivanju stvara se lista elemenata interfejsa za svaki element liste § Pojedini element sadrži vidljivi tekst i opcionu vrednost, koja se ne vidi
}
Kontrole koje se povezuju na ovaj način
§ § § § }
Metode povezivanja § opciono postavljanje svojstava DataValueField i DataTextField
§
§ §
ukoliko izvor nema imenovanih elemenata, postavlja se na null postavljanje svojstva DataSource poziv metoda DataBind()
Primeri povezivanja listi: } Povezivanje samo korišćenjem svojstva DataSource string[] months = {"Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"}; DropDownList1.DataSource = months; DropDownList1.DataBind(); } Povezivanje korišćenjem DataValueField i DataTextField § pretpostavlja se da postoji izvor s poljima, npr. DataView dv DropDownList1.DataSource = dv; DropDownList1.DataValueField = "DayNumber";
132
Elektronske poslovne komunikacije –PRAKTIKUM
DropDownList1.DataTextField = "DayName"; DropDownList1.DataBind(); Povezivanje jednostavnih listi s bazom podataka: }
Povezivanje kontrola obavlja se slično povezivanju na kolekcije § postavljanje DataValueField i DataTextField na polja izvora § postavljanje DataSource - uobičajno DataReader ili DataView § poziv metoda DataBind()
void Page_Load(object s, EventArgs e) { ListBox1.DataSource = GetSampleData(); ListBox1.DataValueField = "CategoryID"; ListBox1.DataTextField = "CategoryName"; ListBox1.DataBind(); } void Page_Load(object s, EventArgs e) { ListBox1.DataBind(); } Složene liste (DataGrid, DataList, Repeater) DataGrid kontrola je u stvari mreža sa podacima: § § §
§
Standardno prikazuje sve kolone (polja) povezanog izvora, ali se može definisati i podskup kolona, Pojedinačna kolona se može formatirati korišćenjem šablona (templates), Ima svojstva kojima se određuje mogućnost sortiranja podataka, pregled po stranicama te izmene i brisanje prikazanih podataka, Moguće je povezivanje svih kolona
133
Elektronske poslovne komunikacije –PRAKTIKUM
§
postavljanjem DataSource i pozivom DataBind()
Neka svojstva - AutoGenerateColumns – povezivanje svih -
polja AllowSorting, AllowPaging –
-
sortiranje i straničenje DataKeys i DataKeyField – (primarni) ključ § §
npr. za DataGrid postavlja se DataKeyField="CategoryId" ključu se pristupa u kolekciji DataKeys, pr. grid.DataKeys[index]
Neki DataGrid članovi: §
Kolone mreže: - Bound – povezana kolona - Button – dugme sa korisnički definisanom -
§ §
funkcionalnošću Select – selekcija reda Edit, Update, Cancel – ažuriranje reda Delete – brisanje reda Hyperlink – hiperveza Template – korisnički definisana
kombinacija kontrola Button se kolonama slika postavlja kao tekst Događaji: -
-
ItemCreated, ItemDataBound – stvaranje / povezivanje elementa EditCommand, DeleteCommand, UpdateCommand, CancelCommand – ažuriranje elemenata SortCommand – sortiranje elemenata PageIndexChanged – promena u smislu straničenja
134
Elektronske poslovne komunikacije –PRAKTIKUM
§
Elementi: - DataGrid.EditItemIndex – indeks reda -
koji se trenutno uređuje (-1 za prekid) DataGridCommandEventArgs.Item – tekući red § Cells – kolekcija ćelija § ItemIndex – indeks §
npr. e.Item.Cells[0].Text.ToStri ng()
Povezivanje pojedinačnih kolona: §
Postavlja se - AutoGenerateColumns="false" - Svojstvo Columns - definicija pojedine kolone
Primer:
Pregled po stranicama: §
Stranice – svojstva PageSize,PageCount i CurrentPageIndex
§
Postavljanje svojstava - AllowPaging="true" - PageSize=5 -
Rukovanje događajem OnPageIndexChanged postavlja se indeks
135
Elektronske poslovne komunikacije –PRAKTIKUM
sledeće stranice, vrši se obuhvat podataka i obnavlja povezivanje
private void DataGrid4_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { // Go to the new page DataGrid4.CurrentPageIndex = e.NewPageIndex; DataGrid4.DataSource = Util.GetEmployeeDataDV(); DataGrid4.DataBind(); }
Šabloni (templates): §
§ -
Prilagođavanje izgleda serverske kontrole - oblikuje se struktura, a ne samo stil - u šablonu se mogu koristiti druge kontrole § šabloni određuju skup markup (HTML ili server) kontrola za svaku kolonu Standardni šabloni za list-bound kontrole HeaderTemplate: prikazuje se jednom, pre prikaza redova ItemTemplate: prikazuje se za svaki
prikazani red -
AlternatingItemTemplate: slično
-
ItemTemplate, ali za svaki drugi red SeparatorTemplate: prikazuje se između
-
susednih redova FooterTemplate: prikazuje se jednom, nakon prikaza redova
Sledeća slika prikazuje šemu oblikovanja strukture list-bound kontrole upotrebom standardnih šablona.
136
Elektronske poslovne komunikacije –PRAKTIKUM
Povezivanje elemenata podataka: § -
-
DataBinder – statički objekat za povezivanje Eval – metod za obuhvat i formatiranje podataka u šablonu ▫ Container – drugo ime za kontrolu koja sadrži šablon DataItem – aktuelni red podatka Eval je potrošač resursa - podacima se može pristupati i
§
direktno - DataTable ▫ - DataView ▫ - Array of strings ▫ DataList kontrola:
-
§ Pregled u listi uz mogućnost izmene podataka Smer iscrtavanja: horizontalni ili vertikalni
137
Elektronske poslovne komunikacije –PRAKTIKUM
-
Prilagođavanje izgleda obavlja se šablonima Izbor jednog ili više elemenata Alternirajući elementi Ne podržava pregled po stranicama
Primer: DataBinding1.aspx
void Page_Load(object s, EventArgs e) { myDataGrid.DataSource = GetSampleData(); myDataGrid.DataBind(); } Title id: Title:
Repeater kontrola: Jednostavan prikaz liste elemenata - Dizajn se obavlja ručno, pisanjem HTML kôda - Za vizuelno formatiranje koriste se šabloni - Ne podržava pregled po stranicama ni editovanje podataka Primer: DataBinding2.aspx
TitleType
138
Elektronske poslovne komunikacije –PRAKTIKUM
Korisničke kontrole: -
§ User Controls: mini stranice ("Pagelet") Čuvaju se u .ascx datoteci Na stranici na kojoj se žele koristiti obavlja se registracija
...
-
Mogu imati javne članove
public string Color = "blue"; This is a simple message pagelet
§
Instanciranje i korišćenje u programu
Primer:
foo = Page.LoadControl("foo.ascx"); foo.color = "red“; myPanel.Controls.Add(foo); Namenske kontrole: §
Custom Controls: izvedene iz
System.Web.UI.Control
139
Elektronske poslovne komunikacije –PRAKTIKUM
-
Moraju implementirati metodu Render()
-
Moraju same održavati svoje stanje, rukovati postback podacima te brinuti o prikazu i događajima njima podređenih kontrola
using System; using System.Web; using System.Web.UI; public class MyControl : Control { protected override void Render(HTMLTextWriter w) { w.Write(“Control output”); } }
ASP.NET i ADO.NET – konektovani i diskonektovani scenario
ADO.NET je najnovija paradigma za rad s podacima u sklopu nekog od sistema baze podataka. Osnovna karakteristika ADO.NET-a su: § Više različitih baza na raspolaganju: ▫ Microsoft Accsess, Microsoft FoxPro, Btrieve, Paradox, Oracle, Microsoft SQL Server § Može se primenjivati i XML file format za razmenu strukturiranih podataka Internetom. Objekti ADO.NET služe za pronalaženje i modifikovanje informacija u bazi podataka. Način pristupa podacima pomoću ADO.NET-a ilustrovan je sledećom slikom:
140
Elektronske poslovne komunikacije –PRAKTIKUM
Izborom View ® Database Explorer aktiviramo specijalizovan eksplorer, svojevrsno grafičko sredstvo koje omogućuje povezivanje s lokalnim, client server ili Internet izvorima podataka (Database Explorer je termin VWD Expres razvojnog okruženja, a Visual Studio koristi termin Server Explorer). Postupak:
§ §
Kliknuti na Connect To Database u Database Exploreru Nakon uspostavljanje veze s bazom potrebno je kreirati data adapter kako bi se ekstrahirale potrebne (specifične) informacije iz baze podataka.
Korišćenje ADO.NET klasa u konektovanom scenariu U ADO.NET-u postoje dva osnovna načina rada: konektovani i diskonektovani. Kod konektovanog scenarija resursi se uzimaju sa servera sve dok se konekcija ne zatvori. Korisnik je konstantno povezan na izvor podataka. Prednost konektovanog scenarija je da su podaci uvek ažurni, konkurentni pristup resursima servera se lakše kontroliše. Nedostatak konektovanog rada je da mora da postoji konstantna mrežna konekcija, kao i mala skalabilnost aplikacije. Redosled izvršavanja operacija pri radu u konektovanom scenariju je: otvaranje konekcije ® izvršavanje komande ® obrada zapisa u reader-u ® zatvaranje reader-a ® zatvaranje konekcije. Potrebno je učiniti sledeće četiri radnje kako bi pristupili podacima u bazi: § §
spojiti se na bazu, napisati i pokrenuti SQL naredbu za selektovanje potrebnih podataka,
141
Elektronske poslovne komunikacije –PRAKTIKUM
§ dobiti podatke iz baze (rezultat), i § zatvoriti vezu. Zato u .NET postoje tri posebna objekta: § Connection objekt, § Command objekt , § DataReader objekt. Ti objekti su međusobno povezani na način koji ilustruje sledeća slika:
Povezivanje s bazom (Connection objekt):
142
Elektronske poslovne komunikacije –PRAKTIKUM
Connection je objekt koji prenosi podatke između mesta gde su sačuvani i aplikacije. Taj objekt ima svojstvo (property) ConnectionString, a ono definiše sve informacije potrebne za uspostavljanje veze s bazom. String sadrži podatke o korisniku (user data), provajderu baze podataka (database provider), izvoru podataka (data source), i sl. Primer:
Dim MyConnection As New OleDbConnection MyConnection.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0; _ Data Source=c:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB; _ UserID=Admin; Password= "";" Svojstvo ConnectionString može se postaviti samo kada je veza zatvorena. Ključni parovi vrednosti se razdvajaju tačkom zarezom (;). Za otvaranje veze s bazom Connection objekt se služi metodom Open.
§ §
MyConnection.Open() Ta metoda otvara vezu s bazom određenom ConnectionString-om. Metoda Close zatvara vezu s bazom.
§ § Primer:
Dim MyConnection As New OleDbConnection() MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; _ Data Source=c:\DBFile.mdb;" MyConnection.Open() ‘ kôd koji upotrebljava otvorenu vezu sa bazom MyConnection.Close() Pokretanje naredbe SQL-a SELECT (Command objekt): Objekt Command izvršava naredbu SQL-a SELECT u bazi s kojom je uspostavljena veza. Objekt Command ima svojstvo Connection, a ono se postavlja za odgovarajući objekt Connection. Naredba SQL se čuva u svojstvu CommandText.
143
Elektronske poslovne komunikacije –PRAKTIKUM
Primer: Pretpostavka je da postoji varijabla MyConnection kao u ranijem primeru.
… Dim MyCommand As New OleDbCommand() MyCommand.Connection = MyConnection MyCommand.CommandText = "SELECT Red FROM Tabela“ Dim MyCommand As New OleDbCommand() MyCommand.Connection = MyConnection MyCommand.CommandText = "SELECT UnitPrice, ProductID, Quantity [Order Details]"
Command objekat dozvoljava direktan pristup podacima u bazi u konektovanom okruženju. Ovaj objekat sadrži referencu na SQL komandu ili uskladištenu proceduru koje se mogu izvršavati direktno. Objekat Command implementira IDbCommand interfejs. Ako se kao .NET snabdevač podataka izabere SQL Server onda se odgovarajući komandni objekat dobija instanciranjem klase SqlCommand. Ako se kao snabdevač podataka odabere OLE DB.NET onda se komandni objekat dobija instanciranjem klase OleDbCommand. Koristeći odgovarajući Comand objekat moguće je izvršavati SELECT, INSERT, UPDATE i DELETE naredbe nad elementima baze podataka.
144
Elektronske poslovne komunikacije –PRAKTIKUM
Svojstva interfejsa IDbCommand: Svojstvo CommandText uključuje tekst SQL komande ili naziv uskladištene procedure koje treba izvršiti. Svojstvo CommandType specificira o kakvom se tipu komande radi tj. da li je to Text odnosno napisana SQL komanda ili je to StoredProcedure odnosno uskladištena procedura. Svojstvo Connection ukazuje na Connection objekat koji se koristi za komuniciranje sa bazom podataka. Svaki komandni objekat može imati nula ili više parametara što se specificira svojstvom Parameters. Metode interfejsa IDbCommand: Metoda ExecuteScalar izvršava komandu koja vraća skalarnu vrednost. Metoda ExecuteReader izvršava komandu koja vraća skup zapisa iz baze. Metoda ExecuteNonQuery izvršava komandu koja ažurira bazu podataka ili menja strukturu baze podataka. Ovde se pod ažuriranjem podrazumeva i ubacivanje i brisanje podataka iz baze. Metode objekta Command: Objekat Command implementira interfejs IdbCommand. ExecuteScalar metoda se koristi za izvršavanje upita koji vraća jednu skalarnu vrednost. ExecuteNonQuery metoda se koristi za izvršavanje INSERT, UPDATE i DELETE komande nad bazom podataka. Metoda ExecuteReader se koristi za izvršavanje SELECT komandi nad bazom podataka koje vraćaju skup zapisa. Izvršavanje upita koji vraća skalarnu vrednost Posredstvom Command objekta izvršava se upit SELECT COUNT(*) FROM Customers koji daje broj zapisa u tabeli Customers (koja se nalazi u bazi podataka Norhwind). Prvi parametar SqlCommand konstruktora predstavlja tekst sql komande ili naziv procedure sa kojom se radi. Drugi parametar je odgovarajući SqlConnection objekat pomoću koga se vrši konekcija na bazu podataka. Dohvat podataka i rad s podacima (DataReader objekt): Objekt DataReader omogućuje pregled podataka (samo za čitanje: readonly), tj. slogova koji se mogu pregledati samo kretanjem od prvog prema poslednjem (forward-only).
145
Elektronske poslovne komunikacije –PRAKTIKUM
Kako dohvatiti podatke iz baze? Kreiranje objekta DataReader je moguće samo ako je pozvana metoda ExecuteReader za objekt Command. Ta metoda šalje vrednosti upisane u CommandText svojstva Connection i gradi objekt DataReader. DataReader se ne može pozvati direktno nego isključivo putem objekta Command. DataReader se mora zatvoriti kada više nije potreban i to se rešava metodom Close. Primer:
Dim MyReader As OleDbDataReader MyReader = MyCommand.ExecuteReader() ‘ kôd za upravljanje podacima MyReader.Close() Pristup podacima selektovanim iz baze: Za pristup podacima iz baze služi objekt DataReader s metodom Read. Metoda Read je funkcija koja vraća false ako nema slogova, a ako slogovi postoje vraća true. Pozivom te metode se svojstvo Item za DataReader postavlja na sledeći slog. To je vrlo bitno razumeti jer svaki poziv te metode pomera pokazivač sloga za jedan slog.
146
Elektronske poslovne komunikacije –PRAKTIKUM
Primer: Neka objekt DataReader-a s nazivom MyReader pokazuje na drugi slog.
Dim NotEof As Boolean 'Default pozicija za OleDbDataReader je ispred prvog sloga. 'Zato se mora pozvati metoda Read kako bi se podaci prvog sloga dohvatili '(odnosno, pokazivač postavio na slijedeći slog, a on je prvi) NotEof = MyReader.Read() While NotEof ComboBox1.Items.Add(MyReader.Item("Quantity")) NotEof = MyReader.Read() End While
DataReader je u principu brzi (read-only, forward -only) kursor koji se pomera kroz skup zapisa. Svaki DataReader objekat implementira IDataReader interfejs. Pristup podacima korišćenjem objekta DataReader sastoji se od sledećih koraka: kreira se Command objekat sa odgovarajućim SELECT upitom, kreira se objekat Connection i otvara se, izvršava se ExecuteReader( ) metoda objekta
Command koja vraća objekat DataReader. Koristeći Read( ) metodu objekta DataReader prolazi se kroz sve redove. Kada Read() metoda vrati false zatvara se objekat DataReader i objekat Connection. Svojstva i metode DataReader objekta
Read metoda čita zapis iz DataReadera i vraća true ako ima još zapisa odnosno false ukoliko se stiglo do poslednjeg zapisa. Podrazumevana pozicija
147
Elektronske poslovne komunikacije –PRAKTIKUM
SqlDataReader-a je ispred prvog zapisa. Kada se korišćenjem Read metode pozicioniramo na određeni red u objektu DataReader tada pojedinim ćelijama u redu
pristupa
na
osnovu njihovog imena ili pozicije. Izraz aReader["ImeKolone”] je tipa object i mora se "kastovati" u željeni tip podataka. Ukoliko naprimer, želimo da pročitamo sadržaj druge ćelije u kojoj znamo da se nalazi celobrojna vrednost to se može uraditi korišćenjem izraza
aReader.GetInt32(1). Korišćenje transakcija Ukoliko je potrebno da se više SQL komandi izvrše po principu "sve ili ništa" tada se one izvršavaju u okviru transakcije. Da bi se započela transakcija potrebno je kreirati objekat SqlTransaction. Objekat SqlTransaction se kreira pozivom metode BeginTransaction odgovarajućeg SqlConnection objekta. Da bi se komanda izvršavala u okviru transakcije odgovarajućem SqlCommand objektu za Transaction svojstvo treba dodeliti prethodno kreiran objekat SqlTransaction. Ukoliko je transakcija uspešno izvršena poziva se Commit metoda odgovarajućeg SqlTransaction objekta u protivnom poziva se Rollback metoda. Korišćenje ADO.NET klasa u diskonektovanom scenariu
Dataset objekt predstavlja objekt koji igra ulogu 'lokalne baze podataka' na klijentu. Podaci koje dataset sadrži nalaze se u memoriji klijenta i sve operacije nad podacima obavljaju se lokalno, što prvenstveno doprinosi smanjenju opterećenja samog servera. Priroda rada sa bazama podataka dovela je do ugrađivanja dataset objekta u .NET. U većini slučajeva, klijenti se povezuju sa serverom u cilju čitanja podataka, zatim sledi duži period kada je nepotrebno održavati konekciju sa serverom, a nakon lokalne izmene podataka u dataset-u (dodavanje, izmena, brisanje) podaci se šalju nazad serveru koji vrši neophodne izmene u bazi podataka. Dakle, dataset predstavlja skup podataka koji su "otkačeni" (disconnected) od svog izvora. Konekcija sa serverom se uspostavlja preko dataadapter objekta i traje samo kratko vreme dok se podaci čitaju, odnosno vraćaju nazad u bazu. Rad sa dataset objektom: Dataset objekt se sastoji od tabela, tabele od redova (rows), a redovi naravno, sadrže kolone. Za komunikaciju sa bazom podataka koristi se DataAdapter objekt
148
Elektronske poslovne komunikacije –PRAKTIKUM
zajedno sa dataset objektom. Objekti mogu da se kreiraju na dva načina: "ručno" (pisanjem kôda) i korišćenjem Windows Forms Designer-a. Primer: prikaz povezanih tabela "Northwind"
"Kategorije" – "Proizvodi"
iz baze podataka
Punjenje stranica: § Punjenje podataka (Page_Load) - Stranica se prvi put puni podacima iz baze podataka (IsPostBack = False)
§
▫ Listi kategorija pridružuju se obuhvaćeni podaci - Tabela proizvoda formira se na osnovu izabrane kategorije Očuvanje stanja kontrola
149
Elektronske poslovne komunikacije –PRAKTIKUM
-
-
Pri ponovnom obuhvatu ne treba ponavljati punjenje (IsPostBack = True) ▫ sadržaj liste se smešta u skrivenu HTML varijablu __VIEWSTATE Vredi za kontrole za unos podataka (pr. TextBox, CheckBox), kontrole u koje se podaci ne unose direktno (pr. Label, DataGrid) te hibridne kontrole (pr. DropDownList, ListBox) ▫ može se kontrolisati na nivou stranice ili na nivou kontrole
Primer: §
Punjenje podataka (Page_Load)
private void Page_Load(object sender, System.EventArgs e) { connString="provider=Microsoft.Jet.OLEDB.4.0; data source=" + imeBaze; if (!this.IsPostBack) { OleDbConnection conn=new OleDbConnection(connString); conn.Open(); String sql="SELECT * FROM Categories"; OleDbCommand comm = new OleDbCommand(sql,conn); OleDbDataReader r=comm.ExecuteReader (CommandBehavior.CloseConnection); if (r.Read()) { lstKat.DataTextField="CategoryName"; lstKat.DataValueField="CategoryID"; lstKat.DataSource=r; lstKat.DataBind(); r.Close(); fillGrid(); } } }
Obrada serverskih događaja: §
150
Promena izabrane kategorije (lstKat_SelectedIndexChanged)
Elektronske poslovne komunikacije –PRAKTIKUM
private void lstKat_SelectedIndexChanged(object sender, System.EventArgs e) { fillGrid(); }
§
Punjenje DataGrid kontrole podacima o proizvodima
private void fillGrid() { if (lstKat.SelectedItem!=null) { labKat.Text=lstKat.SelectedItem.Text.ToUpper(); String sql="SELECT * FROM Products WHERE CategoryID=" + lstKat.SelectedItem.Value.ToString(); OleDbConnection conn=new OleDbConnection(connString); conn.Open(); OleDbCommand comm = new OleDbCommand(sql,conn); OleDbDataReader r=comm.ExecuteReader (CommandBehavior.CloseConnection); if (r.Read()) { dg.DataSource=r; dg.DataBind(); r.Close(); } } } Dinamička promena svojstava objekata: Primer: promena boje pozadine pojedinačnih redova private void OnItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if (e.Item.DataItem!=null) { if (Convert.ToBoolean(((System.Data.Common.DbDataRecord) e.Item.DataItem)["Discontinued"])==true) e.Item.CssClass="emItem";
151
Elektronske poslovne komunikacije –PRAKTIKUM
} }
Vežba 3: Kreiranje prostih Web formi kao demonstracija komunikacije sa Web serverom U opštem slučaju klijent šalje zahtev serveru (npr. za prikaz jedne Web forme - stranice), server prima zahtev i obrađuje ga, prilikom obrade tog zahteva server po potrebi kontaktira druge servere i na trenutak i sam preuzima ulogu novog klijenta (npr. servera baze podataka). Po obradi zahteva server šalje odgovor(e) klijentu koji je inicijalno postavio zahtev. Načelno nije fiksno određeno vreme između zahteva i odgovora. Odgovor može doći u vrlo kratkom, ali i jako dugom vremenu. Na WWW je danas prihvatljivo sve što se korisniku ne čini preterano dugo (npr. Global Application File; - Sadrži event handlere za događaje početka i kraja sesije: § void Session_Start(object sender, EventArgs e); § void Session_End(object sender, EventArgs e); Čuvanje i prenos međurezultata – Application State -
-
Slično kao i Session kolekcija, služi za čuvanje stanja aplikacije; Jedna kolekcija zajednička i vidljiva za sve sesije (korisnike) § Može se koristiti za komunikaciju između različitih sesija; Životni vek – od prvog pokretanja aplikacije § Stanje se resetuje pri ponovnom pokretanju (reboot servera i sl.); Event handleri se takođe nalaze u datoteci Global.asax:
§ §
§
void Application_Start(object sender, EventArgs e); void Application_End(object sender, EventArgs e); void Application_Error(object sender, EventArgs e);
Z A D A T A K 2: -
-
162
Kreirati Web formu koja traži unos podatka (imena osobe koja koristi tu Web formu) i klikom na dugme OK preusmerava korisnika na drugu Web formu i pri tome čuva uneti podatak (ime korisnika); Na drugoj formi ispisuje ime korisnika i trenutan broj aktivnih sesija.
Elektronske poslovne komunikacije –PRAKTIKUM
R E Š E N J E Z A D A T K A 2 – opis korak po korak: Kôd uz Web formu koja traži unos imena osobe koja koristi tu formu: public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnOK_Click(object sender, EventArgs e) { Preusmeravanje Session["ime"] = unesiIme.Text; na drugu Web formu Response.Redirect("Page2.aspx"); Page2.aspx } }
Kôd uz drugu Web formu koja čita vrednost koja je poslata preko sesije i ispisuje je u labelu:
public partial class Page2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { try { lblKorisnika.Text = Application["korisnikaOnline"].ToString(); lblIme.Text = Session["ime"].ToString(); } catch { } } } Global.asax event handler-i :
void Application_Start(object sender, EventArgs e) { Application["korisnikaOnline"] = 0; } void Session_Start(object sender, EventArgs e) { int tmpKorisnikaOnline;
163
Elektronske poslovne komunikacije –PRAKTIKUM
tmpKorisnikaOnline = int.Parse(Application["korisnikaOnline"].ToString()); tmpKorisnikaOnline++; Application["korisnikaOnline"] = tmpKorisnikaOnline; } void Session_End(object sender, EventArgs e) { int tmpKorisnikaOnline; tmpKorisnikaOnline = int.Parse(Application["korisnikaOnline"].ToString()); tmpKorisnikaOnline--; Application["korisnikaOnline"] = tmpKorisnikaOnline; }
164
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 4: Modelovanje baze podataka jedne Web aplikacije Modelovanje baze podataka je deo procesa razvoja informacionog sistema (tzv. životnog ciklusa IS-a) koji se sastoji iz sledećih faza: § Planiranje razvoja IS; § Analiza i specifikacija zahteva korisnika; § Projektovanje baze podataka i programa; § Implementacija sistema; § Održavanje. Opšte je poznato da se iz analize korisničkih zahteva dobijaju informacije o entitetima, atributima i vezama između entiteta. Postavimo se, za trenutak, u ulogu korisnika Web aplikacije koji izgrađujemo. U pitanju je aplikacija koja podržava prodaju proizvoda ili usluga preko Interneta. Zaključićemo da model baze podataka Web prodavnice treba koncipirati tako da podržava kompletan proces prodaje određenog proizvoda (usluge) zajedno sa predviđenim oblikom novčanih transakcija. Za konkretan model baze podataka definišimo minimalni skup entiteta i to: §
Proizvod [osnovni podaci o proizvodima u formi kataloga],
§
Kupac [osnovni podaci o kupcima],
§
Racun [entitet novčanih transakcija što je svojevrsna evidencija o plaćanju, koja zavisi od izbora modela prihoda].
§
Stavke [narudžbe odnosno spisak naručenih proizvoda za svakog Кupca, za svaki Racun - transakciju],
§
Korpa [privremeni spisak izabranih proizvoda koji nakon konačne potvrde narudžbe postaje račun].
Kao samostalan rad odnosno kao pripremu za ovu vežbu potrebno je najpre izvršiti analizu primera modela podataka postojećih poslovnih sistema (naprimer Mikrosoftove baze Northwind) i/ili pojednostavljenih modela podataka e-poslovanja koji se mogu naći na Internetu, npr. na sajtu http://databaseanswers.org/data_models/index.htm Sledeća slika prikazuje jedan od modela koji se mogu naći na gore navedenoj Web lokaciji, a koji se odnosi na e-Commerce Shopping Carts bazu podataka.
165
Elektronske poslovne komunikacije –PRAKTIKUM
166
Elektronske poslovne komunikacije –PRAKTIKUM
Ili model baze podataka jednog logističkog sistema:
Postoji niz nezavisnih alata za ER (Entity Relation) modelovanje, kako komercijalnih kao što je CA ERwin® Data Modeler (http://www.ca.com) tako i Open Source rešenja kao što je DBDesigner4 (prikazan slikama koje slede), koji ima minimalistički i intuitivan grafički interfejs te jasno uputstvo za rad (Help/HTML Documentation) što je činjenica od bitne važnosti za studente i početnike u ovoj oblasti.
167
Elektronske poslovne komunikacije –PRAKTIKUM
DBDesigner4 je program koji se koristi za grafičko predstavljanje elemenata baze podataka (tabela i veza između tabela). Odmah nakon startovanja ovog programa možemo primetiti da liči na mnoge druge Windows aplikacije to jest ima klasičan grafički interfejs (na primer: meni File se koristi kao i u ostalim programima za otvaranje postojećeg Open ili čuvanje Save projekta, kao i New za kreiranje novog praznog projekta) ali naravno i niz drugih menia koji su specifični za ovakav program.
Glavni Meni Model
Toolbar
Palete
Status Bar
Ukoliko ste prvi put startovali program automatski je otvoren novi projekat na kome možete raditi i kasnije ga sačuvati, a ukoliko pak već radite na nekom modelu izaberite iz menija File opciju New posle čega možete početi da radite na novom projektu. Da bi ste počeli da radite na kreiranju grafičke predstave vaše baze podataka prvo je potrebno kreirati novu regiju u kojoj će se nalaziti elementi vaše baze podataka. To će te najlakše uraditi tako što birate opciju New Region koja se nalazi uz levu ivicu prozora na takozvanom Toolbar-u:
168
Elektronske poslovne komunikacije –PRAKTIKUM
Posle izbora ove opcije, prikazane na prethodnoj slici, potrebno je u glavnom prozoru programa nacrtati željenu regiju upotrebom levog tastera miša, kao na sledećoj slici:
Po podrazumevanoj vrednosti DBDizajner je regiju imenovao kao Region_01 a to naravno možete promeniti tako što će te kliknuti desnim tasterom miša negde na regiji i zatim iz menija izabrati opciju Edit Object posle čega će se na ekranu pojaviti prozor kao na slici:
169
Elektronske poslovne komunikacije –PRAKTIKUM
Kao što možete videti na slici gore u polje Regionname možete upisati novo ime za regiju, upišite na primer Regija1 i biće promenjeno ime regiji. Ovde je takođe moguće promeniti i boju za određenu regiju a podrazumevana je crvena (Red), ukoliko to želite da promenite možete kliknuti na strelicu pored i izabrati neku drugu boju. Posle kreiranja regije slede ključni potezi kreiranja entiteta vaše baze podataka. Za početak ćemo kreirati prvu tabelu. Da bi smo to uradili potrebno je izabrati opciju New Table koja se nalazi odmah ispod opcije New Region koju smo već ranije koristili, pogledajmo sledeću sliku:
Posle izbora ove opcije potrebno je kliknuti levim tasterom miša negde na već kreiranu regiju posle čega će se pojaviti tabela. Program je automatski imenovao tabelu kao Table_01 ali se to može odmah promeniti tako što se klikne dva puta na tabelu ili tako
170
Elektronske poslovne komunikacije –PRAKTIKUM
što se klikne desnim tasterom na tabelu pa zatim iz padajućeg menija izabere Edit Object posle čega će se pojaviti odgovarajući prozor što je ilustrovano sledećim slikama:
Promenimo ime tabeli tako što u polje Table Name ukucamo željeno ime. U našem slučaju prva tabela će se zvati Proizvod te to unesemo u ovo polje. Ovaj dijalog se ne koristi samo za izmenu imena tabele već i svih njenih svojstava. Ovde se dodaju ili menjaju polja tabele, podešavaju svojstva određenih polja, postavljaju ili uklanjaju ključevi za izabranu tabelu. Ono što je ovde potrebo uraditi, pošto je ovo prazna tabela,
171
Elektronske poslovne komunikacije –PRAKTIKUM
jeste kreirati određena polja za novokreiranu tabelu. Nakon unosa imena tabele u polje Table Name i potvrde sa Enter automatski će se kreirati prvo polje tabele pod imenom idProizvod (polje dakle, dobija ime po nazivu tabele uz automatski prefiks id). Kliknimo levim tasterom miša na sledeći red u koloni Column Name i tu ukucajmo ime novog polja, unesite Naziv jer je to ime sledećeg polja tabele Proizvod. Primetimo da se automatski generišu podrazumevane vrednosti u ostalim kolonama za ovo polje. Kao što možem0 videti na sledećoj slici za atribut DataType automatski je postavljen INTEGER, ukoliko želimo ovo da promenimo kliknimo na strelicu pored posle čega će se izlistati moguće vrednosti odakle je potrebno izabrati željenu, pogledajmo sledeću sliku:
Iz padajuće liste moguće je izabrati tip polja koji nam je potreban, u ovom slučaju to je Varchar(45) jer se radi o prostom nazivu proizvoda. Primetimo i mali žuti ključ koji se nalazi u koloni Column Name ispred imena prvog polja (idProizvod). Ova oznaka je indikator primarnog ključa, a DBDesigner je automatski postavio ovaj atribut za prvo polje tabele. Kasnije se to svakako može ukloniti ukoliko želimo da promenimo primarni ključ. Takođe primetimo da u donjem delu stoje informacije o primarnom ključu (u sekciji Indices). Na prethodno opisan način kreirajmo i ostala polja sa odgovarajućim tipom polja kao na sledećoj slici:
172
Elektronske poslovne komunikacije –PRAKTIKUM
Na isti način kao što smo kreirali tabelu Proizvod kreirajmo i ostale tabele sa odgovarajućim poljima, što se može videti na sledećoj slici. Sada se u bazi podataka nalaze sve tabele koje su nam potrebne za izgradnju Web aplikacije za online prodaju odnosno kupovinu. Na slici se može videti da tabele nisu međusobno povezane, a kao što je poznato bazu podataka čini više međusobno povezanih tabela. Sada je potrebno povezati tabele nečim što je poznato kao relacija odnosno veza. Nije suvišno podsetiti se da postoji više tipova relacija i to 1:1, 1:m i m:n. Relacija tipa 1:1 znači da svakom zapisu u prvoj tabeli odgovara jedan i samo jedan zapis u drugoj tabeli. Relacija tipa 1:m znači da svakom zapisu u prvoj tabeli odgovara jedan ili više zapisa u drugoj tabeli. I na kraju relacija tipa m:n se koristi pri
173
Elektronske poslovne komunikacije –PRAKTIKUM
modelovanju slučajeva gde za više zapisa u prvoj tabeli može postojati i više zapisa u drugoj tabeli. Prva dva tipa relacija su relativno laka za implementiranje u model dok je za treći potrebno kreirati veznu tabelu koja sadrži primarne ključeve prve i druge tabele što donekle komplikuje model, a naš pojednostavljeni projekat Web aplikacije i ne zahteva takvu relaciju .
Model virtuelne korpe za online kupovinu (eShoppingCart) se uglavnom zasniva na relacijama 1:n kao uostalom i većina modela iz e-Commerce domena. Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New 1:n Non-Identifyng-Relation koja se nalazi na Toolbar-u.
174
Elektronske poslovne komunikacije –PRAKTIKUM
Da bi kreirali ovu relaciju izabraćemo opciju prikazanu na prethodnoj slici a zatim kliknuti na tabelu Proizvod pa onda na tabelu Stavke posle čega će se pojaviti relacija kao na sledećoj slici:
Ako pogledamo sliku možemo videti da je relacija uspostavljena, pored toga automatski je DBMS odnosno SUBP (Sistem za Upravljanje Bazom Podataka) postavio njeno ime na Rel_01 i formirao neophodan strani ključ u tabeli Stavke pod imenom Stavke_FKIndex1. Ukoliko želimo izmeniti svojstva relacije kliknimo desnim klikom miša na nju i iz padajućeg menija izaberimo Edit Object posle čega će se pojaviti dijalog koji dozvoljava određene izmene vezane za konkretnu relaciju. Na prethodno opisan način kreirajmo i ostale relacije nakon čega imamo kompletan ER model baze podataka sa pretplatom kao modelom plaćanja, gde se stanje računa kupca održava u samom informacionom sistemu e-prodavnice.
175
Elektronske poslovne komunikacije –PRAKTIKUM
Na osnovu ovako kreiranog logičkog modela sledi fizička realizacija baze podataka eprodavnice što se može postići korišćenjem različitih, danas dostupnih sistema za upravljanje bazama podataka (DBMS) kao što su Microsoft SQL Server, Oracle, MySQL itd. Radi ovladavanja različitim tehnologijama, tokom vežbi koje slede, baza podataka Web prodavnice će se fizički realizovati DBMS sistemima: MS SQL Server Express i MySQL.
176
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 5: Fizička realizacija baze podataka eProdavnice Fizičko kreiranje relacione baze podataka za podršku sistemu eProdavnice izvršićemo na tri načina odnosno kroz tri različite procedure, upotrebom različitih alata za kreiranje: §
Posrednim putem, korišćenjem jednog od nezavisnih alata za modelovanje (naprimer, DBDesigner4) procesom sinhronizacije modela sa inicijalnom (praznom) bazom.
§
Na nešto direktniji način, korišćenjem samog razvojnog okruženja Visual Studio odnosno Visual Web Developer Express.
§
Na još direktniji način, pomoću alata MS SQL Server Management Studio Express koji predstavlja prateću komponentu SQL Server baze podataka.
Kreiranje baze podataka pomoću nezavisnog alata za modelovanje Fizičko kreiranje baze podataka Prodavnica će se izvršiti korišćenjem alata za modelovanje, procesom sinhronizacije modela sa fizičkom realizacijom baze. U prvom primeru kreiranja baze koristićemo MySQL DBMS, što nas upućuje da prethodno kreiramo takozvano sistemsko ime baze (DSN - Data Source Name), kome će se u operativnom sistemu Windows pristupati preko posebnog drajvera (tzv. ODBC drajvera). Kreiranje sistemskog DSN: a.
Podsetimo se da je za pristup MySQL bazi, potrebno instalirati odgovarajući MyODBC drajver. U tu svrhu treba pokrenuti instalacioni program mysqlconektor-ODBC-5.1.5-win32.msi koji instalira navedeni drajver. Dovoljno je pratiti instrukcije pridruženog instalacionog čarobnjaka (Setup Wizard) i nakon nekoliko koraka drajver je instaliran. Ukoliko je na vašem računaru već instaliran MySQL ODBC drajver ovu tačku treba preskočiti ili eventualno instalirati noviju verziju MyODBC drajvera. Svi instalacioni softveri studentima su dostupni putem fakultetske računarske mreže na posebnom serverskom folderu.
177
Elektronske poslovne komunikacije –PRAKTIKUM
b. Iz kontrolnog panela (Control panel), pokrećemo opciju Administrative Tools odakle se izabere funkcija Data Sources (ODBC).
178
Elektronske poslovne komunikacije –PRAKTIKUM
c.
Nakon što se u ODBC Data Source administratorskom dijalogu postavimo na karticu System DSN sledi izbor instaliranog MySQL ODBC drajvera preko dugmeta Add, u našem slučaju to je MySQL ODBC 5.1 Driver:
d. Sledi zadavanje parametara pristupa bazi (konkretni DSN naziv, ime servera i pristupni parametri sistema za upravljanje bazom podataka - user name i password):
179
Elektronske poslovne komunikacije –PRAKTIKUM
Tasterom Test proveravamo funkcionalnost MyODBC konektora:
Sada se, korišćenjem komandnog interpretera MySQL ili nekog administratorskog programa (npr. SQLYog Community Edition) treba fizički kreirati inicijalna (prazna) baza podataka. SQLYog Community Edition je vrlo efikasan grafički interfejs pomoću koga upravljamo našom MySQL bazom.
180
Elektronske poslovne komunikacije –PRAKTIKUM
181
Elektronske poslovne komunikacije –PRAKTIKUM
Nakon uspešne konekcije SQLYog Community Edition grafički interfejs ima sledeći izgled:
182
Elektronske poslovne komunikacije –PRAKTIKUM
Iz glavnog menija Database biramo Create Database, unesemo naziv inicijalne baze, parametre vezane za kodni raspored (podrška našem pismu) i tasterom Create generišemo praznu bazu (slika dole).
Pošto smo krenuli od procesa modelovanja podataka konkretne Web prodavnice logično je da tim procesom nastavimo i izvršimo fizičko kreiranje same baze podataka. Dakle, korišćenjem alata za modelovanje (u našem primeru to je DBDesigner), procesom sinhronizacije modela sa fizičkom realizacijom doći ćemo do konkretne baze. Vraćamo se u DBDesigner i iz menija Database/Connect to Database kreiramo internu veza sa bazom podataka tipa ODBC kako je to prikazano na sledećoj slici.
183
Elektronske poslovne komunikacije –PRAKTIKUM
U istom dijalog prozoru nakon kreiranja konekcije treba sa aktivirati Database Connection Editor gde zadajemo ime inicijalne (prazne) baze, na način prikazan sledećom slikom.
184
Elektronske poslovne komunikacije –PRAKTIKUM
Zatim će se odabrati funkcija sinhronizacije izborom opcije Database/Database Sinchronization iz glavnog menija. Konačno tasterom Execute pokrećemo proces sinhronizacije koji inicijalnu bazu usklađuje sa modelom.
185
Elektronske poslovne komunikacije –PRAKTIKUM
Nakon kreiranja baze, u okviru dijaloga ostaje izveštaj o izvršenim akcijama nad tabelama/poljima baze podataka. Baza konačno ima realnu formu, upravo onakvu kakvu smo modelirali DBDizajnerom. Što znači da tabele imaju polja identična poljima zadatim u modelu sa svim uspostavljenim relacijama. Vratimo li se ponovo u SQLYog Community Edition, prethodno inicijalno kreirana baza više nije "prazna", poseduje polja i ima uspostavljene predviđene relacije:
186
Elektronske poslovne komunikacije –PRAKTIKUM
187
Elektronske poslovne komunikacije –PRAKTIKUM
Kreiranje SQL Server baze podataka korišćenjem MS SQL Server Management Studio Express alata
Bazu podataka kreiramo direktno pomoću posebnog alata Management Studio Express koji predstavlja prateću aplikaciju SQL Server Express DBMS, naravno po uzoru na model iz DBDesigner-a. Ovde možemo izdvojiti tri karakteristične procedure: § § §
Kreiranje tabela, Kreiranje dijagrama (povezivanje tabela), Kreiranje pogleda (views).
Nas naravno, tokom ove vežbe, prvenstveno zanima kreiranje tabela i uspostavljanje relacija. Kreirajmo tabelu Proizvod, jer je ona primarna za sve dalje operacije, a posle toga će biti kreirane i sve ostale tabele. Kreiranje radimo iz SQL Server Management Studia, jer je to jedan od najjednostavnijih načina, a sam Management Studio je suštinski alat za podršku MS SQL Server Express sistemu za upravljanje bazama podataka. Istovremeno unesimo i određene podatke za nekoliko proizvoda (naziv, kraći opis proizvoda, jedinicu mere, cenu po jedinici mere i sliku koja ilustruje proizvod). Imena polja (kolona) svih potrebnih tabela baze su definisana prilikom procesa modelovanja u DBDesigner-u što ne znači da se ne mogu menjati. Ono što je bitno istaći je činjenica da treba poštovati konvencije koje se koriste kod SQL Servera. To znači da ime polja (kolone) ne sme da ima više od 128 karaktera. Može se sastojati od slova, cifara ili simbola #, @, $ i _. Takođe, treba paziti da prilikom zadavanja imena polja ne koristimo rezervisane reči. Dobar primer je reč "group", koja je ključna reč SQL-a. Tipovi podataka mogu da sadrže i vrednost NULL. Iako NULL u različitim programskim okruženjima može da znači "ništa" ili "nula" ili "nema vrednosti", SQL Server interpretira NULL vrednost kao "nepoznato" ili "nedostaje". I praznine (spaces) i nule su dozvoljene vrednosti u slogovima baze, tako da treba biti veoma pažljiv kada njih prosleđujemo kao parametre. Pokrenimo MS SQL Server Management Studio. Procedura pokretanja podrazumeva da se konektujemo na odgovarajući server, u našem primeru to je SQL Sever 2005:
188
Elektronske poslovne komunikacije –PRAKTIKUM
Interfejs MS SQL Server Management Studia je uobičajan za DBMS sisteme:
Nakon desnog klika na Databases u Object Exploreru biramo opciju New Database ...
189
Elektronske poslovne komunikacije –PRAKTIKUM
Sledi unos naziva novokreirane baze (u našem slučaju je to baza Prodavnica.
190
Elektronske poslovne komunikacije –PRAKTIKUM
U Object Exploreru uočavamo novu bazu podataka prodavnica. Kliknemo li desnim tasterom na opciju Tables i izborom New Table... u mogućnosti smo kreirati novu tabelu.
Nova tabela automatski dobija ime Table_1 što se naravno može izmeniti i mi definišemo naziv nove tabele kao tabela Proizvodi. Sledi unos pojedinih polja sa izborom odgovarajućeg tipa polja sve u skladu sa modelom prikazanim u Vežbi 4.
191
Elektronske poslovne komunikacije –PRAKTIKUM
Ovaj proces ponavljamo za sve preostale tabele predviđene modelom baze podataka Prodavnica. Unos podataka u tabele vršimo tako što nakon desnog klika na konkretnu tabelu u Object Exploreru biramo opciju Open Table.
192
Elektronske poslovne komunikacije –PRAKTIKUM
Ukoliko nakon desnog klika na selektovanu tabelu izaberemo opciju Design dobićemo prikaz svih polja odabrane tabele sa tipom podataka za svako polje. Primetimo pored polja idProizvod oznaku ključa što znači da se radi o primarnom ključu tabele. Navedeno polje ima osobinu AI (auto-inkrement) što znači da se pri unosu novih podataka – novih slogova automatski generiše inkrementalno uvećana vrednost tog polja. Primetimo da je u prethodnom primeru proces kreiranja pojedinih tabela tekao potpuno "ručno", prilično mukotrpno uz opasnost generisanja greški, što je posebno izraženo kod baze podatak sa velikim brojem tabela. Želimo li izbeći navedene neugodnosti upotrebićemo jednu vrlo moćnu funkcionalnost MS SQL Server Management Studia koja se zove Query Designer. Ovaj dizajner nam omogućuje dizajniranje konkretne baze na osnovu SQL skripta (niza SQL komandi). Dovoljno je u SQL Editor iskopirati niz komandi za kreiranje tabela baze, pokrenuti Execute i proces automatskog kreiranja je gotov.
193
Elektronske poslovne komunikacije –PRAKTIKUM
194
Elektronske poslovne komunikacije –PRAKTIKUM
SQL naredbe možemo ručno pisati, ali i to nema smisla imamo li na umu da smo model kompletne baze kreirali pomoću DBDizajnera koji automatski , kao izlazni rezultat, generiše SQL skript koji će nam poslužiti za fizičko kreiranje baze. Nakon uspešno dizajniranog modela baze podataka za podršku sistemu eProdavnice ( eShoppingCart) u DB Dizajneru pokrenimo iz glavnog menija File opciju Export koja nam omogućuje SQL Create Script.
195
Elektronske poslovne komunikacije –PRAKTIKUM
Iz dijaloga koji sledi izaberimo Save Script file i na određeno mesto na našem disku snimimo .sql fajl koji u stvari predstavlja skup SQL naredbi za automatsko generisanje tabela buduće baze.
196
Elektronske poslovne komunikacije –PRAKTIKUM
Napomena: treba proveriti i uskladiti SQL sintaksu pojedinih naredbi jer DBDizajner optimizuje SQL kôd za MySQL DBMS. Kreiranje SQL Server baze podataka korišćenjem Visual Studio server explorera Ovaj metod podrazumeva da je prethodno instaliran jedan od DBMS sistema za upravljanje bazama podataka iz porodice Microsoft SQL Server. To su naravno SQL Serveri, a za nas je zanimljiv SQL Server Express, koji se automatski instalira na vaš računar tokom instalacije razvojnog okruženja Visual Studio Express Edition (vidi Vežbu 1).
197
Elektronske poslovne komunikacije –PRAKTIKUM
Postupak kreiranja baze podataka po ugledu na model iz Vežbe 4: 1. Izabrati View/Server Explorer za prikaz prozora Server Explorer 2. Kreirati novu SQL Server bazu - desni klik na Data Connections i izbor Create New SQL Server Database (ako baza već postoji, definisati novu konekciju izborom Add Connection)
3. Uneti neophodne elemente za novu bazu (server, način i parametre pristupa, naziv fizičke baze podataka).
198
Elektronske poslovne komunikacije –PRAKTIKUM
4. Kreirati tabele i relacije (korišćenjem ugrađenog vizuelnog dizajnerskog alata, dodavanjem jedne po jedne tabele i definisanjem pojedinačnih relacija ili kopiranjem SQL Create skripta iz drugih vizuelnih dizajnerskih alata, npr. DBDesigner4, funkcija File / Export / SQL Create Script ...:
U prozoru Server Explorer se može direktno pristupiti svojstvima tabela i MySQL baze podataka (desni klik na tabelu i izbor Alter Table iz kontekstnog menija ili samo dvostruki klik na tabelu):
199
Elektronske poslovne komunikacije –PRAKTIKUM
200
Elektronske poslovne komunikacije –PRAKTIKUM
Takođe se direktno mogu unositi ili menjati sami podaci u tabelama baze (desni klik na odgovarajuću tabelu u prozoru Server Explorer i izbor Browse or Edit Data ili samo dvostruki klik na tabelu):
201
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 6: Realizacija dinamičke Web stranice za prikaz podataka iz izabrane SQL Server (MySQL) tabele Kada imamo na raspolaganju određenu bazu podataka logično se nameće potreba pregleda i ažuriranja tih podataka. Visual Studio odnosno Visual Web Developer su razvojna okruženja koja omogućuju vrlo brzo programiranje jedne takve funkcionalnosti vizuelnim postupkom dakle, prostim potezima miša. Web stranicu za prikazivanje pojedinih sadržaja iz izabrane tabele, prethodno pripremljene baze podataka, kreiraćemo koristeći kontrolu GridView. Kontrola GridView je vizuelna kontrola, koja se u razvojnom okruženju Visual Web Developer (Visual Studio) vrlo efektivno koristi bez posebnog programiranja. Ova kontrola prikazuje izabrane podatke iz baze u tabelarnoj formi, omogućujući pri tom i izmene podataka sa još nekoliko korisnih funkcionalnosti kao što je automatsko sortiranje po izabranoj koloni, Web straničenje (Paging) itd. Izmene podataka u tabelama baze (što podrazumeva i brisanje slogova) se takođe mogu realizovati vizuelno, bez posebnog programiranja odnosno intervencije u kôdu. Redosled poteza je sledeći: § §
§
Dodati kontrolu GridView na stranicu koju dizajniramo, Pomoću GridView liste funkcija izabrati Data Source ▫ Obratiti pažnju na dijalog "Configure the Select Statement" gde treba aktivirati taster Advanced; ▫ Uključiti opciju "Generate INSERT, UPDATE, and DELETE statements"; Pomoću GridView Tasks konfigurisati kontrolu GridView ▫ Uključiti opcije "Enable Editing", ako je potrebno i "Enable Deleting";
Konkretan postupak izrade stranice za prikaz podataka podrazumeva sledeće: 1.
202
U prethodno generisanoj praznoj stranici (imenovanoj kao Proizvodi.aspx) preći u Design mod ukoliko smo u Source modu (Source pogled je podrazumevani). Zatim se iz palete alatki (Toolbox) sa leve strane razvojnog okruženja bira kontrola GridView (nalazi se u skupu Data kontrola) tako što se mišem prevuče i pusti (drag and drop) na površinu prethodno pripremljene prazne Web stranice.
Elektronske poslovne komunikacije –PRAKTIKUM
2. U dijalogu GridView Tasks koji se aktivira klikom na malu strelicu u gornjem desnom uglu GridView kontrole, biramo stavku menija Choose data Source, odakle se startuje procedura nakon čega se dobije dijalog:
203
Elektronske poslovne komunikacije –PRAKTIKUM
3. Izabere se Database, potvrdi se sa OK i na sledećem koraku izabere veza sa bazom koja je kreirana u Vežbi 5.
Potvrdi se sa Next i zapamti kao prodavnicaConnectionString:
204
Elektronske poslovne komunikacije –PRAKTIKUM
4. Sledeći korak nas vodi u dijalog za detaljniju specifikaciju podataka koje želimo prikazati na Web stranici koju dizajniramo. Tu specifikaciju radimo pomoću prikladnog SQL editora sa grafičkim interfejsom. U najprostijoj varijanti, za prikaz svih kolona izabrane tabele, samo se selektuje (štiklira) kvadratić za sva polja [*].
5. Prelaskom u naredni korak (sa Next) pojavljuje se ekran sa sledeće slike, na kome se dobijeni SQL izraz može testirati (u slučaju MySQL baze odnosno tabele potrebno je SQL izraz uskladiti sa MySQL sintaksom, jer izraz sa uglastim zagradama koje definišu tabelu [Proizvod] ne odgovara MySQL sintaksi).
205
Elektronske poslovne komunikacije –PRAKTIKUM
Testiranje se aktivira tasterom Test Query nakon čega se dobije prikaz podataka kao na sledećoj slici:
Procedura dizajna Web stranice za prikaz podataka iz izabrane tabele završava se sa Finish čime se dobija definicija SqlDataSource1 kao na slici.
206
Elektronske poslovne komunikacije –PRAKTIKUM
Ukoliko kao bazu podataka koristimo MySQL, potrebna je minimalna intervencija u ASP.NET kôdu. Iz Design moda, u kome smo dizajnirali predmetnu Web stranicu, prelazimo u Source mod gde korigujemo sintaksu dobijenog SQL izraza brisanjem uglastih zagrada u nazivu tabele [Proizvod].
207
Elektronske poslovne komunikacije –PRAKTIKUM
6. Na kraju treba sačuvati promene sa File/Save All, a zatim testirati finalni izgled Web stranice za prikaz podataka u Web browseru. To najlakše realizujemo ako nakon klika desnim tasterom miša, na samoj stranici koju testiramo, biramo opciju View in Browser.
208
Elektronske poslovne komunikacije –PRAKTIKUM
Naravno da nakon uspešnog testiranja, možemo izborom jedne od grafičkih šema iz Auto Format... (npr. Brown Sugar) dobiti drugačiji prikaz i omogućiti straničenje (Enable Paging) kao na sledećoj slici.
209
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 7: Kreiranje Web stranice za ažuriranje i brisanje podataka u odabranoj SQL Server tabeli Microsoft Visual Studio i .NET Framework na vrlo efikasan način obezbeđuju vizuelno kreiranje Web stranica sa automatskim generisanjem kôda za izmene podataka odabrane tabele iz prethodno pripremljene MS SQL Server baze podataka. U tu svrhu na raspolaganju su nam kontrole GridView, FormView i DetailsView. Najpregledniji način za prikaz i ažuriranje podataka je svakako tabelarna Web forma koju obezbeđuje kontrola GridView. Nakon pripreme prazne Web stranice postupak sa kontrolom GridView je istovetan postupku opisanom u prethodnoj vežbi. I ovog puta u dijalogu GridView Tasks, biramo stavku Choose data Source, kojom iniciramo proceduru - čarobnjak nakon čega se dobije, takođe poznati, dijalog boks u kome duplim klikom aktiviramo opciju Database.
Sledi korak izbora veze sa konkretnom bazom (prethodna slika). Nakon klika na dugme Next sledi dijalog koji nas obaveštava da će Connection String biti sačuvan u posebnom konfiguracionom fajlu Web aplikacije koju postepeno gradimo.
210
Elektronske poslovne komunikacije –PRAKTIKUM
Ponovo sledi Next nakon čega smo u mogućnosti birati konkretnu tabelu te polja tabele koja će biti elementi SQL upita. Tako generisan SQL upit biće predmet kasnije detaljnije analize.
211
Elektronske poslovne komunikacije –PRAKTIKUM
Primetite da smo i ovog puta izabrali tabelu Proizvodi te da smo čekirali polje označeno znakom * što znači da će sadržaji svih polja tabele biti prikazani u budućoj tabelarnoj formi. Aktiviranjem tastera Advanced u mogućnosti smo birati Advanced SQL Generation Options odnosno, čekiranjem prikazanog polja uključili smo opciju automatskog generisanja odgovarajućeg SQL kôda:
Uvek je poželjno izvršiti i testiranje generisanog SQL kôda (tasterom Test Query):
212
Elektronske poslovne komunikacije –PRAKTIKUM
Povratkom u Design mod, možemo dograditi vizuelni stil stranice (biramo Auto Format iz GridView Tasks):
Izabraćemo opciju Lilacs in Mist koja se čini prikladnom zbog svoje jednostavnosti.
213
Elektronske poslovne komunikacije –PRAKTIKUM
Sledi ključan momenat uključivanja dodatnih opcija kontrole GridView, od kojih je opcija Enable Editing vrlo bitna jer omogućuje izmene u sadržaju tabele kao i Enable Deleting koja donosi mogućnost brisanja tekućeg reda (sloga) izabrane tabele:
Kontrola je sad osposobljena za ažuriranje podataka.
214
Elektronske poslovne komunikacije –PRAKTIKUM
Za ažuriranje sadržaja odmah možemo koristiti hiperveze Edit i Delete. Međutim, estetski i funkcionalno mnogo povoljnije je da komandni elementi korisničkog interfejsa budu tasteri (dugmad), pa će se hiperveze zameniti komandnim tasterima na sledeći način: Iz GridView Tasks dijaloga izaberimo opciju Edit Columns... :
Klikom na CommandField (na levoj strani dijalog boksa) u CommandField properties (desna strana) promenimo svojstvo ButtonType iz Link u Button.
215
Elektronske poslovne komunikacije –PRAKTIKUM
Nakon potvrde sa OK novi oblik komandnog interfejsa u Design prozoru ima sledeći izgled.
Pojedine funkcionalnosti ovako kreirane Web stranice, za prikaz, ažuriranje i brisanje sadržaja, možemo testirati nakon njenog prikazivanja u Web browseru. Tasterima F5 (uključen Debugging) ili Ctrl-F5 (bez Debugginga) aktiviramo izgradnju i pozivanje predmetne Web stranice, automatski se pokreće podrazumevani Web browser (u našem slučaju Internet Explorer) i konačno prikazuje stranica.
216
Elektronske poslovne komunikacije –PRAKTIKUM
Izborom taster Edit aktiviramo dijalog za izmenu podataka. Želimo li naprimer izmeniti cenu proizvoda jednostavno u polje za prikaz cene unesemo novu vrednost i
217
Elektronske poslovne komunikacije –PRAKTIKUM
nakon potvrde tasterom Update cena će biti izmenjena u samoj bazi podataka što će se naravno, istog momenta manifestovati i na Web stranici koju prikazujemo u browseru.
Novo uneta (izmenjena) vrednost se prikazuje na ekranu.
218
Elektronske poslovne komunikacije –PRAKTIKUM
Na kraju ove vežbe potrebno je izvršiti kvalitativnu analizu generisanih sadržaja i dati odgovor na pitanje: Kakav kôd je generisan korišćenjem ovih vizuelnih alata? Prelaskom u Source mod treba proveriti izvorni ASP.NET kôd stranice Proizvodi.aspx. Posebno obratite pažnju na asp tagove i .
219
Elektronske poslovne komunikacije –PRAKTIKUM
Generisani SQL kôd upita za prikaz (SELECT) i ažuriranje podataka (INSERT, DELETE, UPDATE) ima osnovni oblik:
DELETE FROM [Proizvod] WHERE [idProizvod] = @idProizvod INSERT INTO [Proizvod] ([Naziv], [Opis], [JM], [CenaJM]) VALUES (@Naziv, @Opis, @JM, @CenaJM) SELECT * FROM [Proizvod] UPDATE [Proizvod] SET [Naziv] = @Naziv, [Opis] = @Opis, [JM] = @JM, [CenaJM] = @CenaJM WHERE [idProizvod] = @idProizvod Obratimo pažnju na prefiks @ koji označava nazive parametara koje Web server preuzima iz forme, zamenjuje u tekstu upita i šalje serveru baze podataka (u našem slučaju MS SQL Server Express) kao regularan SQL kôd.
220
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 8: Kreiranje osnovnog menija za navigaciju
Osnovni meni se može realizovati posebnom kontrolom, koja se izabere iz palete alatki i prevuče na radnu površinu Web stranice. Sa Navigation sekcije Toolbox-a biramo kontrolu Menu.
ID kreiranog menija je Menu1 što naravno po potrebi možemo promeniti. Podrazumevana vrednost svojstva Orientation je Vertikal, ali ćemo je promeniti u Horizontal da bi meni bio raspoređen po horizontali Web sajta slično kao kod tipičnih desktop aplikacija.
221
Elektronske poslovne komunikacije –PRAKTIKUM
U prozoru Menu Tasks... odabraćemo opciju Edit Menu Items... , pri čemu se otvara Menu Item Editor koji se koristi za kreiranje stavki i podstavki menija.
Kliknimo na dugme Add Root Item (zeleni krstić) da bismo dodali prvu stavku osnovne linije menija. Text svojstvo prve stavke menija postavićemo na vrednost "Osnovna" asocirajući time na osnovnu (Default.aspx) Web stranicu. Dok je novo kreirana stavka menija selektovana kliknimo na dugme Add a child Item. Dodaćemo podstavku ove stavke menija pod nazivom "O eProdavnici". NavigateUrl svojstvo ove podstavke (hiper veza) postavićemo na stranu eProdavnica.aspx.
222
Elektronske poslovne komunikacije –PRAKTIKUM
Na sličan način dodaćemo podstavku "O gradu domaćinu" sa vrednošću NavigateUrl Grad_domacin.aspx. Zatim ćemo kreirati drugu stavku menija pod nazivom "Katalog". Ova stavka menija nema podstavke. Kada kreiramo bilo stavke bilo
223
Elektronske poslovne komunikacije –PRAKTIKUM
podstavke menija, koje referenciraju strane unutar istog Web sajta, svojstvo NavigateUrl se najednostavnije može definisati klikom na "dugme sa tri tačke"
a zatim selektovanjem željene Web strane. Stavka "Katalog" referenciraće Web stranu Katalog.aspx. Treća stavka menija imaće naziv "Korpa" i takođe neće imati podstavke. Četvrta stavka glavnog menija je "Administracija" i ona ima podstavke: "Proizvodi", "Računi" i "Kupci". Sve ove stavke menija referenciraju odgovarajuće .apsx strane Web aplikacije. Na ovaj način je ostvarena osnovna funkcionalnost kontrole Menu a to je navigacija.
Primer unosa stavki u jednom nivou:
224
Elektronske poslovne komunikacije –PRAKTIKUM
Meni može biti vertikalan ili horizontalan, zavisno od svojstva Orientation:
225
Elektronske poslovne komunikacije –PRAKTIKUM
Funkcijom Auto Format možemo izabrati nekoliko vizuelnih stilova.
Međutim, daleko efektivniji izgled menija se postižu primenom stilova. Podesićemo najpre statički meni, tj. Meni koji je uvek vidljiv na Web strani. U property prozoru Menu kontrole kliknite na znak + pored StaticMenuStyle i postavite sledeće atribute: Svojstvo BackColor
226
vrednost #FFFFC0
BorderColor
Gray
BorderWith
3px
BorderStyle
Solid
Elektronske poslovne komunikacije –PRAKTIKUM
Na isti način postavite i ostale stilove navigacionog menija. StaticMenuItemStyle: Svojstvo BorderColor BorderStyle BorderWith
vrednost #004000 Solid 1px
StaticSelectedItemStyle: Svojstvo BorderColor
vrednost Lime
StaticHoverStyle: Svojstvo BorderColor
vrednost #C0C0FF
DynamicmenuItemStyle : Svojstvo BorderColor BackColor BorderStyle BorderWith
vrednost DarkOrange #8080FF Solid 2px
227
Elektronske poslovne komunikacije –PRAKTIKUM
DinamicHoverStyle: Svojstvo BorderColor BackColor BorderStyle BorderWith
vrednost Fuchsia #80FFFF Solid i 2px
Na ovaj način je kreiran meni za Web aplikaciju bez pisanja kôda. Eksperimentisali smo sa bojama da bi se razlikovali stilovi menija. Naravno ovo su samo školski primeri tako da sada boje možete prilagoditi svojim potrebama i ukusu. Provera izgleda i funkcionalnosti u Web čitaču (Ctl-F5) daje sledeći rezultat:
Kontrola TreeView je slična Menu kontroli ali su podaci organizovani u vidu stabla. Kreira se prevlačenjem kontrole TreeView sa Navigation sekcije Toolboxa. Iz prozora TreeView Tasks... odaberimo opciju EditNodes. Kliknimo na dugme Add a root Node. Svaki čvor može da sadrži podčvorove koji se kreiraju opcijom Add a child
228
Elektronske poslovne komunikacije –PRAKTIKUM
Node. Svakom čvoru se može dodeliti NavigationUrl svojstvo u cilju obezbeđivanja navigacije. Ukoliko želimo da čvorove povežemo linijama, ShowLines svojstvo TreeView kontrole postavićemo na vrednost true. Ukoliko želimo naš meni u formi stabla obogatiti grafičkim elementima (ikonicama) u sekciji ParentNodeStyle posredstvom svojstva ImageUrl postavićemo sliku koja će predstavljati sve čvorove u stablu koji sadrže podčvorove. Neka je to slika folder.gif. U sekciji LeafNodeStyle primenom svojstva ImageUrl označićemo sve čvorove koji nemaju podčvorove (tj. čvorove lista). Neka je čvorovima liste dodeljena slika ikona.jpg. U sekciji HoverNodeStyle postavićemo BackColor na vrednost #FFC0FF. Time će tekst svakog čvor biti obojen definisanom bojom kada se iznad njega nađe pokazivač miša.
Prethodno opisan postupak je ilustrovan sledećim slikama:
229
Elektronske poslovne komunikacije –PRAKTIKUM
230
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 9: Realizacija Web forme za unos novog i ažuriranje tekućeg sloga (reda) – Details View Web stranica za izmene na jednom slogu (redu) tabele jednostavno se dizajnira upotrebom kontrola DetailsView (ili FormView) na način apsolviran izradom primera upotrebe kontrile GridView u prethodnim vežbama: 1. Iz Toolbox/Data menija izabere se kontrola DetailsView i prevuče na radnu površinu stranice:
2. Iz ponuđene opcije Choose Data Source biramo New data source, a potom:
231
Elektronske poslovne komunikacije –PRAKTIKUM
Izabere se postojeća konekcija ili definiše nova:
Nakon Next koraka biramo tabelu kao i potrebna polja za prikaz i/ili izmene podataka:
232
Elektronske poslovne komunikacije –PRAKTIKUM
Izabere se taster Advanced i uključi (čekira) opcija automatskog generisanja koda za osnovne operacije nad tabelom - INSERT, UPDATE, DELETE (unos novih, izmene i brisanje slogova/redova).
Nakon potvrde sa OK i prelaska u sledeći korak (sa NEXT) sledi provera funkcionalnosti SQL SELECT upita pomoću tastera Test Query:
233
Elektronske poslovne komunikacije –PRAKTIKUM
Ako je izabrana konekcija ispravna prikazuju se postojeći podaci iz baze (izabrane tabele):
Vizuelni izgled i ove kontrole se može menjati funkcijom Auto Format...:
234
Elektronske poslovne komunikacije –PRAKTIKUM
U izboru vizuelnog stila ostaćemo dosledni pa ponovo selektujemo Lilacs in Mist jer su „jorgovani u izmaglici“ istinska prirodna lepota:
Konačni izgled stranice u Design prozoru je sledeći:
235
Elektronske poslovne komunikacije –PRAKTIKUM
Sledi funkcionalno testiranje dinamičke Web stranice (nakon klika desnim tasterom miša, na samoj stranici koju testiramo, biramo opciju View in Browser):
Izborom funkcije Edit možemo vršiti izmene nad prezentovanim podacima:
236
Elektronske poslovne komunikacije –PRAKTIKUM
Potvrda izmena se vrši funkcijom Update, nakon čega se izmenjeni podaci prikazuju u istoj formi (promenjena je cena, naravno naviše):
Unos novih podataka je omogućen izborom funkcije New (bitno je primetiti da se autoinkrement polje primarnog ključa idProizvod ne pojavljuje u formi za unos što je sasvim očekivano jer se vrednost primarnog ključa automatski generiše):
Nakon unosa novog sloga (novog reda) podataka, na raspolaganju su tasteri Insert za potvrdu unosa ili Cancel za odustajanje.
237
Elektronske poslovne komunikacije –PRAKTIKUM
Potvrđene izmene (funkcija Edit) nad odabranim slogom podataka kao i potvrđeni unos novog sloga (funkcija New) možemo videti pozivanjem stranice za prikaz podataka o proizvodima realizovane GridView kontrolom :
238
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 10: Kreiranje novog projekta – novi Web sajt Nakon pokretanja razvojne platforme Visual Web Developer 2005 Express (Visual Studio 2005), za kreiranje novog projekta, u našem slučaju novog Web sajta, iz osnovnog menija se bira funkcija File/New Web Site. Dijalog (slika dole) nam omogućava biranje nekoliko predefinisanih Visual Studio šablona. Sasvim je jasno da biramo ASP.NET Web Site. Još dve odrednice biramo u ovoj početnoj fazi: Lokaciju (Location), u našem slučaju izabran je File System što znači da će svi elementi (fajlovi) našeg budućeg Web sajta biti sačuvani na lokalnom disku. Zatim nam je na raspolaganju izbor programskog jezik kojim će biti kodirana programska logika na strani servera. Na osnovu ranije diskutovanih osobina, C# se nameće kao logičan izbor.
239
Elektronske poslovne komunikacije –PRAKTIKUM
Ali zašto smo kao lokaciju (Location) izabrali fajl sistem (File System)? Pored ovog izbora sistem nudi još dve mogućnosti: HTTP i FTP. Kako je ASP.NET prvenstveno serverska tehnologija, odnosno kôd aplikacija se izvršava na serveru, a rezultati se u HTML formi vraćaju klijentskom čitaču (Web browseru), to implicira obavezno postojanje servera na kome se skladište gradivni elementi naše aplikacije. Visual Studio odnosno Visual Web Developer poseduje virtuelni Web server koji se pokreće svaki put kad pokrenemo pregled naših stranica tokom dizajniranja. Web čitač (npr. Internet Explorer) u interakciji sa virtuelnim serverom prikazuje te stranice ali samo u slučaju da smo izabrali File System kao lokaciju. U slučaju kada za lokaciju odaberemo HTTP, VWD 2005 Express zaključuje da mi na našem lokalnom računaru, na kome razvijamo aplikaciju, imamo instaliran istinski (ne virtuelni) Internet Information Server (IIS) i aplikaciju će smestiti u folder IIS-a (uobičajno je to: C:\inetpub\wwwroot). Treći slučaj (FTP) je namenjen za situaciju kada imamo stvarni Web hosting na nekom udaljenom Web serveru te tada FTP protokolom, putem Interneta direktno skladištimo našu aplikaciju na taj server (naravno, potrebno je da Web server podržava ASP.NET tehnologiju, što uglavnom svi Windows bazirani serveri čine). Nakon konačnog potvrđivanja vrste Web sajta, lokacije i programskog jezika, VWD kreira sve potrebne foldere i fajlove neophodne za pokretanje Web aplikacije, kao i početnu stranu koja se naziva "Default.aspx". Bitno je napomenuti da VWD interfejs nudi dva takozvana pogleda (Views), a to su Source View i Design View. Prvi pogled nam prikazuje kôd stranice dok u drugom, Design pogledu možemo vizuelno da slažemo tekst i kontrole i to onako kako bi trebale da izgledaju u Web čitaču (browseru). Novi Web sajt automatski dobija naziv WebSite1, WebSite2 ..., zavisno koji projekat po redu realizujemo (naravno da je moguće izabrati bilo koje drugo ime, recimo eProdavnica). Na samom početku izrade Web sajta on će se sastojati od samo jedne dinamičke Web stranice Default.aspx. Osnovna stranica (Home Page) u principu služi kao glavni meni Web aplikacije i po Mikrosoftovoj konvenciji za ASP.NET aplikacije, zove se Default.aspx. Ovo je važno znati jer će Web server isporučiti upravo tu stranicu kada neki korisnik u svom browseru navede samo ime Web sajta, ne navodeći konkretno ime odnosno putanju do konkretne Web stranice. Sufiks .aspx znači da je u pitanju ASP.NET stranica (vidi Tabelu 2.), dakle ne obična HTML stranica, već dinamička stranica sa ugrađenim serverskim programskim kôdom, u ovom slučaju to je kod pisan u C# jeziku.
240
Elektronske poslovne komunikacije –PRAKTIKUM
Na radnoj površini se vidi HTML kôd ove dinamičke Web stranice (prikaz Source):
Pogled Source na radnoj površini je samo jedan od načina prikaza dinamičke Web stranice u razvojnom okruženju Visual Web Developer 2005 (Visual Studio 2005). Drugi prikaz se dobija izborom pogleda Design na radnoj površini, koji daje izgled same forme stranice bez podataka. U ovom slučaju, Web stranica je prazna.
241
Elektronske poslovne komunikacije –PRAKTIKUM
Treći prikaz je pogled na stranicu nakon interpretacije od strane Web servera (u ovom slučaju, internog Web servera – posebne funkcionalnosti Visual Studija, koji služi za testiranje aplikacije koju izgrađujemo i koji odgovara samo na lokalne pozive). Aktivira se izborom iz menija Debug/Start Debugging (ili tasterom F5), a prikaz se dobije uobičajno u prozoru Web čitača, u našem slučaju Internet Explorera.
Konačni Web sajt će se instalirati na server izborom Build/Publish Web Site. Visual Studio 2005 se zasniva na tehnologiji ASP.NET 2.0, koja podržava dvosmernu vezu sa bazom (read/write) i najčešće generiše potreban programski kôd za standardne operacije. Kontrola za pristup podacima su: Tabelarne SqlDataSource AccessDataSource ObjectDataSource
Hijerarhijske XmlDataSource SiteMapDataSource
Kontrole za prikaz, unos i izmene podataka su: Tabelarne GridView DetailsView FormView
242
Hijerarhijske TreeView Menu
Elektronske poslovne komunikacije –PRAKTIKUM
Master strane Web sajta Praznu Web stranu (naprimer, Default.aspx) treba ipak funkcionalno kompletirati dodavanjem menija i unosom odgovarajućeg teksta i grafike po nekom prostornom rasporedu (layout) naprimer, po tipičnoj šemi prikazanoj na sledećoj slici.
Header
Menu Tekst, tabele, slike, drugi objekti i kontrole Web stranice
Footer
Međutim, pre no što krenemo u predloženi dizajn potrebno ja da se upoznamo sa novom funkcionalnošću koju donosi Visual Studio 2005. U pitanju su Master Strane (Master Pages). Master Pages je svojstvo koje omogućava da na svom Web projektu definišemo strukturu i elemente interfejsa naše aplikacije. To uključuje elemente poput zaglavlja, podnožja, trake za navigaciju itd. Na jednom mestu sada možemo kontrolisati izgled i ponašanje celog projekta. To omogućava svima da imaju lep, unificiran izgled stranica, takođe, izbegava se nepotrebno dupliranje kôda za one delove stranice koji su zajednički celom projektu. Na primer, ako naša aplikacija treba da ima isti baner u zaglavlju i/ili isti meni za navigaciju na svim ili većini stranica, to sve treba samo jednom definisati kod master strane. Nakon povezivanja svih ostalih strana sa master stranom, one će tad imati određene zajedničke osobine koje diktira master strana.
243
Elektronske poslovne komunikacije –PRAKTIKUM
Master strana se definiše isto kao i sve ostale "normalne" strane. Sadrži oznake, kontrole, kôd ili bilo koju kombinaciju ovih elemenata, ali glavna razlika je takozvani Nosač Sadržaja (ContentPlaceHolder). To je specijalna kontrola tipična za ASP.NET koja definiše region na master strani koji može biti zamenjen sadržajem stranice povezane sa glavnom (master) stranom. Sintaksa za ovu kontrolu je:
Dobro došli na naš websajt eDućan! Da bi se razlikovale od normalnih stranica sa .aspx ekstenzijom, master strane imaju .master extenziju. Strane jednostavno mogu da koriste glavne strane tako što definišu MasterPageFile atribut u Page direktivi, kao što je to demonstrirano u kôdu koji sledi. Stranica vezana sa master stranom naziva se stranica sa sadržajem (Content Page).
Stranica sa sadržajem može da odredi kontrolu Sadržaj (Content) tako da prebriše Nosač Sadržaja u Master strani. Kontrola Content je vezana za određenu kontrolu ContentPlaceHolder (nosač sadržaja) pomoću ContentPlaceHolderID osobine. Strane sa sadržajem mogu da imaju oznake i kontrole unutar kontrole Content ali ne mogu da imaju sadržaj višeg nivoa. Ipak, mogu posedovati direktive ili kôd za obradu na serveru:
Kod nas, u svako doba dana, možete kupiti semenke, kikiriki, pistaće i slično.
244
Elektronske poslovne komunikacije –PRAKTIKUM
U sledećem primeru vidi se veza između master i stranice sa sadržajem. Master strana ima dva nosača sadržaja koje smo nazvali DućanPicture i DućanText, pored ostalog, zajedničkog sadržaja. Pojedinačne strane koriste ovaj zajednički izgled, ali prebrišu sadržaj u nosaču sadržaja sa svojim, specifičnim sadržajem. Radi ilustracije mogućih varijanti, dizajnirajmo stranicu Default.aspx tako da ne poseduje kontrolu Sadržaj (content) pa zato neće imati sopstveni specifičan sadržaj. Ali zato stranica eDućan.aspx za sadržaj DućanPicture ima sliku kikiriki.jpg, a za DućanText ima text: Kod nas, u svako doba dana, možete kupiti semenke, kikiriki, pistaće i slično. Za Master Page Site.master kôd je sledeći: Semenke razne Kikiriki Pistaci Bademi Orasi Dobro došli na naš websajt eDućan!
245
Elektronske poslovne komunikacije –PRAKTIKUM
Za stranicu Default.aspx kôd je sledeći:
Dok je stranica eDućan.aspx opisana sledećim kôdom: Kod nas, u svako doba dana, možete kupiti semenke, kikiriki, pistaće i slično. Nakon uvodnog dela ilustrovanog pripadajućim kôdom, koga studenti prethodno samostalno trebaju proučiti, dizajnirajmo Master stranu za definisanje izgleda i navigaciju Web aplikacije eProdaja.com. Dizajniraćemo dve Master strane koje ćemo koristiti u aplikaciji eProdaja: to su MasterPageOsnovni.master koja se nalazi u osnovnom (root) direktorijumu našeg sajta i koji određuje izgled sajta za korisnike – potencijalne kupce, i MasterPageAdmin.master, koji određuje izgled stranicama kojim pristupaju administratori i nalazi se u folderu Administratori. Sledeća slika predstavlja izgled jedne od master stranica i potvrđuje da su master stranice vrlo slične običnim stranicama.
246
Elektronske poslovne komunikacije –PRAKTIKUM
Sledi uobičajno dodavanje drugih stranica tako što se izabere Website/Add New Item i doda nova stranica, pripremljena u skladu sa nekim od raspoloživih obrazaca (Visual Studio installed templates). Statička klijentska stranica se kreira po šablonu HTML Page, a dinamička po šablonu Web Form (samostalno utvrdite razliku u HTML kôdu koji se dobija). Primetite, na sledećoj slici, da je čekirano polje Select master page što nas upućuje na zaključak da će stranica koju kreiramo imati definisanu strukturu i elemente interfejsa na osnovu neke od master strana. Za prikaz podataka iz tabele Proizvodi kreirajmo novu dinamičku stranicu Proizvodi.aspx po šablonu MasterPageOsnovni.master.
Web
Form
uz
podršku
master
strane
247
Elektronske poslovne komunikacije –PRAKTIKUM
Nakon što dugmetom Add potvrdimo sve parametre našeg izbora sledi dijalog Select a Master Page prikazan sledećom slikom. Dijalogom se traži da odaberemo master stranu koje će diktirati strukturu i elemente interfejsa nove dinamičke stranice Proizvodi.aspx. U našem slučaju izabrana je MasterPageOsnovni.master.
Konačnom potvrdom (dugmetom OK) biće generisana nova stranica. Sledi implementacija programske logike u novokreiranu stranu. Programska logika bi se bavila prikazom i ažuriranjem slogova određene tabele iz baze podataka što je već prikazano Vežbom 7 i Vežbom 9 te ovog puta težišta stavljamo na jedan specifičan način povezivanja sa bazom podataka iz Open Source domena. Povezivanje sa bazom podataka Za povezivanje sa MySQL bazom podataka, iz glavnog menija treba izabrati stavku Tools/Connect to Database. U našem slučaju ćemo koristiti ODBC povezivanje sa izvorom podataka.
248
Elektronske poslovne komunikacije –PRAKTIKUM
Druge mogućnosti se mogu izabrati aktiviranjem tastera Change.
Kreiraćemo vezu sa bazom podataka unosom odgovarajućih pristupnih parametara (Use connection string).
249
Elektronske poslovne komunikacije –PRAKTIKUM
Mogu se odmah uneti naziv korisnika i lozinka MySQL baze, a zatim aktivirati taster Build. Sledi izbor (ranije definisanog) DSN-a iz dijaloga "Machine Data Source".
Potvrdi se sa OK. Pojavljuje se dijalog za unos pristupnih parametara, sa prikazom već unetih elemenata.
250
Elektronske poslovne komunikacije –PRAKTIKUM
Obavezno treba uneti naziv servera, za lokalni računar je to "localhost" i potvrditi sa OK.
Pomoću funkcije Test
Connection može se proveriti ispravnost unesenih
elemenata i dostupnost baze podataka.
251
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 11: Realizacija osnovnih sigurnosnih kontrola Web sajta Visual Studio odnosno platforma ASP.NET omogućuju nekoliko načina sigurnosne kontrole pristupa Web stranicama, jasno ograničavajući pristup pojedinim delovima sajta uz mogućnost namenskog dodeljivanja određenih administratorskih privilegija i funkcija. Ono što je zajedničko za savremene Web aplikacije i Web servise kao što su Forumi, eCommerce sajtovi, Portali i slično, jesu korisnički nalozi (eng. User accounts). Sajtovi sa korisničkim nalozima treba da omoguće mnoštvo usluga. Kao minimum, potrebno je dozvoliti novom korisniku da napravi nalog odnosno postojećem korisniku da se prijavi na sistem. Nakon toga, takve Web aplikacije mogu da realizuju određene odluke zavisno od statusa prijavljenog korisnika, kao naprimer: neke akcije ili stranice mogu biti ograničene na samo prijavljenog korisnika ili određenu podgrupu korisnika, sa druge strane mogu da sadrže informacije specifične za prijavljenog korisnika ili mogu da prezentuju više ili manje informacija u zavisnosti od dodeljenih privilegija prijavljenom korisniku. Tehnike za autentifikaciju korisnika kroz Web-formu, autorizovanje pristupa određenim stranicama i funkcionalnostima i upravljanje korisničkim nalozima u ASP.NET aplikacijama možemo posmatrati kao: - identifikovanje i prijavu korisnika na Web-sajt, - korišćenje ASP.NET okvira za članstvo (membership framework), pomoću ASP.NET konfiguracionog alata kako bi se upravljalo korisničkim nalozima, - pravljenje, modifikovanje i brisanje korisničkih naloga, - ograničavanje pristupa Web strani, direktorijumu ili specifičnoj funkcionalnosti bazirano na prijavljenom korisniku, - korišćenje ASP.NET okvira za uloge (Roles framework) da bi dodelili "Uloge" korisnicima, - upravljene Ulogama, - ograničavanje pristupa Web strani, direktorijumu ili specifičnoj funkcionalnosti bazirano na korisnikovim ulogama, - modifikovanje i proširivanje ASP.NET sigurnosnih Web kontrola. Autentifikacija, Autorizacija, Korisnički nalozi, Uloge Autentifikacija, Autorizacija, Korisnički nalozi i Uloge su četiri termina koja se upotrebljavaju tokom izgradnje Web aplikacija te je definisanje ovih termina nužno u ovom momentu.
252
Elektronske poslovne komunikacije –PRAKTIKUM
Autentifikacija je proces utvrđivanja korisnikovog identiteta. Za korisnika koji je bio uspešno identifikovan kaže se da je autentifikovan. Za neidentifikovanog korisnika kažemo da je neautentifikovan ili anoniman (eng. Anonymous user). Sigurnosna autentifikacija traži da ispunimo bar jedan od tri zahteva: nešto što samo mi znamo, nešto što samo mi imamo ili nešto što mi jesmo. Većina Web aplikacija se za autentifikaciju služi nečim što korisnik zna, kao što je jedinstvena lozinka ili PIN. Informacije korišćene za identifikaciju korisnika kao što je njihovo korisničko ime i lozinka na primer – nazivaju se akreditivima (eng. Credentials). Autentifikacija pomoću formi je model kod kojeg korisnik svoje akreditive obezbeđuje kroz Web formu određene stranice. Ova vrsta autentifikacije je opšte poznata korisnicima Internet servise (npr. prijava na Web mail servise zahteva autentifikaciju preko forme sa korisničkim imenom i lozinkom). Autorizacija je proces određivanja da li korisnik ima prava pristupa određenim resursima i funkcionalnostima. Korisnički nalog su uskladištene informacije o određenom korisniku. Korisnički nalog minimalno mora da sadrži informacije koje nedvosmisleno identifikuju korisnika kao što su njegovo korisničko ime i lozinka. Uz ovo, nalozi mogu da sadrže podatke kao što je korisnikova e-mail adresa, vreme kad je nalog napravljen, datum i vreme zadnjeg prijavljivanja, ime i prezime, adresu, broj telefona i kućnu adresu, te neke informacije specifične za korišćenje određene Web usluge. Za skladištenje ovih informacija, koristi se relaciona baza podataka o korisnicima kao što je Microsoft SQL Server. Web aplikacije koje podržavaju korisničke naloge mogu opciono da grupišu korisnike u "Uloge". Uloga je jednostavna oznaka dodeljena korisniku kao sredstvo za uopštavanje definisanih pravila autorizacije i funkcionalnosti na nivou stranice. Na primer, aplikacija može da ima "Administrator" ulogu za autoruzaciju pravila koja zabranjuju svima osim administratoru pristup određenim Web stranama. Sa druge strane, aplikacija može da ima oblasti sa pristupom za članove neke druge "Uloge". U Web aplikaciji eProdavnica, koju kroz serijala laboratorijskih vežbi postepeno izgrađujemo, to će biti oblast "Kupci" kojoj mogu pristupiti korisnici sajta kojima je data uloga "Kupci" od strane "Administratora" što će kasnije biti detaljnije pojašnjeno. Autentifikacija korisnika u aplikacijama ASP.NET Kad korisnik unese URL odnosno adresu željenog sajta u pretraživač ili klikne na link, pretraživač napravi HTTP zahtev koji se upućuje Web serveru za određeni
253
Elektronske poslovne komunikacije –PRAKTIKUM
sadržaj, koji može biti prosta HTML stranica, ASP.NET strana, slika, JAVA skript dokumenat ili neki drugi sadržaj. Zadatak Web servera je da vrati zahtevani sadržaj vodeći računa pri tome da li je onaj ko je uputio zahtev autorizovan da dobije određeni sadržaj. Inače uobičajni HTTP zahtevi nemaju identifikacione informacije. U slučaju da u zahtevu postoje takve informacije, na serveru je da otpočne proceduru za autentifikaciju koja za cilj ima da odredi identitet korisnika koji šalje zahtev. Koraci u ovoj proceduri zavise od tipa autentifikacije koju Web aplikacija koristi. ASP.NET podržava tri tipa autentifikacije: Windows, Passport i Forms. Iako ćemo u predstojećim vežbama koristiti Forms tip - autentifikaciju pomoću formi (prikladna je za Internet okruženje), radi poređenja opišimo i Windows autentifikaciju. Procedura Windows autentifikacije koristi jednu od sledećih tehnika:
§ § §
Osnovna autentifikacija. Zbirna autentifikacija. Integrisana Windows autentifikacija.
Sve tri tehnike su zasnovane na istom pristupu: kad stigne neautorizovani zahtev, server šalje HTTP odgovor koji traži da se izvrši autentifikacija da bi se moglo nastaviti. Pretraživač prikazuje dijalog koji traži korisničko ime i lozinku.
Unete informacije se vraćaju serveru kroz HTTP zaglavlje. Ovo je uobičajan postupak za intranet aplikacije. Korak sa stalnim potvrđivanjem identiteta kroz ovaj dijalog (prethodna slika) izbegava se na način da pretraživač automatski šalje akreditive serveru. Iako je ovo odličan način za intranet aplikacije, bilo bi nepraktično praviti Windows nalog za svakog korisnika aplikacije odnosno sajta na Internetu.
254
Elektronske poslovne komunikacije –PRAKTIKUM
Autentifikacija pomoću formi je, s druge strane, idealna za Internet Web aplikacije. Prisetimo se da autentifikacija pomoću formi traži od korisnika akreditive kroz Web formu. Kao posledica toga, kad korisnik želi da pristupi neautorizovanim resursima, automatski biva preusmeren na stranicu za prijavu gde može uneti svoje akreditive. Poslati akreditivi se proveravaju u smislu pregleda uskladištenih podataka o korisniku – najčešće u nekoj od baza podataka. Obično se na ovaj način štite cele oblasti na Web aplikaciji (stranice i direktorijumi sa stranicama), ali šta ako želimo da sakrijemo samo određene sadržaje za anonimne korisnike? Jednostavno, za tu namenu ASP.NET ima posebnu kontrolu koja se naziva LoginView i kada se postavi na stranicu, prikazuje različite sadržaje anonimnom i prijavljenom korisniku. U našoj aplikaciji eProdaja.com maksimalno ćemo iskoristiti prednosti ASP.NET tehnologije tako što ćemo sa minimumom kôda imati funkcionalno i optimalno osiguran sajt za korisnike – prvenstveno potencijalne kupce. Jednostavan sigurnosni mehanizam se najlakše realizuje pomоću forme za autentifikaciju (Forms Authentication), koja se redovno koristi i kod kompleksnih, a naročito kod manjih, jednostavnijih Web aplikacija. Ideja ove sigurnosne metode je grupisanje svih štićenih objekata na jedno mesto u jedan specifičan administratorski folder (npr. Administracija). Pravila pristupa ovako grupisanim objektima se vode u posebnom konfiguracionom fajlu Web.config. U primerima koji slede u formi laboratorijske vežbe, definisaćemo dva config fajla: jedan na osnovnom, a drugi na zaštićenom folderu naše aplikacije. Potrebno je naglasiti da je ovako zamišljen sistem autentifikacije jedinstven za celu aplikaciju, a razlikuje se samo deo vezan za autorizaciju koji definiše kakva prava imaju autentifikovani korisnici. Realizacija ovako zamišljenog sigurnosnog sistema podrazumeva da: 1.
U postojeći Web.config fajl, koji se inače automatski kreira prilikom startovanja novog projekta, treba postaviti novu vrstu autentifikacije – Forms umesto Windows kao i odgovarajuća korisnička imena (npr. admin, webmaster, ...) sa dodeljenim lozinkama (npr. abcd789, efg3456, ...).
255
Elektronske poslovne komunikacije –PRAKTIKUM
U osnovnom config fajlu se definiše da je login stranica Login.aspx na osnovnom folderu, kao i da je pristup objektima (Web stranicama) u osnovnom folderu dozvoljen anonimnim korisnicima (allow users="?"). 2. Drugi Web.config fajl na zaštićenom folderu treba da sadrži sledeći kôd:
Ovim se definiše da je pristup sadržajima u zaštićenom folderu i svim podfolderima zabranjen (deny) anonimnim korisnicima, koji se nisu prethodno prijavili putem Login.aspx stranice. Prilikom pokušaja pristupa zaštićenoj stranici, sistem ASP.NET proverava da li je korisnik prethodno prijavljen. Ako jeste, dozvoljava se pristup, u suprotnom se automatski startuje stranica Login.aspx. Sem iznetih intervencija u config fajlovima ovaj sigurnosni mehanizam ne zahteva posebno programiranje, potrebno je samo kreirati Login.aspx stranicu. 3. Kreirajmo Login.aspx stranicu kao uobičajnu Web formu.
256
Elektronske poslovne komunikacije –PRAKTIKUM
Koristimo standardne ASP.NET kontrole: § Label za natpise, § TextBox za unos korisnika i lozinke i § Button za taster Log In. Kontrolama za unos teksta promenimo imena u txtUserName, txtPassword i lblStatus. Kontroli txtPassword promenimo svojstvo TextMode u Password, a kontroli lblStatus u svojstvo Text unesimo sledeći sadržaj "Unesite vaše korisničko ime i lozinku". Setimo se u ovom momentu da .NET programiranje pripada programiranju upravljanom događajima (event-driven programming). Pišu se dakle programi koji "reaguju" odnosno odgovaraju na događaje. Stoga definišimo proceduru za događaj OnClick tastera Log In. Dvostrukim klikom na dugme Log In automatski se otvara procedura tasterLogIn_Click koju treba dopuniti tako da izgleda kao na sledećem listingu: protected void tasterLogin_Click(object sender, EventArgs e) { if (FormsAuthentication.Authenticate(txtUserName.Text,txtPassword.Text)) { // Vrši redirekciju na zahtevanu zaštićenu stranicu i kreira
257
Elektronske poslovne komunikacije –PRAKTIKUM
// novi perzistentni cookie sa imenom korisnika txtUserName.Text FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, false); } else { lblStatus.Text = "Niste ovlašteni za pristup ovoj stranici"; }
}
Metod FormsAuthentication.Authenticate()proverava (if) u config fajlu da li postoji korisničko ime i lozinka uneti u polja Korisnik i Lozinka forme Login.aspx (polja forme imaju nazive txtUserName i txtPassword). Ukoliko txtUserName i txtPassword odgovaraju elementima user name i, password iz config fajla, izvršiće redirekciju na traženu stranicu i evidentirati uspešnu prijavu kreiranjem odgovarajuće serverske promenljive popularnog "kolačića" (cookie), tako da se u toku sesije neće ponovo tražiti prijavljivanje putem Login forme. Nedostatak ovog načina je da se korisnici evidentiraju prema svojoj ulozi (administrator, webmaster, kupac, ...), a ne pojedinačno – lično, pa se ovaj način prijave ne može koristiti u funkciji naplate usluga sa konkretnog računa.
258
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 12: Realizacija Web stranice za prikaz i ažuriranje povezanih (master-detail) tabela
Izmene podataka dveju tabela koje su povezane relacijom "jedan prema više" može se realizovati pomoću dve povezane kontrole podataka, npr. dve GridView kontrole. Kontrola na strani "jedan" služi za realizaciju ažuriranja podataka tabele na uobičajen način, a kontrola na strani "više" je ograničena samo na one redove koji imaju vrednost polja spoljašnjeg ključa jednaku vrednosti polja primarnog ključa u trenutno izabranom redu prve (master) tabele:
Master tabela PK m1 m2
Detail tabela (za FK=m2)
m3
PK
FK
d1
m2
d2
m2
d3
m2
d4
m2
Kao primer će se realizovati administratorska stranica RacuniStavke.aspx za pregled i održavanje liste korisničkih narudžbi, odnosno računa. Master tabela je tabela Racun, a detaljna tabela je tabela Stavke. Postupak realizacije prethodno definisane funkcionalnosti je sledeći: §
Kreira se nova stranica i postave dva naslova u obliku HTML teksta ili dve nezavisne Label kontrole kako to prikazuje sledeća slika:
259
Elektronske poslovne komunikacije –PRAKTIKUM
§
260
Za prikaz master tabele (u našem slučaju to je tabela Racun) upotrebićemo kontrolu GridView koju inače često koristimo za tabelarni prikaz podataka iz baze.
Elektronske poslovne komunikacije –PRAKTIKUM
§
Sledi kreiranje pristupa podacima pomoću objekta Data Source:
§
Izabere se Choose Data Source/, a zatim Database i konačno potvrda sa OK
§
Određuju se postojeći pristupni elementi (Connection string) za bazu podataka, a zatim sledi Next.
261
Elektronske poslovne komunikacije –PRAKTIKUM
262
§
Izaberimo tabelu Racun i polja (kolone) koja želimo prikazati na stranici.
§
Sledi uključivanje automatskog generisanja ASP.NET koda za ažuriranje tabele Racun (izborom opcije Advanced...)
Elektronske poslovne komunikacije –PRAKTIKUM
§
Nakon Next, u mogućnosti smo testirati upit SELECT. Naravno, Test Query će biti uspešan ukoliko je korektno izvedeno definisanje pristupa tabeli Racun.
§
Takođe je potrebno uključiti neophodne opcije prve kontrole GridView izborom GridView Tasks od kojih je vrlo bitna opcija Enable Selection.
§
Pomoću Auto Format... biramo vizuelni stil kontrole.
263
Elektronske poslovne komunikacije –PRAKTIKUM
§
Još u Vežbi 7 konstatovali smo da je estetski i funkcionalno povoljnije da komandni elementi korisničkog interfejsa budu tasteri (dugmad), pa će se hiperveze zameniti komandnim tasterima (Button) pomoću Edit Columns... dobijemo sledeći dijalog:
264
Elektronske poslovne komunikacije –PRAKTIKUM
§
Testiranjem jednostavne funkcionalnosti prikaza podataka iz master tabele Racun dobija se sledeći rezultat:
§
Za prikaz podataka povezane – detail tabele (u našem primeru to je tabela Stavke) ponovo koristimo kontrolu GridView, za koju će se definisati novi Data Source izborom Choose Data Source/
265
Elektronske poslovne komunikacije –PRAKTIKUM
266
§
Kreira se pristup podacima pomoću novog objekta New Data Source, a zatim i pristup konkretnoj bazi podataka
§
Izabere se tabela Stavke i polja(kolone) koja želimo prikazati na stranici
§
Sledi ključna odluka koja se odnosi na ograničenje skupa podataka obuhvaćenih SELECT rečenicom dodavanjem klauzule WHERE. Jasno je da želimo skup podataka ograničiti samo na one koji zadovoljavaju spoljni ključ Racun_idRacun.
§
Prethodna slika prikazuje način formiranja parametra za klauzulu WHERE nakon čega se opcijom Add ona automatski generiše.
Elektronske poslovne komunikacije –PRAKTIKUM
§
Prvobitna SELECT rečenica sada je dopunjena WHERE klauzulom i izgleda kao na sledećoj slici:
§
Sledi ponovo uključivanje automatskog generisanja ASP.NET koda za ažuriranje tabele Stavke:
267
Elektronske poslovne komunikacije –PRAKTIKUM
268
§
Prilikom testiranja SELECT upita za tabelu Stavke treba uneti konkretnu vrednost ključnog parametra - vrednost primarnog ključa, tj. polja idRacun iz tabele Racun:
§
Ukoliko je uneta vrednost realna dobija se lista stavki izabranog računa:
§
Opcijom Finish završava se definisanje upita nakon čega je potrebno uključiti neophodne opcije druge GridView kontrole.
Elektronske poslovne komunikacije –PRAKTIKUM
§
Pomoću Auto Format... biramo vizuelni stil, a sa Edit Columns... elemente korisničkog interfejsa takođe definišemo kao tastere (dugmad):
§
Primetimo da se prilikom testiranja stranice ne prikazuje druga kontrola sve dok se ne izabere neki račun (sledeća slika).
269
Elektronske poslovne komunikacije –PRAKTIKUM
§
Konkretan račun biramo tasterom Select nakon čega imamo "izlistane" sve stavke odabranog računa:
Za realizaciju ove stranice bilo je moguće koristiti i druge kombinacije kontrola za prikaz odnosno za izmene podataka povezanih tabela, što zavisi od specifičnih zahteva aplikacije.
270
Elektronske poslovne komunikacije –PRAKTIKUM
Naprimer: Za izbor računa, umesto GridView, može se koristiti kontrola DropDownList (iz sekcije Standard kontrola), a za prikaz stavki selektovanog računa može se koristiti i neka od detaljnih kontrola, DetailsView ili FormView koje takođe omogućuju izmene i unos novih slogova detail tabele. Sve dok se gore navedene kontrole nalaze na istoj Web stranici, definisanje parametara za klauzulu WHERE vrši se na isti način, izborom iz menija prve kontrole (kontrola na strani master) koja upravlja drugom (kontrola na strani detail).
271
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 13: Programiranje poslovne logike u Web aplikaciji eProdaja Funkcionalnosti koje su karakteristične za eCommerce poslovne modele mogu se postupno implementirati kao nove Web stranice, sa nešto kompleksnijim sadržajima u odnosu na prethodne vežbe. Te nove stranice funkcionalno se uključuju u postojeću navigaciju Web sajta, bilo da je ona rešena klasičnim HTML hipervezama, bilo pomoću namenskih navigacionih kontrola Menu i TreeView. Osnovna stranica Web aplikacije je Default.aspx, jedinstvena je i najčešće dizajnirana kao na sledećoj slici:
Sastoji se od logotipa i menija, koji je formiran pomoću namenske navigacione kontrole Menu kao horizontalni statički meni.
272
Elektronske poslovne komunikacije –PRAKTIKUM
Online katalog proizvoda i virtuelna korpa za kupovinu (eShoppingCart) spadaju u osnovne gradivne elemente sajta eProdaja.com koji se po svojoj funkcionalnosti svrstava u B2C model elektronske trgovine. Tokom ove vežbe biće realizovana jedna jednostavna, ali funkcionalna varijanta B2C Web aplikacije. Kako je u pitanju Web sajt za e-poslovanje koji osnovne kompanijske resurse stavlja na raspolaganje širem auditorijumu, mora se implementirati i efikasan bezbednosni sistem. Sistemska zaštita pristupa administratorskim funkcijama biće realizovana Forms autentifikacijom koja podrazumeva intervencije u Web.config fajlu koji se inače automatski kreira pri realizaciji ovakvog Web projekta. Što se tiče registracije kupaca, primenićemo nešto drugačiji mehanizam koji će se realizovati na klasičan način, pomoću tabele Kupac u bazi podataka. Tabela Kupac je upravo za ove potrebe proširena poljem Lozinka.
Za jednostavnu Web aplikaciji koju izgrađujemo kroz formu laboratorijskih vežbi, a koje su po prirodi stvari vremenski limitirane, izabraćemo takav model registracije kupaca gde administrator vrši registraciju direktnom intervencijom u bazi podataka, a OnLine će se vršiti samo autentifikacija. Identifikacioni parametri kupca će se čuvati u posebnoj vrsti serverske promenljive (tzv. cookie), koja je upravo pogodna za ovu namenu. Kako da koristimo mehanizam "kolačića"? U tabeli su primeri upotrebe promenljive sa imenom "cookie" realizovani u jeziku C#:
273
Elektronske poslovne komunikacije –PRAKTIKUM
Kreiranje (deklaracija) Dodela vrednosti
HttpCookie cookie = Request.Cookies["Korisnik"]; cookie["Korisnik"]= "Nepoznat"; Response.Cookies.Add(cookie); HttpCookie cookie = Request.Cookies["Korisnik"];
Upotreba
String strKorisnik = cookie["Korisnik"];
Na odabranom primeru jednostavne Web aplikacije prikažimo postupke kreiranja korisničkih funkcija i to:
§
eKatalog proizvoda sa mogućnošću prikaza slike proizvoda (stranica Katalog.aspx) i
§
eKorpu za kupovinu - eShoppingCart (stranice /Korpa.aspx.cs i odgovarajuće stranice za LoginKupci.aspx/LoginKupci.aspx.cs)
Korpa.aspx logovanje,
Radi celovitosti aplikacije obratićemo pažnju i na administratorske stranice (u podfolderu Administracija). eKatalog proizvoda Katalog ćemo realizovati pomoću stranice Katalog.aspx, koja služi za prikaz podataka iz tabele Proizvodi, koja je za potrebe prikaza izgleda (fotografije) ponuđenog proizvoda dopunjena tekstualnim poljem Slika. Stranica Katalog.aspx pored uobičajnog zaglavlja, sačinjenog od logotipa firme i osnovnog menija Web aplikacije, sadrži i GridView kontrolu koja u tabelarnoj formi prikazuje proizvode koje nudi on-line trgovina i to tako da se podaci o jednom proizvodu smeštaju u po jedan red tabele. Nakon implementacije kontrole GridView na stranicu Katalog.aspx prikazuju se kolone tabele Proizvod, a pomoću funkcije Edit Columns, GridView kontroli se dodaju dve nove kolone:
§ §
274
za prikaz slike na osnovu relativne putanje i specifični hiperlink Dodaj u korpu.
Elektronske poslovne komunikacije –PRAKTIKUM
Polje Slika u suštini sadrži relativnu putanju do fotografije-slike proizvoda (npr. images/žute_ruže.jpg), jer smo, u svrhu realizacije ovog primera, slike fizički smestili u podfolder images).
Hiperlink Dodaj u korpu upućuje na stranicu Korpa.aspx, a namena mu je dodavanje proizvoda u korpu što se ostvaruje posebnim funkcijama napisanim u C#, a koje se nalaze u pridruženoj (code-behind) stranici Korpa.aspx.cs. Hiperlink Dodaj u korpu funkcioniše tako da se stranici Korpa.aspx prenose argumenti {0}idProizvod i {1}Cena izabranog proizvoda:
275
Elektronske poslovne komunikacije –PRAKTIKUM
Korpa.aspx?op=dodaj&idProizvod={0}&Cena={1}
Pomoću svojstva Edit Columns, kontrole GridView, originalno tekstualno polje Slika je zamenjeno novim poljem Slika proizvoda tipa ImageField, čije svojstvo DataImageUrlField treba postaviti na naziv originalnog polja iz tabele Proizvodi:
Kako funkcionalnost realizovane eKorpe treba biti kompletna mora se rešiti način registracije i autentifikacije kupaca i način evidencije narudžbi. Za evidenciju narudžbi se mogu koristiti postojeće tabele Racun i Stavke, ali je pogodnije da to bude samo jedna pomoćna tabela (nova tabela), a da se konačna narudžba (račun)
276
Elektronske poslovne komunikacije –PRAKTIKUM
formira tek kada se kupac odluči na kupovinu. Nova tabela Korpa ima sledeću strukturu:
Polje Korisnik će se upotrebiti za jednoznačnu identifikaciju kupca, npr. uzeće se podaci o prezimenu i imenu kupca iz tabele Kupac. Pošto se u novoj tabeli Korpa čuva samo indeks proizvoda, za pregledniji prikaz naziva proizvoda i drugih podataka o proizvodu korisniku se neće u stranici Korpa.aspx prikazivati prosti sadržaj same tabele, već će se kreirati upit, kao na sledećoj slici:
Direktno će se uneti tekst upita za dodavanje novog (INSERT) i brisanje proizvoda iz korpe (DELETE):
277
Elektronske poslovne komunikacije –PRAKTIKUM
Treba uočiti da se koristi parametar @Korisnik, koji treba da ima vrednost Prezime+Ime kupca iz tabele Kupac.
Parametar se neće automatski preuzimati, već će se po potrebi programski postavljati u odgovarajućoj C# proceduri Korpa.aspx.cs.
Izgled eKorpe nakon nekoliko naručenih artikala
278
Elektronske poslovne komunikacije –PRAKTIKUM
Konačan izgled eKataloga
Identifikacija kupca Web aplikacija se uobičajno pokreće od osnovne stranice Default.aspx, kojom prilikom se vrši inicijalna identifikacija kupca (Lice) na 'Nepoznat' što se ostvaruje C# kodom procedure Page_Load:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page {
279
Elektronske poslovne komunikacije –PRAKTIKUM
protected void Page_Load(object sender, EventArgs e) { HttpCookie cookie = Request.Cookies["Lice"]; if (cookie == null) { cookie = new HttpCookie("Lice"); cookie["Lice"]= "Nepoznat"; Response.Cookies.Add(cookie); } } } Kako bi se kupovina legalno realizovala mora se omogućiti online prijava kupca. Prijava je moguća celim tokom kupovine, a najkasnije po završetku formiranja narudžbe što se ostvaruje posebnim hiperlinkom Prijava kupca na stranici Korpa.aspx. Taj hiperlink upućuje na stranicu LoginKupci.aspx, koja u stvari predstavlja tipičan Login dijalog sa kodom LoginKupci.aspx.cs. Ta funkcionalnost je prikazana u sklopu sledeće vežbe.
280
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 14: Realizacija eShoppingCart (eKorpa za naručivanje) Stranica Korpa.aspx uglavnom ima osnovne elemente karakteristične za sva eShoppingCart rešenja ma u kojoj tehnologiji bila realizovana. Bitno je uočiti da korisniku nije omogućena direktna intervencija u tabeli Korpa, kao jednom od entiteta baze podataka Prodavnica, nego se ažuriranje vrši programski, pomoću namenskog C# koda. Tako kodirane procedure aktiviraju se na osnovu argumenta iz http poziva kontrole GridView:
Programski kôd stranice Korpa.aspx odnosno Korpa.aspx.cs se sastoji iz tri karakteristične celine koje u suštini podržavaju akcije koje se očekuju od strane kupca, a to su: § § §
dodaj u korpu zaključi narudžbu briši korpu
281
Elektronske poslovne komunikacije –PRAKTIKUM
Navedene akcije kupca određuju vrednost prvog argumenta (op) iz poziva stranice Korpa.aspx. Argument op poprima vrednost "dodaj", "zaključi" ili "brisi" zavisno od odabrane akcije od strane kupca. Programski C# kôd za sve tri karakteristične funkcionalnosti prikazan je sledećim listingom: Korpa.aspx.cs using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; public partial class Korpa : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { HttpCookie cookie = Request.Cookies["Lice"]; String strKorisnik = cookie["Lice"]; PrezimeKupca.Text = strKorisnik; SqlDataSource1.SelectParameters[0].DefaultValue = strKorisnik; System.Data.SqlClient.SqlConnection Konekcija = new System.Data.SqlClient.SqlConnection ("Data Source=.\\SQLEXPRESS;Initial Catalog=prodavnica;Integrated Security=True"); SqlCommand sql; SqlDataReader reader; if (Request.QueryString[0].Equals("dodaj")) { SqlDataSource1.InsertParameters[0].DefaultValue = strKorisnik;
282
Elektronske poslovne komunikacije –PRAKTIKUM
SqlDataSource1.InsertParameters[1].DefaultValue = Request.QueryString[1]; SqlDataSource1.InsertParameters[2].DefaultValue = Request.QueryString[2].Replace(",", "."); SqlDataSource1.Insert(); } if (Request.QueryString[0].Equals("brisi")) { SqlDataSource1.DeleteParameters[0].DefaultValue = strKorisnik; SqlDataSource1.Delete(); } if (Request.QueryString[0].Equals("zakljuci")) { if (strKorisnik != "Nepoznat") { Konekcija.Open(); sql = new SqlCommand("SELECT idKupac FROM Kupac WHERE (Prezime+Ime = '" + strKorisnik + "')", Konekcija); reader = sql.ExecuteReader(); reader.Read(); String idKupac = reader[0].ToString(); reader.Close(); sql = new SqlCommand("INSERT INTO Racun (Kupac_idKupac, Datum, Placeno, Isporuceno) VALUES (" + idKupac + ", '" + DateTime.Now + "', 0, 0)", Konekcija); sql.ExecuteNonQuery(); sql = new SqlCommand("UPDATE Racun SET Suma = (SELECT SUM(Cena) FROM Korpa WHERE Korisnik = '" + strKorisnik + "') WHERE Suma IS NULL", Konekcija); sql.ExecuteNonQuery();
283
Elektronske poslovne komunikacije –PRAKTIKUM
sql = new SqlCommand("SELECT MAX(idRacun) FROM Racun", Konekcija); reader = sql.ExecuteReader(); reader.Read(); String idRacun = reader[0].ToString(); reader.Close(); sql = new SqlCommand("INSERT INTO Stavke (Proizvod_idProizvod, Cena) SELECT [Korpa].idProizvod, [Korpa].Cena FROM Korpa WHERE [Korpa].Korisnik='" + strKorisnik + "'", Konekcija); sql.ExecuteNonQuery(); sql = new SqlCommand("UPDATE Stavke SET Racun_idRacun = " + idRacun + ", Kolicina = 1 WHERE Racun_idRacun IS NULL", Konekcija); sql.ExecuteNonQuery(); SqlDataSource1.DeleteParameters[0].DefaultValue = strKorisnik; SqlDataSource1.Delete(); Konekcija.Close(); } else { Response.Redirect("LoginKupca.aspx?op="); } } Konekcija.Open(); sql = new SqlCommand("SELECT COUNT(*),SUM(Cena) FROM Korpa WHERE Korisnik = '" + strKorisnik + "'", Konekcija); reader = sql.ExecuteReader(); reader.Read(); Proizvoda.Text = reader[0].ToString(); Ukupno.Text = reader[1].ToString(); Datum.Text = DateTime.Now.ToString(); reader.Close(); reader.Dispose(); Konekcija.Close(); } }
284
Elektronske poslovne komunikacije –PRAKTIKUM
Uočimo da je svaka funkcija realizovana posebnim blokom naredbi, koje se u suštini sastoje u manipulisanju parametrima poziva (op, idProizvod i Cena), formiranju i izvršavanju upita (promenljiva sql) i korišćenju podataka iz rezultata upita (promenljiva reader). Prijava kupca Stranica LoginKupca.aspx realizuje proveru identiteta kupca, koji je ranije, prilikom prijave (učlanjivanja) u sistem Web prodavnice, od administratora sistema dobio lozinku koju koristi za kupovinu i prilikom prijave je unosi u sledeću formu:
Provera se vrši nakon unosa prezimena, imena i lozinke kupca i klika na taster Login, koji aktivira C# proceduru tasterLogin_Click, koja u suštini upoređuje unesene podatke iz forme sa podacima iz baze podataka koja se nalazi na serveru. Konkretno radi se o tabeli Kupac u kojoj se čuvaju osnovni podaci o kupcu zajedno sa lozinkom. C# kôd programske procedure koja vrši autentifikaciju prijavljenog korisnika prikazan je sledećim listingom: LoginKupca.aspx.cs using System; using System.Data;
285
Elektronske poslovne komunikacije –PRAKTIKUM
using using using using using using using using using
System.Configuration; System.Collections; System.Web; System.Web.Security; System.Web.UI; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts; System.Web.UI.HtmlControls; System.Data.SqlClient;
public partial class LoginKupca : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {
} protected void tasterLogin_Click(object sender, EventArgs e) { String strPrezime = ""; String strIme = ""; SqlCommand sql; SqlDataReader reader; System.Data.SqlClient.SqlConnection Konekcija = new System.Data.SqlClient.SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=prodavnica;Integrated Security=True"); Konekcija.Open(); sql = new SqlCommand("SELECT Prezime, Ime, Lozinka FROM Kupac WHERE Prezime ='" + txtPrezime.Text + "' AND Ime='" + txtIme.Text + "' AND Lozinka='" + txtPassword.Text + "';", Konekcija);
286
Elektronske poslovne komunikacije –PRAKTIKUM
reader = sql.ExecuteReader(); reader.Read(); if (reader != null && reader[0].ToString() != "") { strPrezime = reader[0].ToString(); strIme = reader[1].ToString(); String strLozinka = reader[2].ToString(); } reader.Close(); reader.Dispose(); if (strPrezime != "") { String strKorisnik = strPrezime + strIme; lblStatus.Text = strKorisnik; HttpCookie cookie = Request.Cookies["Lice"]; cookie["Lice"] = strKorisnik; Response.Cookies.Add(cookie); sql = new SqlCommand("UPDATE Korpa SET Korisnik = '" + strKorisnik + "' WHERE Korisnik = 'Nepoznat' ", Konekcija); sql.ExecuteNonQuery(); Response.Redirect("Korpa.aspx?op="); } else { lblStatus.Text = "Niste se uspešno identifikovali. Proverite svoje podatke."; } } }
U slučaju greške pri unosu zahtevanih podataka od strane kupca ili u slučaju da korisnik nije uopšte registrovan u sistemu eProdavnice, ispisuje se poruka o
287
Elektronske poslovne komunikacije –PRAKTIKUM
neuspešnoj prijavi. Kada je prijava uspešna, vrši se povratak (redirekcija) u stranicu Korpa.aspx, u kojoj će se naziv kupca prikazati u dnu stranice. Nakon uspešne prijave klikom na Zaključi narudžbu aktivira se funkcija "zaključi", koja će identifikacioni podatak o kupcu uneti u tabele računa (Racun i Stavke), zajedno sa podacima o sadržaju korpe i drugim pratećim parametrima. Kada je račun za naručene proizvode/usluge uspešno formiran, plaćanje se može realizovati na niz načina (platnom karticom uz posredovanje nekog od "PayPal procesora", umanjenjem potrebnog iznosa sa pretplatničkog stanja na računu kupca u sistemu eProdavnice, pa i klasičnim putem). Prikaz funkcionisanja korpe Posetilac Web sajta (potencijalni kupac) pregleda spisak proizvoda – eKatalog, izabere proizvod i dodaje ga u svoju eKorpu prostim klikom na link Dodaj u korpu. Proizvod sa svim obeležjima se pojavljuje na stranici Korpa.aspx, a osnovni podaci o proizvodu se istog momenta beleže u tabelu Korpa baze podataka Prodavnica.
Kupcu su na raspolaganju akcije: dodavanja još proizvoda u eKorpu (taster ili link Dodaj u korpu na stranici eKatalog u koju se po potrebi vraća), brisanje sadržaja korpe (odustajanje od već formirane narudžbe) funkcijom Briši korpu i definitivno
288
Elektronske poslovne komunikacije –PRAKTIKUM
zaključivanje narudžbe funkcijom Zaključi narudžbu, koja sadržaj eKorpe i druge prateće podatke (datum i vreme formiranja narudžbe, obeležja kupca, ukupna cena naručenih artikala, ...) upisuje u tabelu Racun odnosno tabelu Stavke. Međutim, pre zaključivanja narudžbe zahteva se prijava – autentifikacija kupca (neke eProdavnice to traže odmah na samom početku interakcije sa kupcem, ali se ne preporučuje jer takav ne popularan potez može da odbije potencijalne kupce).
Jasno je da su relevantni podaci o kupcu, kao i njegova lozinka, prethodno bazu podataka sistema eProdavnica. Prijava se aktivira Prijava kupca:
uneti u linkom
289
Elektronske poslovne komunikacije –PRAKTIKUM
Ukoliko se ne izvrši prijava kupca, a aktivira se procedura Zaključi narudžbu, sistem će automatski izvršiti redirekciju na prethodno prikazanu proceduru prijave kupca. Nakon provere, kontrola se vraća eKorpi, ali sada sa jasno vidljivim podacima o kupcu (prezime i ime):
Funkcija Zaključi narudžbu relevantne podatke o kupcu i naručenim artiklima unosi u tabele Racun i Stavke. Kada je formiran račun, sledi procedura plaćanja koja se može realizovati na nekoliko različitih načina koji će biti prezentovani u Vežbi 15. Administracija Administracija podrazumeva procedure ažuriranja, unosa ili brisanja podataka za proizvode, kupce i račune odnosno ažuriranje tabela Proizvodi, Racuni i Kupci.
290
Elektronske poslovne komunikacije –PRAKTIKUM
Pokretanje ovih funkcija je moguće samo za sistemske korisnike, a pod tim pojmom se podrazumevaju osobe sa administratorskim privilegijama, dakle lica koja administriraju i u celini nadgledaju Web aplikaciju eProdavnica. Treba obratiti pažnju na fajl Web.Config koji definiše pristup pojedinim stranicama u smislu slobodnog pristupa svima (anonimnim posetiocima sajta – potencijalnim kupcima) ili pak strogo kontrolisani pristup uz obaveznu autentifikaciju koja, ako je uspešna, donosi administratorske privilegije.
291
Elektronske poslovne komunikacije –PRAKTIKUM
Nakon uspešne autentifikacije u mogućnosti smo vršiti ažuriranje tabela Proizvodi i Kupci te pregled i eventualne izmene u sistemu povezanih tabela (master – slave) Račun – Stavke (vidi Vežbu 12). Koristeći kontrolu GridView dizajniraćemo stranice koje će nam služiti ažuriranju tabela Proizvodi odnosno Kupci. Za unos novih proizvoda i novih kupaca koje evidentiramo u sistem eProdavnice koristićemo kontrolu DetailsView (ili FormView) na način prikazan tokom izrade primera upotrebe kontrole GridView u nekoliko prethodnih vežbi. Unos i izmene podataka za proizvode iz eProdavnice (lista proizvoda): Potrebno je uočiti da se, iako slična "katalogu proizvoda", "lista proizvoda" razlikuje u detaljima koji nisu bili bitni za potencijalnog kupca kao što je naprimer, idProizvoda (interna šifra proizvoda).
Administracija računa dozvoljava minimalne intervencije na slogovima tabele Računi gde je omogućeno ažuriranje (čekiranje) polja Isporučeno i/ili Plaćeno.
292
Elektronske poslovne komunikacije –PRAKTIKUM
Kao samostalni (domaći) zadatak treba dizajnirati .aspx stranicu koja donosi posebno formatiran prikaz podataka (listing) o pojedinim računima sa povezanim stavkama za svaki račun i implementiranom funkcijom koja omogućuje štampu takvog listinga. Unos novih kupaca i izmene podataka o kupcima koji su već obuhvaćeni bazom podataka eProdavnice je administratorska funkcionalnost stranice Kupci:
293
Elektronske poslovne komunikacije –PRAKTIKUM
Aktiviramo li dugme Izmeni u mogućnosti smo ažurirati podatke za pojedine kupce koji su već registrovani u sistemu eprodavnice:
Unete izmene potvrđujemo sa dugmetom Unesi.
294
Elektronske poslovne komunikacije –PRAKTIKUM
Vežba 15: Moguće varijante plaćanja po zaključenju narudžbe Pre bilo kakvog naručivanja proizvoda, posetilac sajta – potencijalni kupac se mora registrovati kako bi mogao izvršiti kupovinu. Postupak registracije obavlja se samo jednom, nakon čega podaci o kupcu ostaju pohranjeni u sistemu eProdavnice. Registrovanom kupcu dodeljuju se korisničko ime (username) i lozinka (password) koje kasnije koristi prilikom naručivanja konkretnih proizvoda. Novi kupci prijavljuju se popunjavanjem formulara u koji upisuju sve podatke koji su potrebni za obavljanje kupovine (ime i prezime ili naziv firme, adresu, telefon, e-mail itd.). Za proveru novih prijava i odobravanje pristupa kupcima na raspolaganju su sledeće standardne mogućnosti: § Automatska dodela korisničkog računa uz mogućnost naknadne provere: Aplikacija svakom novom kupcu odmah po prijavi dodeli korisničko ime i lozinku te odmah odobri mogućnosti prijave i kupovine. Pristupni podaci se kupcu šalju na e-mail adresu koju je upisao prilikom prijave. Novi kupci se prikazuju u posebnom delu administratorskog interfejsa, pa nadležne osobe sa administratorskim privilegijama mogu pregledati nove prijave. Ako se uoči bilo kakva nepravilnost mogu naknadno blokirati korisnički račun novog kupca ili ga potpuno izbrisati iz sistema. § Registracija uz proveru e-mail adrese: U ovom slučaju novom kupcu se emailom s pristupnim podacima šalje i aktivacioni link na koji će morati kliknuti pre prve prijave. Aplikacija automatski detektuje klik na predmetni link i aktivira korisnički račun novog kupca koji tek od tog trenutka ima mogućnost prijave u Web prodavnicu. Postupak aktivacije provodi se samo jednom a može ga obaviti isključivo kupac koji ima pristup e-mail nalogu-adresi koju je naveo u formularu za prijavu. Na taj način odmah se eliminišu prijave s lažnim ili izmišljenim e-mail adresama. § Provera novih kupaca pre prve prijave: Moguće je implementirati i obaveznu proveru novih kupaca pre nego im se dodele pristupni podaci za Web prodavnicu. I u ovom slučaju nove prijave sistem prikazuje u posebnom delu administratorskog interfejsa gde ih pregleda nadležna osoba sa administratorskim privilegijama. Pri tome se proverava verodostojnost podataka iz prijave (npr. telefonskim kontaktom s novim kupcem). Tek nakon uspešne provere inicira se generisanje korisničkog imena i lozinke koji se šalju kupcu. Ovakva procedura je pogodna ako se grupišu korisnici po različitim kategorijama (npr. maloprodaja,
295
Elektronske poslovne komunikacije –PRAKTIKUM
veleprodaja, partneri itd.) jer u tom slučaju svakom novom korisniku se mora dodeliti obeležje odgovarajuće kategorije. Rad s računima evidentiranih kupaca Za rad s korisničkim računima evidentiranih kupaca treba predvideti i realizovati mogućnosti uređivanja i brisanja postojećih korisničkih računa, dodavanje novih, pretraživanje baze kupaca itd. Vrlo bitna je i funkcionalnost koja pojedine korisničke račune može blokirati. Blokirani kupac se ne može prijavljivati u Web prodavnicu, ali i dalje ostaje evidentiran u bazi. Korisničke račune kupaca možete razvrstati po grupama. Unos grupa za kupce obavljate sami, u skladu s vlastitom poslovnom politikom. Tako kupce možete podeliti na krajnje korisnike (maloprodaja), veleprodajne partnere, inostrane partnere i sl. Podelu kupaca možete koristiti za definisanje cenovne politike i formiranje prikaza proizvoda za pojedine grupe korisnika. Plaćanje Kada posetilac kompletira narudžbu (stavi sve željene proizvode u korpu) prolazi kroz proces zaključivanja narudžbe pri čemu obavezno vrši prijavljivanje svojim korisničkim imenom i lozinkom (ukoliko prijavu već nije prethodno obavio). Aplikacija će kupcu ponuditi neku od raspoloživih opcija za plaćanje. U osnovnoj varijanti na raspolaganju su sledeći načini plaćanja: - Ispis podataka za plaćanje – aplikacija kupcu prikazuje sve podatke potrebne za plaćanje (naziv i sedište primaoca, broj računa, iznos za uplatu itd.) na temelju čega kupac može popuniti nalog za plaćanje. Ako je kupac korisnik nekog od sistema internet bankarstva, podatke za plaćanje može kopirati u bankarsku aplikaciju koju inače koristi za plaćanje Internetom. - Ispis virmana – pravnim licima može se ponuditi ispis virmana koga će aplikacija automatski generisati na temelju podataka evidentiranih o kupcu. - Plaćanje pouzećem – kupcima možete ponuditi da naručene proizvode prime poštom, a plaćanje obave pouzećem - Online autorizacija plaćanja – omogućuje korišćenje nezavisnih serivisa za online autorizaciju naplate što kupcima omogućuje da narudžbe plaćaju karticama. Potvrđene narudžbe se prikazuju u posebnom delu administratorskog interfejsa. Pri tome je svakoj narudžbi moguće dodeliti odgovarajući status. (npr. sve nove narudžbe automatski dobijaju status „neobrađeno“, a mogući su i drugi statusi
296
Elektronske poslovne komunikacije –PRAKTIKUM
poput „obrađeno“, „odbijeno“, „u obradi“ itd.). Nadležno lice eProdavnice pregleda i obrađuje narudžbe na način da po potrebi kontaktira naručioce, koriguje naručene stavke (menja količinu, uklanja postojeće stavke ili dodaje nove i sl.), te menja status narudžbe pri čemu aplikacija automatski preračunava iznos međustavki i ukupnu vrednost narudžbe. U sklopu pregleda detalja o narudžbi uz podatke o naručenim stavkama prikazuju se i detalji o naručiocima (kupcima) i drugi relevantni podaci (način plaćanja, način i troškovi dostave itd.). Uz to na raspolaganju je i mogućnost štampanja fakture direktno iz Web aplikacije. Online autorizacija naplate karticama Implementiranje podrške za online naplatu karticama kupcima se omogućuje da korišćenjem vlastite kreditne kartice putem Web stranica odmah izvrše i uplatu za naručene artikle. Podrška za naplatu implementira se u zavisnosti o servisu za autorizaciju koga naručilac prethodno bira. Zavisno od odabranog servisa, uključivanje podrške za online naplatu može zahtevati neke predradnje (ugovaranje naplate karticama sa nekom kartičarskom kompanijom, izbor servisa za online naplatu i ugovaranje usluge), koje naručilac rešava u direktnom kontaktu sa firmama koje odabere. Aplikacija u tom slučaju uključuje podršku za online autorizaciju naplate spajanjem na nezavisne vanjske servise standardnim tehnologijama koje se uobičajno koriste za tu namenu (npr. preusmeravanje na formular PayPal servisa, pozivanje udaljenih servisa za autorizaciju itd.). Ukoliko odabrani servis koristi neki od nestandardnih načina povezivanja troškovi implementacije se procenjuju nakon uvidu u tehničke specifikacije servisa. Web aplikacija u opštem slučaju podržava praćenje osnovnih aktivnosti prijavljenih korisnika. Za lica sa administratorskim privilegijama beleži se vreme pristupa interfejsu, a omogućene su osnovne aktivnosti nad podacima – unos novih podataka, te promene i brisanja postojećih podataka. Na temelju tako zabeleženih podataka moguće je naknadno utvrditi npr. ko je i kada uneo neki novi proizvod, ko je menjao cene i sl. Za kupce se beleži vreme prijave te vreme zaključivanja narudžbe. Najzastupljenije rešenje online naplate je zasnovano na prusmeravanju kupca na formular jednog od "PayPal" servisa. Primetite da je naziv servisa stavljen u znake navoda jer se u ovom slučaju misli na bilo koji servis koji obezbeđuje predmetnu funkcionalnost. Naziv "PayPal" je postao sinonim za online načine plaćanja bez obzira da li se zaista radi o PayPal servisu
297
Elektronske poslovne komunikacije –PRAKTIKUM
ili nekoj konkurentskoj firmi iz oblasti online naplate. Postupak korišćenja PayPal servisa za online plaćanje Postupak korišćenja PayPal servisa na Internetu uz upotrebu VISA NET platne kartice je sledeći: Po otvaranju PayPal-a ili vas aplikacija sistema eProdavnice preusmeri na lokaciju (www.paypal.com), kreirati svoj račun (“Sign up”) ili se prijaviti ako je račun već kreiran (“Account login”).
298
Elektronske poslovne komunikacije –PRAKTIKUM
Kreiranje svog računa u PayPal sistemu podrazumeva: § §
Odabrati zemlju i jezik U kategoriji “Personal” kliknuti “Get Started”
Sledi unos osnovnih podataka o klijentu:
299
Elektronske poslovne komunikacije –PRAKTIKUM
Unesite broj vaše VISA NET kartice izdate od strane vaše poslovne banke Unesite trocifreni broj koji se nalazi na poleđini vaše VISA kartice
Nakon što unesete sve potrebne podatke, potvrdom na označeno dugme PayPal će kreirati vaš nalog. Važno je znati da će vas u tom trenutku PayPal obavestiti da je vaša kreditna kartica zadužena (naplaćeno sa kartice) sa simboličnom sumom od ~ 1,40 $. Taj iznos će automatski biti vraćen na vašu karticu nakon što ponovnom prijavom na PayPal izvršite verifikaciju vaše kartice upisom četvorocifrenog koda, koga ćete pronaći na izvodu vaše VISA NET kartice ili dobijenjem informacije od strane vaše banke.
300
Elektronske poslovne komunikacije –PRAKTIKUM
Nakon kreiranja računa ili nakon regularne prijave sistem vas preusmerava na “My Account”:
U mogućnosti ste dobiti pregled prijavljenih kreditnih kartica, pregled transakcija u protekla 3 meseca i izbor pogleda na detalje jedne transakcije:
Primer detalja jedne transakcije:
301
Elektronske poslovne komunikacije –PRAKTIKUM
Primer kupovine određenog proizvoda u jednoj eProdavnici demonstriraćemo kroz proces kupovine jednog softverskog paketa (antivirusni softver).
302
Elektronske poslovne komunikacije –PRAKTIKUM
303
Elektronske poslovne komunikacije –PRAKTIKUM
Nakon provere unetih podataka i konačnog novčanog iznosa sledi unos osnovnih podataka o kupcu i izbor načina plaćanja:
Nakon potvrde sa NEXT sledi provera svih podataka prije konačne narudžbe:
304
Elektronske poslovne komunikacije –PRAKTIKUM
Nakon konačne potvrde narudžbe sa
305
Elektronske poslovne komunikacije –PRAKTIKUM
slede instrukcija načina plaćanja:
306
Elektronske poslovne komunikacije –PRAKTIKUM
Klikom na ponuđeni link u mogućnosti smo dobiti kompletnu narudžbenicu u .pdf formatu. I nakon svega sledi prijava u PayPal (nakon klika na “Pay now by PayPal”) radi konačnog plaćanja. Zavisno od odabranog servisa, uključivanje podrške za online naplatu može zahtevati neke predradnje (ugovaranje naplate karticama sa nekom kartičarskom kompanijom, izbor servisa za online naplatu i ugovaranje usluge), koje naručilac rešava u direktnom kontaktu sa firmama koje odabere. Aplikacija u tom slučaju uključuje podršku za online autorizaciju naplate spajanjem na nezavisne vanjske servise standardnim tehnologijama koje se uobičajno koriste za tu namenu (npr. preusmeravanje na formular PayPal servisa, pozivanje udaljenih servisa za autorizaciju itd.). Ukoliko odabrani servis koristi neki od nestandardnih načina povezivanja troškovi implementacije se procenjuju nakon uvidu u tehničke specifikacije servisa. Narudžbenica ima sledeću formu:
307
Elektronske poslovne komunikacije –PRAKTIKUM
A proces online plaćanja je prikazan sledećim slikama:
308
Elektronske poslovne komunikacije –PRAKTIKUM
309
Elektronske poslovne komunikacije –PRAKTIKUM
Sledi potvrda da je konačno sve plaćeno:
310
Elektronske poslovne komunikacije –PRAKTIKUM
Nakon uspešnog online plaćanja automatskom redirekcijom bićete vraćeni u sistem eProdavnive (u našem primeru Avira Online Shop) gde dobijate serijski broj plaćenog proizvoda i potvrdu o uplati.
311
Elektronske poslovne komunikacije –PRAKTIKUM
Literatura [1] Watkins D., Hammond M., Abrams B.: Programming in the .NET Environment, Addison Wesley, 2002. [2] Bill Evjen, Scott Hanselman, Farhan Muhammad, Srinivasa Sivakumar, Devin Rader: Professional ASP.NET 2.0; Wiley Publishing, Inc. 2006. [3] Stutz D., Neward T., Shilling G.: Shared Source CLI Essentials, O’Reilly, 2003. [4] Doug Lowe; ASP:NET 2.0 Everyday Apps for Dumies; Wiley Publishing, Inc. 2006. [5] Microsoft C# Language Specification, Microsoft Press, 2001. [6] Scott Mitchell; Teach Yourself ASP.NET 2.0 in 24 Hours; Sams 2006. [7] Mesbah Ahmed, Chris Garrett, Jeremy Faircloth, Chris Payne, Wei Meng Lee (Series Editor), Jonothon Ortiz (Technical Editor); ASP.NET Web Developers Guide; Syngress Publishing, Inc. 2002 [8] Douglas J. Reilly Designing Microsoft ASP.NET Applications, Microsoft Press, 2002. [9] Matthew MacDonald, Mario Szpuszta Pro ASP.NET 2.0 in C# 2005, Apress, 2005. Internet izvori: http://msdn.microsoft.com/net/aspnet/default.asp Službena Microsoftova stranica za pomoc programerima http://www.asp.net/ Službena Microsoftova stranica posvećena ASP.NET tehnologiji http://www.dotnetspider.com/tutorials/TutorialListing.aspx http://www.fmexpense.com/quickstart/aspplus/default.htm http://www.asptoday.com/ http://www.aspng.com/aspng/index.aspx http://databaseanswers.org/data_models/index.htm http://www.4guysfromrolla.com/ http://www.aspfree.com/ http://www.devx.com/dotnet/ http://www.ibuyspy.com/ http://www.w3schools.com/aspnet/.
312