Bejelentkezés

E-mail: 
Jelszó: 
| Regisztráció | Jelszó? |
 



Menü

.Net világ havilap 2004. június - 5. oldal

ASP.NET programozás alapjai

E  cikk  azoknak  szól,  akik  még  nem  készítettek  ASP.NET-ben  alkalmazást,  de  szeretnének  megismerkedni  az  alapvető  lépésekkel,  melyek  az  ASP.NET-ben  történő  programozáshoz  szükségesek.

A  mellékelt  AspNetUnderlying  mappában  lévő  példaprogram  megnyitása  előtt  szükséges  egy  AspNetUnderlying  nevű  virtuális  mappa  létrehozása  az  IIS-ben.  Ennek  legegyszerűbb  módja,  ha  a  mellékelt  mappán  jobb  egérgombbal  kattintva  a  Tulajdonság  menüpontot  választjuk,  majd  a  megjelenő  ablak  Webmegosztás  lapján  engedélyezzük  a  mappa  megosztását.ASP.NET  bevezetőAz  ASP.NET  az  Active  Server  Pages  (ASP)  új  verziója,  mely  igen  nagymértékű  továbbfejlesztése  annak,  olymértékben,  hogy  szinte  össze  sem  hasonlítható.  Az  ASP.NET  a  .Net  Framework-re  épül,  annak  osztályait  használja,  így  bármely  .Net-es  nyelv  alatt  programozható,  melyből  jelenleg  már  több  mint  25  áll  rendelkezésre  (C#,  Visual  Basic.NET,  Delphi,  JScript.NET,  stb.)Egy  ASP.NET-es  alkalmazást  megírhatunk  akár  egy  Notepad-del  is,  mivel  az  általa  használt  ASPX  lapok  és  a  hozzá  tartozó  XML  alapú  konfigurációs  állományok  egyszerű  szöveges  állományok.  Persze  azért  "kissé"  gyorsabban  haladunk  a  fejlesztés  folyamatában,  ha  valamivel  komolyabb  programfejlesztői  környezetet  használunk  a  Notepad-hez  képest,  mint  például  a  Visual  Studio.NET.  Ennek  segítségével  vizuálisan  szerkeszthetjük  a  weblapjainkat  (WYSIWYG),  drag  and  drop-pal  hozhatjuk  létre  annak  tartalmát  és  rögtön  meg  is  írhatjuk  hozzá  a  programkódot,  melyet  futtathatunk  is  és  a  hibakeresés  (DEBUG)  is  elvégezhető  e  környezetből.  A  kész  alkalmazások  publikációja  is  könnyedén  megoldható  a  Visual  Studio.NET  fejlesztői  környezetet  használva.A  Visual  Studio.NET  Enterprise  változata  még  tovább  megy  és  olyan  eszközöket  ad,  melyek  segítségével  koordinálhatjuk  fejlesztői  csapatunk  munkáját  (teams  developing),  illetve  tervezhetjük,  analizálhatjuk  a  munkafolyamatot,  adatbázis  modelleket,  mérhetjük  a  hatékonyságot,  stabilitást.A  .NET  Framework  1.1  verziójában  található  több  mint  4500  osztály  segítségével  bármilyen  feladatot  meg  tudunk  oldani  az  ASP.NET-es  alkalmazásunkból.  Ezen  osztályokat  természetesen  bármely  .Net-es  programnyelvből  egységesen  ugyanúgy  érhetjük  el  és  használhatjuk  fel.  Ha  a  .NET  Framework  osztályai  között  nem  találnánk  mégsem  olyat,  mely  megfelel  speciális  igényeinknek,  akkor  készíthetünk  saját  magunk  is  újakat,  vagy  integrálhatunk  a  rendszerünkbe  mások  által  készített  komponenseket  is.Az  ASP.NET-es  alkalmazásban  az  egyes  web  oldalakat  ún.  Web  Form-okon  állíthatjuk  össze.  A  Web  Form  tetszőleges  kontrolokat  tartalmazhat,  melyek  megvalósítják  a  szükséges  felhasználói  interfészt  és  tartalmazzák  a  szükséges  funkciókat.  Ezeket  a  kontrolokat  akár  tovább  is  fejleszthetjük  saját  igényeink  szerint,  vagy  készíthetünk  teljesen  újakat  is.A  Windows  2003  szerverben  megjelent  IIS  6  új  modellt  alkalmaz  az  egyes  folyamatok  futtatására,  melyeket  most  már  különálló  alkalmazáskészletekbe  szervezhetjük,  így  egymástól  függetlenül  futhatnak,  nem  befolyásolhat  egy  hibás  folyamat  egy  másikat.  Az  ASP.NET  alkalmazás  Windows  2003-on  már  alapértelmezetten  ebben  a  módban  fut.Ha  ASP.NET-es  alkalmazást  szeretnénk  használni,  akkor  minimálisan  Windows  2000-re  (Professional,  Server,  vagy  Advanced  Server)  lesz  szükségünk.  Használhatjuk  természetesen  Windows  XP-n,  Windows  2003  szervereken  és  a  jövőben  megjelenő  újabb  operációs  rendszereken  is.  Ha  tehát  ASP.NET-ben  készítenénk  webes  alkalmazást,  akkor  Web  Form-okat  kell  használnunk.  Minden  Web  Form  egy-egy  oldala  lesz  webhelyünknek.  A  Web  Form  egy  ASPX  állományba  kerül,  melyhez  tartozhat  a  háttérben  programkód  is.  Például  C#-ot  használva  egy  CS  kiterjesztésű  állományba.  A  Web  Form-on  helyezhetjük  el  a  szükséges  kontrolokat,  melyeket  akár  programból,  dinamikusan  is  létrehozhatunk.  BiztonságA  biztonság  kérdése  minden  alkalmazás  esetén  kritikus  kérdés,  mely  még  fontosabbá  válik,  ha  ez  az  adott  program  az  interneten  fut.  Az  ASP.NET-es  programok  esetén  könnyedén  konfigurálható  és  kezelhető,  hogy  milyen  módon  érhető  el  az  egyes  Web  Form-ok  tartalma  a  felhasználók  számára.  A  .NET  Framework  és  az  IIS  gondoskodik  minden  szükséges  biztonsági  kérdésről,  nekünk  csak  alkalmaznunk  kell  azokat.  ÁllapotkezelésWebes  alkalmazások  fejlesztésekor  nagy  különbség  van  a  hagyományos  asztali  alkalmazásokhoz  képest.  Teljesen  más  szemléletmódra  van  szükség  a  program  fejlesztése  során,  mivel  az  alkalmazást  használó  személy  nincs  állandó  kapcsolatban  a  programunkkal  a  webes  szoftver  esetén,  nem  úgy,  mint  egy  asztali  programnál.  Webes  alkalmazás  esetén,  amikor  a  felhasználó  eljut  webhelyünkre,  akkor  aktivizálódik  programunk  és  szolgáltatja  a  megfelelő  tartalmat,  de  ezzel  be  is  fejeződik  a  klienssel  való  kapcsolat,  hiszen  lehet,  hogy  továbbáll  és  más  webhelyek  felé  veszi  az  irányt.  Ha  mégsem  így  lenne,  hanem  mondjuk  a  mi  weblapunkon  kattint  egy  újabb  linkre,  akkor  ez  egy  újabb  kérés  lesz  a  webes  alkalmazásunk  felé.  E  két  kérés  között  a  klienssel  való  kapcsolattartás  teljesen  megszűnt,  mégis  szükséges,  hogy  valami  módon  összefüggésbe  hozható  legyen  egymással.  Egyszerű  példa  erre  az,  hogy  ha  egy  webáruházban  a  felhasználó  betesz  valamit  a  kosárba,  akkor  a  következő  kérése  esetén  is  "tudnunk"  kell,  hogy  mi  került  már  a  kosarába,  vagyis  kezelnünk  kell  az  aktuális  állapotát,  annak  ellenére,  hogy  nem  folyamatos  a  kapcsolat  programunk  és  kliens  böngészője  között.  Az  állapot  kezelésre  az  ASP.NET-ben  számos  lehetőség  adott,  melyet  aktuális  igényeink  szerint  egyszerűen  felhasználhatunk  programjainkban.AdatelérésMinden  alkalmazásnak  szüksége  van  adatokra,  nem  kivétel  ez  alól  az  ASP.NET-es  program  sem.  Az  adatelérésre  is  számos  lehetőség  kínálkozik  ASP.NET-ből  is.  A  .NET  Framework  osztályai  révén  bármilyen  adatbázishoz,  vagy  adatforráshoz  kapcsolódhatunk  és  abból  adatokat  olvashatunk,  lehet  az  MS  SQL,  Oracle,  Access,  vagy  bármilyen  ODBC  adatforrás.TeljesítményFontos  kérdés  alkalmazásunk  terhelhetősége,  hiszen  a  weben  keresztül  akár  egy  időben  több  ezren  is  küldhetnek  kéréseket  programunk  felé.  Az  ASP.NET-es  alkalmazások  rendkívül  hatékonyan  kezelik  a  kéréseket,  Cache-t  használva  a  válaszok  gyors  kiszolgálásához.  A  Cache  használatát  előírhatjuk  programból  egy  Web  Form-ra,  vagy  annak  egy  részére,  de  akár  egy  SQL  lekérdezés  eredményét  is  tárolhatjuk,  hogy  a  jövőben  ne  kelljen  az  adatbázisunkhoz  fordulni,  hanem  memóriából  hozzáférhessünk  a  szükséges  adatokhoz.  Az  ASP.NET-es  lapok  dinamikusan  kerülnek  lefordításra  az  első  kérés  beérkezése  esetén.  Ekkor  a  Common  Language  Runtime  (CLR)  futási  időben  elkészíti  a  menedzselt  ASP.NET-es  laphoz  tartozó  kód  natív,  futtatható  kódját,  mely  kiszolgálja  a  kérést.A  gyakorlatMellékelt  példánkban  egy  igen  egyszerű  ASP.NET-es  alkalmazást  készítünk,  mely  bekér  a  felhasználótól  két  számot  és  azok  összegét  visszaírja  a  weblapra.  Új  ASP.NET  alkalmazás  létrehozásaEgy  új  ASP.NET-es  alkalmazás  készítéséhez  válasszuk  a  File  -  New  -  Project  menüpontot  a  Visual  Studio.NET-ben.  A  megjelenő  ablakban  keressük  elő  az  ASP.NET  Web  Application  elemet.  A  létrehozás  helyét  a  Location  mezőben  adhatjuk  meg.  Ez  itt  egy  web  cím  kell,  hogy  legyen.  Alapértelmezésben  a  http://localhost  címen  belül,  vagyis  a  saját  gépen  hozhatjuk  létre  webes  alkalmazásunkat.  Ezt  a  fejlesztés  végén  bármelyik  webszerverre  publikálhatjuk.  Megfelelő  engedélyek  mellett  arra  is  van  lehetőség,  hogy  közvetlenül  egy  másik  gépen  lévő  webhelyen  hozzuk  létre  a  projektet.  Ilyenkor  a  localhost  nevet  írjuk  át  az  adott  web  címre.  Nem  javasolt  azonban  olyan  helyet  használni,  mely  egy  az  internetre  csatlakoztatott  webszervert  címez  meg.  Biztonsági  okokból  helyesebb,  ha  a  fejlesztést  saját  gépünkön,  vagy  a  helyi  hálózat  egyik  nem  publikus  szerverén  végezzük  el,  majd  a  kész  munkából  csak  a  szükséges  állományokat  publikáljuk  forráskód  nélkül  az  internetre.Az  OK  gombra  történt  kattintást  követően  létrejön  az  új  projekt  számos  állománnyal.  Ebből  számunkra  legfontosabb  most  a  WebForm1.aspx  lesz,  mely  webhelyünk  első  Web  Form-ját,  vagyis  weboldalát  tartalmazza.  Ehhez  az  állományhoz  tartozik  egy  WebForm1.aspx.cs  állomány  is,  melyben  a  Web  Form-unk  forráskódja  található.Kis  kitérővel  nézzük  meg,  hogy  még  milyen  további  állományokat  kapunk.  Web.configFontos  szerepet  kap  majd  későbbi  munkáink  során  a  Web.config  állomány,  mely  egy  XML  nyelvre  alapozott,  konfigurációs  beállításokat  tartalmazó  állomány.  Ezen  keresztül  írhatjuk  le  programunk  alapvető  beállításait,  vagy  akár  saját  konfigurációs  adatokat  is  megadhatunk.  Web.config  állomány  több  is  tartozhat  egy  alkalmazáshoz.  Erre  akkor  van  szükség,  ha  bizonyos  weblapjainkhoz  más  jellegű  konfigurációt  szeretnénk  hozzárendelni.  Például  alapértelmezett  esetben  minden  weblapunkhoz  hozzáférhetnek  az  internetes  felhasználók.  Ha  szeretnénk  korlátozni,  hogy  egy  almappán  belüli  weblapokhoz  csak  azonosított  felhasználók  férjenek  hozzá,  akkor  itt  elhelyezhetünk  egy  újabb  Web.config  állományt,  melyben  előírhatjuk  ezt.Global.asax  és  Global.asax.csA  Global.asax  lap  egy  olyan  helye  programunknak,  melyre  elhelyezhetünk  különféle  komponenseket  és  hozzárendelhetünk  tetszőleges  kódot  is.  Az  itt  létrehozott  funkciók  és  objektumok  globálisak  lesznek  az  alkalmazásunkra  nézve.  Például  találunk  itt  olyan  eseménykezelő  függvényeket,  melyek  az  alkalmazásunkkal  függnek  össze,  mint  például  az  Application_Start  függvény,  mely  akkor  kerül  meghívásra,  mikor  alkalmazásunk  elindul,  vagy  az  Application_BeginRequest,  mely  egy  új  kérés  beérkezésekor  fut  le.  Ezen  a  ponton  tehát  a  programunkra  globális  hatással  lévő  tennivalókat  láthatjuk  el.AssemblyInfo.csEz  az  állomány  minden  .Net-es  alkalmazás  része,  így  nem  maradhat  el  ASP.NET  programunkból  sem.  Az  állományban  a  programunkkal  kapcsolatos  információk  adhatók  meg,  mint  például  a  verziószám.AspNetUnderlying.vsdiscoA  vsdisco  kiterjesztésű  állomány  egy  XML  alapú  leírás,  mely  alkalmazásunkkal  kapcsolatos  információkat  tárol.WebForm1.aspxTérjünk  most  vissza  a  WebForm1.aspx  állományhoz  és  készítsük  el  a  számokat  összeadó  példánkat.  Mellékelt  példa  fejlesztési  időbenFeladatunk  megvalósításához  szükségünk  lesz  két  TextBox-ra  a  számok  beviteléhez,  egy  Button-ra,  melyre  kattintva  az  összeadás  elvégezhető  és  egy  Label-re,  melyre  az  eredményt  írjuk  ki.  Ezeket  Drag  and  Drop-pal  húzhatjuk  a  WebForm1-re  a  ToolBox  ablak  Web  Forms  lapján  található  kontrolok  közül  kiválasztva  a  szükségeseket.Egy  dupla  kattintással  a  Button-on  létrehozhatunk  hozzá  egy  eseménykezelőt,  annak  Click  eseményéhez.  Amikor  ez  lefut,  akkor  kell  a  két  megadott  számot  összegeznünk.  A  művelet  elvégzéséhez  a  TextBox-okban  lévő  számokat  konvertálnunk  kell  számmá  a  Convert  osztály  ToInt32  függvényének  meghívásával.  Az  eredményt  a  Label1-re  írjuk  vissza.        private  void  Button1_Click(object  sender,              System.EventArgs  e)        {            Label1.Text  =  (Convert.ToInt32(TextBox1.Text)  +                  Convert.ToInt32(TextBox2.Text)).ToString();        }Ezzel  példánk  elkészült,  futtathatjuk  is.  A  futtatáskor  elindul  az  Internet  Explorer  és  automatikusan  betöltődik  a  projektünk,  ahol  rögtön  ki  is  próbálhatjuk.  A  projektünk  fordításakor  létrejön  egy  DLL  állomány,  melyben  az  ASPX  lapokhoz  tartozó  kód  található.A  böngészőben  megfigyelhető,  hogy  milyen  cím  alatt  érhető  el  az  alkalmazás.  Feltételezve,  hogy  a  helyi  gépen  (localhost)  hoztuk  létre  programunkat  AspNetUnderlying  néven,  így  a  cím  az  alábbi  lesz:http://localhost/AspNetUnderlying/WebForm1.aspxEgy  nagyobb  alkalmazást  készítve  valószínűleg  nem  csak  egy  Web  Form-ot  használunk  majd,  sőt  valószínűleg  azokat  sem  egy  mappában  helyezzük  el.  Ha  például  létrehozunk  egy  Sales  nevű  mappát  és  abba  elhelyezünk  egy  Subscription.aspx  lapot,  akkor  annak  címe  az  alábbiak  szerint  alakul:http://localhost/AspNetUnderlying/Sales/Subscription.aspxHa  publikáljuk  programunkat  egy  valós  webhelyre,  akkor  ott  már  az  alábbi  módon  lesz  címezhető  az  oldal:http://www.DotNetWorld.hu/Sales/Subscription.aspxHibakezelés  Az  alapértelmezett  hibakezelőMivel  jelen  példánkban  nem  alkalmaztunk  semmilyen  hibakezelést,  így  felmerülhet  a  kérdés,  hogy  mi  is  történik  hiba  esetén?  Ha  például  nem  számot  hanem  szöveget  írunk  valamelyik  TextBox-ba  máris  hiba  keletkezik,  mivel  a  szöveget  nem  tudja  majd  a  Convert  osztály  számmá  alakítani.  Hibakezelés  hiánya  esetén  az  ASP.NET  alapértelmezett  hibakezelője  fut  le,  mely  generál  számunkra  egy  olyan  web  oldalt,  amelyen  megkapjuk  a  hiba  leírását  és  látható  lesz  a  hibát  okozó  forráskód  is.  Ezen  információk  alapján  javíthatjuk  alkalmazásunkat.Amint  az  látható,  sok  olyan  információ  megjelenik  a  hibaüzenetben,  mely  a  fejlesztő  számára  fontos  lehet,  viszont  kényes  adatok  is  napvilágra  kerülhetnének  így  az  interneten  keresztül  a  végfelhasználók  számára.  Például  láthatóvá  válna  a  forráskódunk  egy-egy  részlete.  Ennek  érdekében,  hacsak  nincs  külön  engedélyezve,  akkor  a  távoli  gépen  futtatott  program  esetében  nem  a  fenti  hibaüzenet  jelenik  meg  a  böngészőben,  hanem  csak  egy  hibajelezés,  valamint  az,  hogy  nincs  engedélyezve  a  távoli  hibakeresés.  Így  ha  a  mellékelt  példánál  maradva  hibakezelés  nélkül  publikálnánk  egy  valós  webszerverre  programunkat,  akkor  is  biztonságban  lenne  kódunk,  ha  hiba  történne.PublikálásNézzük  most  miként  publikálhatjuk  az  elkészült  alkalmazásunkat  az  internetre.  A  mód  igen  egyszerű,  akár  manuálisan  is  megtehetjük  azt,  de  készíthetünk  pár  kattintással  egy  telepítő  csomagot  is.  Manuális  esetben  egyszerű  FTP-vel  feltölthetjük  webhelyünkre  a  szükséges  állományokat,  melyek  számára  létrehozva  az  IIS-ben  egy  virtuális  könyvtárat  már  működőképes  is  a  programunk.  Mivel  egy  valós  projekt  esetében  sok  állományról  lenne  szó,  így  jobban  járunk  egy  telepítő  csomag  létrehozásával.  Későbbiek  folyamán,  ha  módosítjuk  az  alkalmazásunkat,  akkor  elegendő  az  adott  ASPX  lapot  FTP-vel  feltölteni  és  máris  a  legfrissebb  tartalom  kerül  a  webszerverre.  Vagy  ha  a  kódot  módosítjuk,  akkor  a  DLL  állományt  kell  feltöltenünk,  amit  szintén  egyszerűen  felmásolhatunk,  mivel  az  IIS  nem  "fogja"  ezt  az  állományt,  mint  a  régi  ISAPI  DLL-ek  esetén.Publikáláshoz  a  lefordított  DLL  állományra  lesz  szükségünk,  melyet  a  BIN  mappában  találunk,  valamint  az  ASPX  állományokra.  Ezen  kívül  a  Web.config  és  Global.asax  állományt  kell  még  feltöltenünk  szerverünkre.    Telepítő  alkalmazás  készítéseA  telepítő  alkalmazás  készítéshez  válasszuk  ismét  a  File  -  New  -  Project  menüpontot,  majd  a  Setup  and  Deployment  Projects  elemei  közül  a  Web  Setup  Project  tételt.  Fontos,  hogy  kiválasszuk  az  Add  to  Solution  elemet,  így  az  új  projekt  is  az  adott  alkalmazásunkhoz  kerül  és  nem  újként  jön  létre.A  telepítő  létrejötte  után  válasszuk  a  Project  -  Add  -  Project  Output  menüpontot,  majd  a  listából  jelöljük  ki  a  Primary  Output  elemet  és  kattintsuk  az  OK  gombra.  Ezt  megismételve  válasszuk  a  listából  a  Content  Files  elemet  is  és  ismét  kattintsunk  az  OK  gombra.  A  Primary  Output  kategóriába  tartozik  most  az  alkalmazásunk  egyetlen  DLL  állománya,  míg  a  Content  Files  révén  az  ASPX  lapok,  a  Web.config  és  Global.asax  állományok  kerülnek  a  telepítő  csomagba.Ezzel  készen  is  vagyunk.  A  telepítő  alkalmazás  elkészítéséhez  válasszuk  a  Build  -  Build  WebSetup1  menüpontot.  Mivel  a  projektünk  fordításakor  kimarad  a  telepítő  alkalmazás  fordítása,  így  ezt  minden  esetben  külön  kell  kérnünk.  Mivel  a  telepítő  alkalmazás  létrehozása  időben  hosszadalmasabb  is  lehet,  ezért  a  fordító  a  Solution  fordításakor  kihagyja  az  ilyen  típusú  projekteket.  A  fordítás  befejeztével  létrejön  a  WebSetup1.msi  állomány,  mely  önmagában  is  elegendő  a  publikáláshoz.  A  mellette  lévő  Setup.exe  és  további  állományok  a  Windows  Installer  szükséges  verzióját  tartalmazzák.  Erre  csak  régebbi  operációs  rendszerek  esetén  van  szükség,  újabbaknál  elég  ha  az  MSI  állományt  visszük  magunkkal  és  azt  indítjuk  el.  Persze  akkor  sincs  gond,  ha  minden  esetben  a  Setup.exe-n  keresztül  telepítünk,  mert  ha  nincs  szükség  a  Windows  Installer  frissítésére,  akkor  ez  a  program  amúgy  is  elindítja  a  WebSetup1.msi-t.A  WebSetup1.msi  telepítésekor  bemásolódnak  a  szükséges  állományok  és  létrejön  minden  szükséges  konfigurációs  adat  is  az  IIS-ben,  így  a  telepítés  végeztével  alkalmazásunk  máris  elérhető  az  interneten.Prethus  Gábor  Kapcsolódó  webhelyekASP.NET  fejlesztői  oldalak http://msdn.microsoft.com/asp.net/