Az ASP .NET programozási nyelv

Bevezetés

Mi az ASP?

Dinamikus weboldalak készítését lehetővé tévő osztályok és komponensek együttese. Az ASP.NET-tel a szerveren (tipikusan egy webszerver vagy Internet információs szerver) tárolt adatokból állítunk elő HTML-oldalakat, amit a kliensek könnyen megjeleníthetnek -- használjanak bármilyen webböngészőt, Netscape-et vagy mást.

Az ASP (Active Server Page) a Microsoft által jegyezett technológia, mely az IIS(Internet Information Server) kiegészítéseként lehetővé teszi dinamikus weboldalak, web alkalmazások és XML Web Service -ok írását. Az ASP oldalak írását számos beépített objektum teszi egyszerűvé. Minden objektum gyakran használt funkciók egy csoportját valósítja meg, melyek hasznosak dinamikus oldalak fejlesztésénél. ASP 2.0 -tól 6 ilyen beépített objektum van: Application, ASPError, Request, Response, Server és Session. A legtöbb ASP alkalmazást VBScriptben írták, de bármely más Active Script motor is kiválasztható.

A felhasználó tevékenységét egy eseményvezérelt modellen alapuló mechanizmus segítségével dolgozzák fel. Ha például a felhasználó egy nyomógombot megnyom, vagy egy szövegbeadási mezőt kitölt, vagy épp egy rádiógomb állapotát megváltoztatja, akkor egy ehhez tartozó eseménykezelő fog lefutni a szerveroldalon. A szerveroldalon ezeket az eseménykezelőket megírhatjuk akár C#, akár Visual BASIC.NET, akár más .NET alapú nyelveken.

A nyelvet először a Windows NT 3.5 mellé jelentették meg a Microsoft IIS részeként. Az ASP/ASP .NET lényegében nem egy különálló nyelv, hanem egy technológia melyet szinte bármilyen nyelvel együtt használhatunk (ez ugyan így egy kicsit summás, csak olyan nyelvet használhatunk melyet az ASP/ASP .NET támogat).

Jóllehet az ASP eredetileg IIS alatt fut, de lehetőség van PWS/WPWS alatti futtatásra ami a Microsoft által kiadott webserver, valamivel kevesebb funkcióval mint az IIS. Azok számára, akik nem microsoft operációs rendszereken szeretnének ASP alkalmazásokat futtatni, az InstantASP, SJSASP (Sun Java System Active Server Pages) illetve a ChiliASP áll rendelkezésre. Apache alatt is futtathatunk ASP alkalmazásokat, de jelenleg csupán a Perl támogatott nyelv.

Az ASP (egyszerűsített) elve a következő: egy asp (.NET-nél ez aspx) kiterjesztésű html fileban a <% %> közé írt (vagy bonyolultabb esetben: <%@ Language=X %>) kódot lefordítja és futtatja egyben, azaz az ASP / X nyelv egy interpretált nyelv (az ASP .NET lehetőséget ad többféle cache-elésre is, sőt arra is, hogy csak egyszer, az első futtatásnál forduljon le a kód). Erre már csak azért is szükség van, mert a szervert újra kellene indítani, ha fordított programot akarnánk használni, így ebben az esetben az interpretáció szükséges rossz.

ASP .NET

ASP .NET Web alkalmazás

A továbbiakban az ASP .NET -ről fogok beszélni, így az egyszerűség kedvéért az ASP megnevezést fogom használni. Ahol összehasonlítom az ASP .NET -et az ASP -vel ott ezt külön fogom jelezni és a megfelelő elnevezést fogom használni.

Az ASP .NET az ASP továbbfejlesztett változata .NET környezetben. Jóllehet az ASP .NET nevét az ASP -ről kapta, a kettő sokban különbözik egymástól. A Microsoft a CLR (Common Language Runtime) -re alapozva - mely minden minden Microsoft .NET alkalmazásban közös - újratervezte az ASP .NET -t. ASP .NET kódokat most már bármely, a .NET keretrendszer által támogatott nyelven írhatunk. A legtöbb alkalmazás C#, Viusual Basic .NET vagy JScript .NET nyelven íródik, de használatosak szabad forrású nyelvek is, mint a Perl vagy a Python. Az ASP .NET előnyt élvez más script alapú technológiákkal szemben, mert a szerver oldali kód egy vagy több DLL -é fordul le.

