JKP BEOGRADSKI VODOVOD I KANALIZACIJA BEOGRAD
Uvod u ASP.NET Web programiranje
Autor: Slavimir Lj. Vesić, projektant/programer MCP - Microsoft Certified Professional, Licence ID: 10702121
Uvod • ASP.NET je Microsoft-ov framework (okvir) za razvoj Web aplikacija • ASP.NET je deo .NET framework-a • Poslednja zvanična verzija Visual Studio alata je 2013 (VS 2013) • Microsoft ima u planu sledeću verziju VS vNext – koja će delom biti i revolucionarna po tom što će postojati mogućnost da se .NET aplikacije izvršavaju pod Linux OS • Visual Studio (VS) je IDE (integrated development environment) – integrisano razvojno okruženje • VS omogućava razvoj velikog broja aplikacija: Desktop, Web, Windows Store, Windows Phone, a sa dodatkom Xamarin i Andorid i IOS, i td... SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
2
.NET Programski jezici (1) • Microsoft-ov glavni programski jezik je C# (C Sharp) • Pored C#, .NET podržani jezici su i VB.NET (Visal Basic) i F# (F Sharp), i drugi • C# je objektno-orjentisani (OO) programski jezik (OOP) • Kada je programski jezik OO, to znači da su ispoštovani sledeći principi (koncepti) – često se zovu u literaturi, stubovi (pillars) OOP: • • • •
Apstrakcija (Abstraction) Nasleđivanje (Inheritance) Učaurenje (Encapsulation) Polimofrizam (Polymorphism ) SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
3
.NET Programski jezici (2) • C# i VB.NET su najkorišćeniji .NET jezici • Oni imaju 2-faznu kompilaciju • U prvoj fazi kompilacije C# ili VB.NET kod se prevodi u IL (intermediate language), koji se u ponekoj literaturi naziva i MSIL • time se omogućava da različiti .NET programski jezici prevode svoj izvorni kod (source code) u isti među-jezik • U drugoj fazi kompilacije se poziva JIT (just-in time) compiler i IL se prevodi u mašinski-prirodni jezik (native code), spreman za odgovarajući procesor računara SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
4
Rad sa bazom podataka u .NET okruženju (1) • u .NET-u, rad sa bazom podatka se ostvaruje putem ADO.NET-a • ADO.NET je skup programskih klasa, koje omogućavaju programeru da ostvari pristup bazi podataka • ADO.NET sadrži provider-e, koji omogućavaju rad sa bazom podatka • Provider-i su: SQL Server, Oracle, OleDb, ODBC i td... • Kada se radi sa odgovarajućom bazom podatka tada se koristi skup funkcionalnosti koje su obezbeđene odabranim Provider-om • Sistemi za upravljanje bazom podataka (SUBP) ili (DBMS) mogu da rade sa bazom na način da imaju ili nemaju stalno otvorenu konekciju sa bazom SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
5
Rad sa bazom podataka u .NET okruženju (2) • u .NET-u je to takođe omogućeno putem Connected ili Disconnected Data Access Architecture • DataReader je osnovni objekat koji se koristi u Connected arhitekturi • DataSet je osnovni objekat koji se koristi u Disconnected arhiekturi
• u .NET-u konekcija sa bazom podataka se ostvaruje putem konekcionog stringa (Connection String) • Pored toga što je osnovni način rada sa relacionim sistemima za upravljanje bazama podataka (RDBMS), kao što su SQL Server, Oracle, MySQL, PostgreSQL, Sybase itd..., pisanjem upita (Query) i njihovim izvršavanjem, već neko vreme je trend da u OO jezicima se koriste ORM tehnologije SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
6
Rad sa bazom podataka u .NET okruženju (3) • ORM - Object-relational mapping – objektno relaciono mapiranje • Programeri u OOP su zaključili da je potrebno da razmišljaju na 2 načina kada programiraju: • Na objektno-orjentisanom načinu razmišljanja (koji je bliži realnom sistemu) • Na relacionom načinu razmišljanja (koji je bliži DBMS)
• Ideja ORM je da prevaziđe ovaj jaz i da programeri rade OO, a to je u skladu sa Agilnim načinom razvoja softvera, što je predominantni način projektovanja i izgradnje softvera • ORM alati omogućavaju mapiranje objekata iz programa u tabele u bazi podataka i oni su sloj zapravo između baze podataka i programa • U .NET-u se dosta koristi Entity Framework kao ORM rešenje iako postoje i druga (nHibernate, Micro, ...) SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
7
Rad sa bazom podataka u .NET okruženju (4) • Do sada sam opisao načine rada sa SUBP koji podržavaju relacioni model podataka i koji se jednim imenom zovu RDBMS (Relational Database Management System) • U RDBMS-u SQL je standard za komunikaciju sa bazom podataka • Poslednjih nekoliko godina usled WEB 2.0., razvijaju se velikom brzinom i skup baza podatka poznat pod nazivom NoSQL (Not only SQL) • Primeri tih baza podataka su Mongo DB, Couch DB itd... • Ideja je da se podaci pamte najčešće u notaciji parova ključ-vrednost (keyvalue) • .NET ima podršku za rad sa ovim tipovima baza • Ovo je veoma značajno u poslednje vreme kada se sve više koriste mobilni uređaji, kako u privatne, tako i u poslovne svrhe SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
8
Web programiranje (1) • Sa razvojem World Wide Web-a (WWW) (Tim Berners-Lee), u fokus je došlo i Web programiranje • Web programiranje se oslanja na ISO OSI model (ili 4-slojni TCP/IP model u zavisnosti od literature), prema kojem postoji 7 slojeva – 7 apstrakcija: aplikacioni sloj, prezentacioni sloj, sloj sesije, transportni sloj, mrežni sloj, sloj linka podataka (data link-a) i fizički sloj • Ideja slojeva je uvedena jer je komunikacija sama po sebi složena, pa se njena složenost umanjuje razlaganjem (dekompozicijom) na slojeve i davanjem određenih zadataka svakom pojedinačnom sloju • Model usluga je zgodan za razumevanje dekompozicije slojeva – gde se svaki sloj posmatra kao usluga koja je obezbeđena sloju iznad (npr. TCP daje siguran transport HTTP-u i još neke druge stvari) bez ulaženja u implementacione detalje sloja ispod !!! (HTTP-a ne interesuje kako to TCP obezbeđuje) • Na svakom sloju postoje komunikacioni protokoli, koji omogućavaju komunikaciju između distribuiranih procesa istog sloja (u smislu obradne paradigme) • Web programiranje je u samoj svojoj biti distribuirano programiranje • Klijent (Client) u smislu obradne paradigme je proces koji poziva (Request) server • Server (Server) u smislu obradne paradigme je proces koji čeka poziv (Request) klijenta, izvršava zahtev klijenta i šalje odgovor (Response) • Distribuirana aplikacije je ona u kojoj komuniciraju klijent i server, koji su međusobno udaljeni SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
9
Web programiranje (2) – HTTP(1) • za Web programiranje je važan HTTP protokol – protokol aplikativnog sloja • HTTP protokol prenosi podatke od klijenta do servera i obrnuto • Klijentski proces HTTP-a je Web browser (pretraživač): Mozilla Firefox, Google Chrome, Microsoft Internet Explorer, . . . • Serverski proces HTTP-a čini Web server • Kada u pretraživaču ukucamo neku adresu, npr: http://www.bvk.rs, tada pozivamo HTTP serverski proces (i zahtevamo neki resurs gde se ovde ne vidi jer po default-u vraća , a može da bude .html, .php, .aspx itd, npr. http://www.bvk.rs/index.php) • Po default-u Web server sluša na portu 80, tako da iako to ne vidimo u URLu pretraživača, mi naš zahtev možemo da prosledimo kao http://www.bvk.rs:80 SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
10
Web programiranje (3) – HTTP(2) • HTTP – Hypertext Transfer Protocol, kao što mu ime kaže omogućava razmenu hiperteksta • Jedna od osnovnih karakteristika HTTP protokola jeste da je on bez stanja (stateless), što znači da za izvršavanje logike komunikacije između klijenta i servera je potrebno omogućiti praćenje stanja • Stanje se u Web programiranju obezbeđuje: • Sesijom (session) • Kolačićima (cookies)
• Kod Cookies-a potrebno je voditi računa o bezbednosnim aspektima – jer ih je moguće fizički pročitati, kao .txt fajl (datoteku) SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
11
Web programiranje (4) • Na početku Web programiranja, arhitekture su bile izgrađene tako da su se izvršavale preko CGI-a (Common Gate Interface) • Ideja CGI-a jeste da Web Server prihvati zahtev od klijenta i prosledi ga CGI-u, a CGI preusmerava zahtev na drugi program koji ga obrađuje • Osnovna mana ovog načina rada jeste da se na Web Serveru uvek otvara zaseban proces i time se opterećuje memorija Web Servera • Progress WebSpeed je tehnologija koja radi preko CGI-a • Sa razvojem Web-a, Java, PHP, a kasnije i .NET omogućavaju procesiranje zahteva klijenta preko lakih procesa – niti (threads), za koje se ne otvara zaseban proces na Web serveru SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
12
Web programiranje (5) • Web programiranje se najčešće posmatra kao: • Front-end programiranje • Back-end programiranje
• Front-end programiranje podrazumeva programiranje u 3 sloja: • Sloj strukture kojeg čini HTML - HyperText Markup Language • Sloj prezentacije kojeg čini CSS - Cascading Style Sheets • Sloj ponašanja kojeg obezbeđuje JavaScript
• Back-end programiranje podrazumeva programiranje u jednom Web serverskom programskom jeziku: PHP, Java, ASP.NET, WebSpeed Script... SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
13
Web programiranje (6) • Front-end je deo Web aplikacije koji vidi krajnji korisnik preko Browser-a (pretraživača) • Back-end je deo Web aplikacije u kojem se izvršava logika Web aplikacije, kao i komunikacija sa bazom podataka ili servisima • Kasnije će tokom prezentacije u delu Statički/Dinamički html objasniti kako se ostvaruje celokupno procesiranje zahetva od klijenta ka serveru • Opis narednih sekcija služi da bi se stvorila jasna slika o tome za šta je koji sloj zadužen, bez zalaženja u detalje kako se šta implementira SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
14
Web programiranje (7) - HTML • HTML je jezik Web-a • Sve što je izloženo na Web-u sadrži HTML • HTML je jezik koji obezbeđuje strukturu Web stranice • Svaki pretraživač u sebi sadrži HTML parser, tako da kada dođe Web stranica, on kreće odozgo ka dole i parsira .html fajl i na osnovu HTML instrukcija daje mu strukturu tog fajla i prikazuje tu strukturu • Aktuelan standard je HTML 5 • HTML 5 je veoma pogodan za strukturianje prikaza na mobilnim uređajima SEKTOR ZA INFORMACIONO KOMUNIKACIONE TEHNOLOGIJE
15
Web programiranje (8) - CSS • CSS – služi da opiše kako će se .html fajl prikazati u pretraživaču • Uvođenjem CSS-a se jasno razdvaja koji sloj ima koju svrhu: • HTML – struktura • CSS – prezentacija
• CSS na Web serveru najčešće postoji kao .css fajl mada se može direktno pisati i u .html-u se sekciji