Ez a cikk egy sorozat első része, melynek célja bevezetni az Olvasót az ASP.NET webalkalmazások világába. Természetesen távol áll tőlem a szándék, hogy teljes egészében és minden részletre kitérően tárgyaljam az ASP.NET alkalmazások, gyakorlatilag végtelennek számító, témakörét. Sokkal inkább arról van szó, hogy megjelenési formájához alkalmazkodva, ez a cikksorozat egy tudás- és ismeretbázist kíván nyújtani annak, aki megismerni kívánja a webalkalmazások lehetőségeit. Ez a cél határozta meg a cikksorozat megírásakor figyelembe vett további szempontokat is.

Nevezetesen arról van szó, hogy a cikksorozatban:

  • egy olyan fejlesztőeszközt fogok leírni és használni, amit mindenki kevés befektetéssel megszerezhet. Az ASP.NET Web Matrix Projectről, vagy röviden a WebMatrixról van szó, amit mindenki ingyen letölthet;
  • programozási nyelvként a három lehetőség közül: VB.NET, C#, J#, az elsőt választottam, mert ez áll legközelebb a legtöbb klasszikus ASP programozóhoz, a cikksorozat feltételezett elsődleges olvasóihoz;
  • inkább a példákra helyezem a hangsúlyt, mint az elméletre, abból az elvből kiindulva, hogy semmi sem olyan hasznos, mint egy jó példaalkalmazás. Aki elmélyülni kíván az ASP.NET kérdéseiben, az természetesen nem elégedhet meg egy ilyenforma cikkel és előbb-utóbb el kell olvasson egy idevágó könyvet;
  • a cikksorozat elolvasása után az Olvasó képes lesz legalább egyéni használatra bonyolultabb webalkalmazásokat is előállítani és könnyen vághat neki egy ASP.NET-tel foglalkozó könyv olvasásához.

Mit kell tudjon az cikksorozat ideális Olvasója? Az olvasó részéről feltételezem hogy:

  • folyékonyan érti és kódolja a HTML jelölő nyelvet (markup language) és fogalma van az XML jelölő nyelvről;
  • fogalma van a .NET technológiáról és az objektumorientált programozásról;
  • fogalma van az adatbázis kezelésről, legalább MS Access szinten;
  • legalább egy programozási nyelven professzionálisan programoz, de ez nem kell feltétlenül a VB.NET legyen. Ez azt jelenti, hogy programozási kultúrájával könnyen követ egy ismeretlen programozási nyelvben megfogalmazott és bőven kommentált kódot.

Mire van szükségünk? Rendszerünk a következő konfigurációval kell rendelkezzen:

  • Microsoft Windows 2000 Professional vagy Server (SP 2) vagy
  • Microsoft Windows XP Professional vagy
  • Microsoft Windows Server 2003

Rendszerünkön jelen kell legyen a Microsoft .NET Framework Redistributable v.1.1. (a .NET Framework SDK v.1.1 nem feltétlenül szükséges). A .NET Framework Redist 1.1 eleve telepítve van minden Windows Server 2003 rendszeren. A másik két rendszer esetében a Windows Update Service segítségével telepíthető vagy a Microsoft webhelyéről ingyen letölthető. Az itt található dotnetfx.exe állomány terjedelme 23 MB és természetesen tartalmazza az ASP.NET 1.1 csomagot is.

Fejlesztőrendszerünket az ASP.NET hivatalos honlapjáról tölthetjük le. Az ingyen letölthető telepítő terjedelme 1,3 MB.

Ezzel a két letöltéssel, illetve telepítéssel mindent, amire szükségünk van felraktunk a gépünkre. Adatvezérelt (data driven) webalkalmazásokat már ezekkel az eszközökkel is készíthetünk, ha megelégszünk MS Access adatbázissal. Ha valaki SQL Server adatbázisgépet akar használni, annak semmi akadály sincs: az ASP.NET mindent tartalmaz, ami erre szükséges, ha hozzáférésünk van egy SQL Server-hez. Ha ezzel nem rendelkezünk, akkor szintén ingyen az előbbi helyről letölthetjük az MSDE-t (Microsoft SQL Server 2000 Desktop Engine), ami egy fejlesztési célokat szolgáló az SQL Server-rel kompatibilis "pehelysúlyú" adatbázisgép. Az MSDE csomag viszont már 70 MB. Ebben a cikksorozatban csak MS Access adatbázist fogunk használni, mivelhogy ez kiválóan elegendő ahhoz, hogy az adatvezérelt webalkalmazások alapjait megismerjük.

A .NET Framework Redist és a WebMatrix telepítése rendszerint problémamentesen folyik le. Indítsuk el a WebMatrixot és nézzünk körül a fejlesztőrendszer felhasználói felületén. Nem fogom részletesen leírni mi minden található itt. Aki már látott vizuális fejlesztőeszközt, az könnyen rátalál és felismeri a legfontosabb elemeket. A WebMatrix sajátos elemeit pedig használatuk alkalmával fogom röviden ismertetni.

