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