Az ASP .NET igyekszik leegyszerűsíteni a fejlesztők átállását hagyományos windows alkalmazások írásáról webes fejlesztésekre az által, hogy az oldalak fejlesztése során olyan vezérlő szerkezeteket használhatnak mint a hagyományos windows felhasználói felületeknél. Minden webes vezérlő elem, mint például egy gomb, vagy címke, nagyon hasonlóan viselkedik mint a Windows -os megfelelője: értéket adhatunk az attribútumainak, illetve reagálhatunk az általa kiváltott eseményekre.

Az ASP .NET arra buzdítja a programozókat, hogy az alkalmazásaikat az esemény vezérelt GUI paradigma alapján fejlesszék a hagyományos webes script környezetekkel szemben, mint az ASP, vagy a PHP. A keretrendszer kombinálni igyekszik létező technológiákat - JavaScript - a belső komponensekkel - Viewstate - hogy állandóságot szimuláljon egy alapvetően állapot nélküli webes környezetbe.

Flow

Az ASP .NET a .NET keretrendszert infrastruktúraként használja fel. A .NET keretrendszer egy Managed Runtime Environment -et nyújt (mint a JAVA) mely JIT -t (Just In Time) fordítást tesz lehetővé és egy kész osztálykönyvtárat bocsát rendelkezésünkre. A JIT azért előnyös mert így ha valamit átírunk a forrásunkban, nem szükséges a kódunkat újrafordítani és a webservert újraindítani, hiszen az első használatkor a fordítás automatikusan megtörténik.

Ahogy korábban említettem, az ASP/ASP .NET -ről nehéz lenne beszélni konkrét programozás nyelv nélkül, ezért a továbbiakban az ASP .NET -et a C# nyelv használatával fogom bemutatni. Nem célom a C# nyelv, illetve a .NET framework részletes ismertetése.

ASP .NET más platformokon

Meglepő de az ASP .NET alkalmazásainkat nem csak Microsoft platformokon futtathatjuk. A Mono (C# szabad forrású implementációja), Apache webszerveren mod_mono modullal teljesen képes ASP .NET web alkalmazások futtatására. Természetesen ez nem tökéletes, ha platform specifikus funkciókat használunk.

A leírás során egy általam elkészített egyszerű alkalmazáson keresztül igyekszem bemutatni az ASP .NET -et. Ez egy kvíz program, melybe miután bejelentkeztünk, kitölthetjük a tesztet, vagy megnézhetjük az addigi eredményeket. Megértéséhez a következő előismeretek szükségesek:

A .NET Technológia elemei

A .NET egy "rétegzett" architektúra. Legalsó rétege az operációs rendszer réteg, amelyből a .NET absztrahál. Erre épül a futtatási környezet, amely a szemétgyűjtésért (garbage collection), biztnságért, a Just-in-time fordításért felelős. Efölötti harmadik réteg az osztálykönyvtár réteg. Ide tartoznak a Windows Form, ASP.NET, WEB Formok, ADO.NET és a többiek.

A .NET virtuális gép

A .NET futtató-környezete a Common Language Runtime (CLR). A CLR alapja a .NET virtuális gépe, ami a CIL (Common Intermediate Language) szabványban rögzítettek szerint dolgozik. A CLR a Javával szemben előírja a CIL parancsok Just-In-Time fordítását, ezért a hatékonyság romlása itt kisebb lesz valószínűleg, mint a Java középmezőnyében.

Ahhoz, hogy a különböző programozási nyelvek együttműködhessenek, a közös utasításkészlet (CIL) rögzítésén túl a típusrendszereket is egységesíteni kellett. Ezt tették meg a CTS (Common Type System) specfikációval. Ezzel sikerült elérni olyanfajta rugalmasságot, hogy egy Visual BASIC.NET nyelven írt osztálytól C# nyelven örököljünk, C# nyelven készítsük el a származtatott osztályt.

Komponens alapú fejlesztés

A .NET támogatja a komponens alapú szoftverfejlesztést. A .NET komponenseit assemblyknek nevezik. Ezek a legkisebb olyan bináris (lefordított) programelemek, amelyek egy egységként terjeszthetők, eladhatók stb (ez a Microsoft komponens fogalmának a .NET-re vetítése).

Az assemblyk tekinthetők a COM (Component object model) továbbfejlesztésének. A különbség a COM-hoz képest itt az, hogy nincs szükség egy IDL-szerű interfészleíró nyelvre, mivel a .NET önelemzési lehetőségének köszönhetően az interfész-leírások futás közben is bárki számára hozzáférhetők.