Természetesen szükségünk van egy böngészőre is. Abból indulok ki, hogy a rendszerünkön jelen van az Internet Explorer 5.5 vagy egy újabb verzió. No meg egy webszerverre is szükségünk van. Az említett rendszerek alapváltozatban is tartalmazzák az Inernet Information Service (IIS) 5.0 vagy újabb verzióját. Annak ellenére, hogy nem fogjuk használni, jó megjegyezni, hogy a WebMatrix egy webszervert is tartalmaz, a Cassini vagy MS ASP.NET Web Matrix Server név alatt ismert webszervert.

Minden webfejlesztő természetes kívánsága, hogy "élesben" is lássa művét. Sajnos a webhosting és különösen a .NET hosting nem olcsó portéka. Szerencsére legalább egy ingyenes ASP.NET hoster létezik: Brinkster offers Cloud Servers, Infrastructure as a Service (IaaS), Hosted Desktop, DDOS Mitigation,. A freeasphost.com - Portail d'informations Ce site est en vente! is ingyen biztosít hostolást, de egy eleve regisztrált domain-t követel.

A menetrendünk, nagy vonalakban és nem feltételnül ebben a sorrendben, a következő lesz:

  • A WebForm és az alapvezérlők
  • Érvényesítő (ellenőrző) vezérlők
  • "Gazdag" vezérlők
  • Adatkezelő vezérlők
  • Állományműveletek
  • XML és a web
  • Felhasználói vezérlők
  • Grafika
  • HttpHandler, HttpModul, Global.aspx és Web.config
  • Webszolgáltatások
  • Tracing, debugging, state és társai
  • Biztonság és hitelesítés
A példaalkalmazásokat természetesen online kipróbálhatók lesznek, a kód pedig letöltésre hozzáférhető lesz.

Ha a szükséges letöltések és telepítések minden további nélkül megtörténtek és gondolom a WebMatrix fejlesztőeszköz felhasználói felületével is közben megbarátkozott a kedves Olvasó úgy, hogy máris elkezdhetjük ismerkedésünket az ASP.NET-tel.

Az ASP.NET lapok előállítása a WebMarixszal

Indítsuk el a WebMatrixot és az automatikusan megjelenő Add New File ablakot zárjuk be. A Workspace panelbe válasszuk ki a merevlemezt és hozzunk létre egy megfelelő helyen egy WebMatrix nevű mappát. Ezen a mappán belül hozzunk létre még két mappát 02, illetve utils névvel. Kattintsunk az egér jobboldali gombjával a 02 mappára és válasszuk ki a megjelenő környezetmenüből (context menu) az Add New File... menüpontot. A megjelenő párbeszédablak jobboldalán válasszuk ki a (General) sablont, az ablak baloldali részében az ASP.NET Page ikont és nevezzük el az új állományt HelloWebMatrix.aspx-nek. Állítsuk be a nyelvet Visual Basic.Net-re és nyomjuk meg az OK gombot. A WebMatrix létrehoz egy minimális ASP.NET weblapot, egy úgynevezett sablont (template), és meg is nyitja a szerkesztőben.

Létrehozunk egy új ASP.NET lapot

1. ábra Létrehozunk egy új ASP.NET lapot

Mint látjuk, a szerkesztőnek négy megjelenési formája van, amit a szerkesztőablak alján elhelyezet fülekkel (tab) állíthatunk be. A szerkesztő négy megjelenésének négy munkamód felel meg: Design, HTML, Code és All. A Design szerkesztőben egyelőre nem látunk semmit. Az All szerkesztő megmutatja a lap teljes kódját, amit az alábbi ábrán láthatunk:

Az automatikusan generált ASP.NET lap

2. ábra Az automatikusan generált ASP.NET lap

A forráskódot, annak ellenére, hogy nagyon egyszerű, három részre oszthatjuk. Az alsó részben felismerhetünk egy minimális HTML lap kódrészletet. Itt csak a HTML <form> elem (tag) runat attribútuma lehet ismeretlen. Erre még visszatérek.

A forráskód első sora egy ASP.NET direktívát (directive) tartalmaz, pontosabban a @ Page direktívát. Ez a direktíva az ASP.NET lapok alapértelmezett direktívája. Rajta kívül még van egy pár. Ezek egy részével később fogunk találkozni. A direktívákat a @ karakterrel kezdjük, utána következnek a direktíva neve és tetszőleges sorrendben a direktíva attribútumai az értékükkel. Az egész direktívát <% és %> karakterekkel választjuk el a kód többi részétől, az esetleges további direktíváktól is. Más szóval, <% és %> között csak egy direktíva lehet.

A @ Page direktíva az ASP.NET lapok alapértelmezett direktívája, ami azt jelenti, hogy akár el is hagyhatjuk. A @ Page direktíva Language attribútuma a használt programozási nyelvet határozza meg, esetünkben a VB.NET-et. A VB.NET egyébként az ASP.NET alapértelmezett nyelve, ezért ezt az attribútumot is elhagyhattuk volna.

