C# jezik opće namjene
Seminarski rad:
Marin Jaram
UVOD
U seminaru će biti riječ o predstavljanju MS .NET platforme kroz sastavne
dijelove, kao neizostavnu potporu novom i modernom programskom jeziku.
Ponajviše će se opisivati okruženje u kojem bi C# morao poslužiti kao
važan alat. Naglasak će biti kroz implementaciju na Web-u. Primjer za
upoznavanje usluge web servisa će nam poslužiti kao ilustracija integriranosti
mrežnih tehnologija i kakvu podršku ima C# za implementaciju istih.
.NET Platforma
U 6. mjesecu 2000. Microsoft
predstavlja novo razvojno okruženje, MS Visual Studio sad izlazi pod novim
tržišnim imenom MS Visual Studio .NET. Promjen u imenu proizvoda je pokazatelj
tržišne orijentacije i ciljane publike. Nova strategija je privući čim
više mrežnih programera . Kao pogodnos i olakšan prijelaz sa ostalih jezika
(npr. one and only Java ) nudi novi i moderan objektno orijentiran programski
jezik C#. Programski jezik koji je u mnogočemu sličan Java sintaksi, između
ostalog bi trebao biti i brži u izvođenju instrukcija.
Razvoj je temeljen na pojednostavljenju uspješnih programskih
jezika npr. C++ ili oplemenjivanju nekih manje hvaljenih kao što je Visual
Basic.
Doseg i mogućnosti .NET su velike . Sam .NET tehnologija
se sastoji od nekoliko odvojenih cjelina. To su:
- Set programskih jezika, uključujući C# i Visual Basic .NET ; set razvojnih
alata, uključujući Visual studio .NET; gotovo sve razrede biblioteka
za implementiranje web servisa kao i web i Windows-e aplikacija; tu
je i nezaobilazni novi proizvod Common Language Runtime (CLR) za izvršavanje
objekata nastalih sa ovim alatom
- Zamjenu za SQL Servers, Exchange 2000, BizTalk 2000, u vidu .NET Entrprise
Servera koji omogućavaju specijalizirane funkcije za relacijske baze
podataka, email, B2B poslovanje itd.
- Nudi komercijalne web servise, poznate pod imenom Project Hailstorm,
besplatno.
- Podršku ne samo PC već i uređajima kao što su mobilni aparati , igrače
konzole ...
Slika 1. .NET Framework arhitektura
.NET Framework
MS .NET ne samo da je prevlada razlike među
jezicima već ih je na elengatan način integrirao. U praksi to bi značilo
da možete pristupiti već kompajliranim aplikacijam i koristiti njihove
objekte, naslijeđene razrede i rukovati sa iznimkama (eng. exceptions)
istih..NET Framework to omogućava tako što sve .NET komponente moraju
zadovoljavati uvjete specifikacije nazvane Common Type System (CTS).Kao
dodatak .NET sadrži Common Language Specification (CLS), koje nudu niz
pravila kako zadovoljiti međujezičnu integraciju. CLS također propisuje
minimalne zahtijeve da bi programski jezik bio dio .NET obitelji. Kompajleri
koji poštuju pravila CLS mogu stavarati objekte koji se međusobno mogu
nadopunjavati i integrirati.
- .NET Framework, gledano logički, je sučelje prema operativnom sustavu.
Sastoji se od nekoliko komponenti:
- Četiri programska jezika: C#, VB .NET, Managed C++, Jscript .NET,
- Comon Language Runtime (CLR), objektno-orijentirana platforma za Windows
i web razvoj, koju navedeni jezici dijele,
- Veliki broj pripadajućih razreda biblioteka, znanu kao još Framework
Class Library (FCL) .
Najvažnija komponenta .NET
Frameworka je CLR, koja osigurava okolinu u kojoj se programi izvršavaju.
CLR se sastoji od virtal machine, usporediva po mnogo čemu sa Java virtal
machine. Njezino djelovanje je da stvara objekte,radi sigurnosne provjere
nad njima, osigurava memoriju za izvršavanje, izvodi ih i kasnije oslobađa
memoriju ako se objekti smatraju izvršenima.
Slijedeći slojevi iznad CLR,
Framework Base Classes, Podaci i XML razredi , uz sloj razreda namjenjenih
za web servise, web obrazce i windowse obrazce grupno su poznati kao Framework
Class Library ( FCL).
Slika 2. FCL
FCL je jedna od najvećih ako
ne i najveća biblioteka razreda u povijesti. Sastoji se oko 5000razreda.
Sa FCL se mogu jako brzo razvijati desktop aplikacije, klijent/poslužitelj
i drugi web servisi i aplikacije.Set framework base razreda, najniži sloj
FCL, je sličan setu razreda u Javi. Ovi razredi omogućavaju osnovnu komunikaciju
ulaz/izlaz, rad sa stringovima, sigurnosne protokole, mrežnu komunikaciju,
rukovanje sa iznimkama, tekstom i sl.Sloj koji se brine o podacima i XML
razredima obuhvaća podršku za relacijske baze podataka ( SQL ) , dodatni
paket ADO.NET se brine o stalnim podacima, a XML razred vode računa o
prevođenju podataka u XML i XML pretraživanje.
Zadnji sloj prikazuje podršku za tri različite tehnologije:
- Web Servisi
- Web obrazci
- Windowse obrazce.
Web servisi sadrže podršku za distribuirane komponente
i distribuirane informacijske servise koje se nalaze sve češće kao jedan
model poslovanja na mreži. U ključena je podrška za HTTP i za SOAP protokole.Web
i Windowse obrazci omogućavaju još brži razvoj web i windowse aplikacija.
Jednostavno posložite koje komanede želite i pridjelite im kakvu radnju
pokreću.
C#
U .NET-u programi se ne kompajliraju u izvršne datoteke već u, nazovimo
to među stadij,Microsoft Intermediate Language (MSIL) datoteke, koje CLR
onda izvršava. MSIL datoteke koje C# stvara su potpuno jednake ostalim .NET
jezicima. Ključ je u tome što je CLR zajednička okoline za izvođenje rutina
pisanih bilo u C# ili u VB.NET-u.C# kod se prevodi u IL (skraćemo od MSIL)
i sprema na disk. Prilikom izvođenja programa IL datoteka se kompajlira
sa Just in Time (JIT) kompajlerom, a kod nastao kompajliranjem je razumljiv
i izvršava se na procesoru.Standardni JIT kompajleri pokreću se na zahtijev.
Također prepoznaju ako je kod u IL datotekam prekompajliran i kompajlranje
pokreću samo kad je potrebno. Ako je kod kompajliran tada aplikacije koje
ga koriste su brže.C# sastoji se od 80 ključnih riječi. Osim velike biblioteke
razreda C# ispunjava većinu zahtijeva koji se pred njega stavljaju i koje
može ispuniti jedan moderan objektno orijentiran programski jezik.
C# i WEB
Razvoj poslovnih aplikacija na mreži je jedan vid kako
ikoristiti C#. C# je u tom slučaju samo onaj koji se brine o dimamičkom
sadržaju na webu. To i nije neka novost koju nam pruža C# međutim uporabljivost
i razvoj mrežnih aplikacija bi trebala biti jača strana jer kod koji se
izvršava već je kompajliran i posluživaču manje treba da odgovori na upit..NET
tehnologija koja omogućuje razradu i razvoj web aplikacija je ASP.NET.Interakciju
korisnika sa web aplikacijom omogućavaju web obrazci. Web obrazci se izvode
kao HTML stranica, a C# stvara dinamički sadržaj koji se integrira u HTML
stranicu i prikazuje na korisničkoj strani. Web obrazci sastoje se od
korisničkog dijela ( user interface UI ) i logike koja stoji iza toga.
Logika u pozadini (eng. code-behind) reagira kada se nešto promijeni na
korisničkoj strani.
Slika 3. Korisnički zahtijev
Unos šifre da bi pristupili do e-maila, biranje datuma
kada bi rezervirali putničku kartu, klik miša ili prijelaz miša preko
selektiranog sadržaja na stranici je nekakav događaj. Taj događaj ima
svoje argumente i pridruženu logiku za obradu podataka. Potreba za logikom
koja se aktivira na događaj dolazi do izražaja i kada se pokušamo vratiti
i vidjet podatke koje smo poslali serveru, ako nismo vodili računa da
se ti podaci sačuvaju vama oni nisu dostupni.
Web aplikacija
- Izvršava se na serveru i na klijentu
- Korisnik može biti bilo tko s pristupom Internetu
- Klijentski dio mora biti napisan u nekom od jezika koji Web preglednik
podržava (HTML, JavaScript, Java).
- Ograničen pristup resursima na strani klijenta (npr. JavaScript koji
se izvršava unutar preglednika ne može čitati s korisnikovog diska)
- Samim “surfanjem” po Internetu ne možemo računalo zaraziti virusom
(paziti na programe koje se žele instalirati na računalo, sigurnosne
rupe u pregledniku)
Zašto Web aplikacije (a ne stand-alone aplikacije)?
- 30% aplikacija koje se danas izrađuju čine Web aplikacije
- Jednostavno održavanje i nadogradnja na novu verziju
- Nema instalacijske procedure na strani klijenta
- Istovremena dostupnost korisnicima širom svijeta (Internet)
- Ogromno tržište za prodaju preko Interneta (24/7)
- Izvršavaju se na bilo kojem OS-u
Nedostatci Web aplikacija
- Kompliciranija i skuplja izrada od običnih stand-alone aplikacija
- Sigurnosni problemi (neovlašten pristup aplikaciji te samom računalu
serveru, zatrpavanje prometom - DDOS)
- Potreba za posebno designiranim sučeljem (Web design)
- Korisnici sa starijim verzijama preglednika mogu imati problema pri
korištenju aplikacije ukoliko ona koristi najnovije tehnologije
- Potrebna prilagodba regionalnim posebnostima korisnika
- Zahtjevaju poznavanje mrežnih protokola i procesa koji se odvijaju
u Internet okruženju
Svaka Web aplikacija nasljeđuje klasu System.Web.HttpApplication
System.Web.HttpApplication sadrži između ostalog:
- Application - stanje Web aplikacije
- Request – HTTP zahtjev
- Response – odgovor na HTTP zahtjev
- Server – računalo poslužitelj
- Session – posjet Web aplikaciji od strane istog korisnika
- User – podaci o korisniku
Važniji događaji:
- Application_Start – kada se dohvati prva stranica Web aplikacije
- Application_End – kada se Web server zaustavi
- Session_OnStart – kada korisnik prvi puta pristupi Web aplikaciji
- Session_End – kada se korisnik odjavi ili istekne dodijeljeno mu vrijeme
aktivnosti
Web servisi ili XML web servisi
Web servisi su vrsta softverske komponente koja se može
koristiti sa udaljenog web servera, služeći se Internetom kao medijem
za dvostruku komunikaciju. Koristimo usluge komponenti i gradimo distribuirane
informacijske sustave. Komunikacij se ostvaruje sa SOAP protokolom ili
HTTP-GET i HTTP- POST metodom. SOAP ( Simple Object Access Protocol )
je komunikacijski protokol koji se između konzumenata web servisa i web
servisa prenose podaci. Podaci su u XML (Extensibile Markup Language)
formatu i omogućava prijenos kompleksnih struktura podataka. Pronaći servis
koji nam odgovara je lako uz pomoć UDDI registra (Universal Description,
Discoveri and Integration ), unutar kojega pojedinci i kompanije registriraju
svoje web servise. WSDL (Web Services Description Language ), je poseban
metajezik, baziran na XML-u, a cilj mu je opisati lokaciju, funkcionalnost
i komunikacijski protokol pojedinog web servisa u obliku standardnog proxy
objekta, kako bi ga programer mogao lako imlementirati i koristiti unutar
svoje aplikacije. DISCO (discovery)je lista WSDL dokumenata koja grupira
pojedine web servise, također je standardizirana u XML-u.
Slika 4. Primjer distribuiranog
informacijskog servisa
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="ZaPrezentaciju">Točno vrijeme: 18.1.2004
18:30:04</string>
Slika 5. Testiranje Web servisa
i odgovor u XML-u
Proxy class
Budući da .NET izvrsno razumije SOAP, to mu omogućuje
da na transparentan način, u pozadini, rezultirajuće podatke spremi u
odgovarajuće tipove podataka unutar .NET aplikacije koja troši web servis.
Prijenos podataka se vrši pomoću SOAP-a, a proces XML serijalizacije omogućuje
nam da pomoću proxy klase u kodu host aplikacije instanciramo web servis
kao objekt, te da pozivamo njegove metode i property-e. Rezultat možemo
spremiti u lokalne varijable te ih dalje u kodu koristiti i prema potrebi
prikazati. Proxy klasa (proxy objekt) je lokalna klasa koja pruža isti
interface kao i web servis.
.NET razvojna okolina
Ako nakon svega postoji želja za .NET programiranjem
(kreiranje i testiranje web servis, obrazaca i windowse obrazaca) potrebno
je imati barem Windowse 2000 ili XP Profesional sa instaliranim Internet
Information Serverom ( IIS ). .NET Framework ( po mogućnosti SDK)može
se besplatno 'skinuti' sa MS sita (http//:www.microsoft.com/downloads)
za rad sa podacima potrebno je još i MS SQL 2000 server ili MSDE. MSDE
je data engine koji koristi i sam SQL Server, ali bez administracijskih
alata i sučelja. Bez IIS i SQL Servera se može besplatno raditi i sa alternativom,
WebMatrix. To je Microsoftovo potpuno besplatno razvojno okruženje za
ASP.NET aplikacije i XML web servise (www.asp.net/webmatrix).
Zaključak
Gdje tu sam C# dolazi do izražaja vidljivo je u odvajanju
programske logike iz sadržaja web stranice (programski kod se ne interpretira
već izvršava ), veliko integriranje sa ostalim jezicima .NET obitelji
i odlično nadopunjavanje između različitih zahtijeva.
Literatura
http://msdn.microsoft.com/downloads/default.aspx
http://www.csharphelp.com/books.html
http://www.dotnetjunkies.com/about.aspx
Dodatak: primjer za seminar