A direktíva és a HTML kódrészlet között, helyezkedik el esetünkben a <script> elem. Azért mondom, hogy esetünkben, mert elvileg a direktívák bárhol szerepelhetnek egy lapon beül, hagyományosan azonban a lap elejére helyezzük el. A <script> elemnél is felfedezhetjük a <form> elem esetében észrevett runat attribútumot, ugyanazzal az értékkel: "server". Erre többször még visszatérek, de már most érdemes megjegyezni, hogy a runat attribútum nem is vehet fel más értéket. A <script> elem egy másik attribútuma a language attribútum, amivel megadhatjuk a <script> elemben elhelyezett kód nyelvét. Ha elhagyjuk, akkor az ASP.NET feltételezi, hogy a használt nyelv a @ Page direktíva Language attribútumával megadott nyelv. Itt gyorsan megjegyzem, hogy a VB.NET nem tesz különbséget kis- és nagybetű között. Most már világos, hogy a <script> elembe helyezzük majd az alkalmazás logikáját implementáló VB.NET kódot. VB.NET kód más helyen is előfordulhat egy lapon belül, de erről majd később lesz szó.

Egy kis elmélet

Mielőtt lapunkat valamilyen minimális kóddal kiegészítenénk, jegyezzük meg, hogy az ASP.NET alkalmazáshoz tartozó állományok egyik típusa a közönséges ASP.NET lapok, mint a jelenlegi példában is látjuk. Ezek kiterjesztése (habár elméletileg akármi lehet, ha egy kicsit „hozzásegítünk”) .aspx. Várjunk még egy keveset a kóddal, mert lesz elég alkalom rá. Tisztázzunk egy pár kérdést, ami azoknak lesz majd hasznos, akik most találkoznak először a webalkalmazásokkal.

Mi egy webalkalmazás és hogyan működik? Erre a kérdésre próbálom most a válasz dióhéjba foglalni.

Ha egy hasonlattal kívánok élni, akkor azt mondhatom, hogy egy webalkalmazás két egyenlőtlen, vagy legalábbis nagyon különböző fél párbeszéde. Az egyik fél korlátolt ismeretekkel rendelkezik, csak egy nyelvet beszél: csak „HTML”-ül tud. Ez a böngésző vagy az ügyfél(alkalmazás) (client (application)). A másik fél sokkal többet tud, és egy jó pár nyelvet anyanyelvi szinten sajátított el. Ez a webszerver vagy röviden a szerver, azaz a kiszolgáló(alkalmazás) (server (application)). A párbeszédet a két fél között mindig a böngésző kezdeményezi. Rendszerint dokumentumokat kér a szervertől, pontosabban weblapokat. A szerver ezeket készségesen el is küldi az ügyfélnek. A minket érdeklő ASP.NET, ami a szerver „tudásának” egyik szeletét képezi, akkor kezd szerepet játszani, amikor a böngésző olyan lapot kér a szervertől, ami nem „HTML”-ül van írva. Ilyenkor a szerver lefordítja a lapot a böngésző által ismert HTML jelölő nyelvre. Miként történik ez? A hagyományos HTML lapok, a HTML jelölő nyelv lényegéből fakadóan, nem tartalmazhatnak programlogikát. Az ASP.NET lapok, amelyeket több valódi objektumorientált nyelven fogalmazhatunk meg, annál inkább. Ez nagyjából ugyanígy volt az ASP.NET bevezetése előtt is. Már akkor is léteztek a szerveren a HTML lapokon kívül más lapok is, mint scriptek, szűrők, stb. A lényeges különbség az ASP.NET bevezetésével abban áll, hogy az ASP.NET programozási nyelvei tökéletesen objektumorientált nyelvek, így ezek képesek olyan objektumokat előállítani, amelyek bármelyik HTML elemet képviselni tudnak. Sőt, más objektumokat is, speciális funkcionalitással is létrehozhatnak, melyek böngészőn belüli megjelenése HTML elem(ek)ből áll. Ezeket nevezzük szerverodali vezérlőknek (server-side control).

Egy szerveroldali vezérlő tehát egy objektumorientált nyelven definiált osztály példánya vagy objektuma a szerver memóriájában. Ha a böngésző egy ASP.NET lapot kér a szervertől, amiben HTML elemek mellett az objektumorientált nyelven megfogalmazott kódrészletek is vannak, akkor a szerver végrehajtja a kódot, létrehozza a benne definiált objektumokat, ezek elvégzik a rájuk bízott feladatokat és az eredményt HTML kódban adják meg. A szerver az így nyert HTML kóddal kiegészíti a lapban levő HTML kódot. Az eredmény egy „vegytiszta” HTML kód. Ezt küldi vissza a szerver a böngészőnek.

Nagyon lerövidítve és nagyon leegyszerűsítve ennyit lehet egy szuszra a böngésző és szerver közötti, ASP.NET alapú párbeszédről elmondani. Ebből egyenesen következtetni lehet, hogy az ASP.NET megismerése elsősorban (de nem kizárólag) az ASP.NET osztályok, illetve objektumok megismerését jelenti. Köztük pedig egy központi szerepet játszanak a HTML elemeket közvetlenül vagy közvetve képviselő osztályok – az ASP.NET vezérlők.

Egyelőre ennyi elég az elméletből. A következő részben elkészítjük az első működő ASP weblapunkat.