1. Active Server Pages
Microsoft® Active Server Pages (ASP) on serveripoolne laiendus
skriptide abil dünaamiliste ja interaktiivsete WWW-rakenduste
tegemiseks. Sellise lahenduse puhul ei oma tähtsust klientprogrammi
võimalused (erinevatest skriptidest arusaamine/ java-toetus jne), vaid
server teeb kogu töö skriptidega ja genereerib HTML-lehe, mis
edastatakse klientprogrammile.
1.1 Hüpertekst areng
1.1.1 Staatiline mudel
WWW oli algselt mõeldud staatilise linkide süsteemina (ja paljud
WWW-serverid jäävadki sellisteks): HTML-lehti tuleb käsitsi muuta, et
mingisuguseid (ka kõige väiksemaid) muutusi sisse viia. Klientprogramm
kasutab spetsiaalset Interneti protokolli (Hypertext Transport
Protocol - HTTP) HTML-lehtede saamiseks WWW-serverilt. Server, saanud
kätte päringu, saadab vastava lehe klientprogrammile, mis teisendab
selle väljastatavasse formaati. Kuigi see mudel võimaldab juurdepääsu
hästi kujundatud lehtedele, ei võimalda see kiiresti muutuvas
infoajastus kiiret info muutmist.
1.1.2 Dünaamiline mudel
Dünaamilised liidesed nagu CGI (Common Gateway Interface) ja ISAPI
(Internet Server Application Programming Interface) lubavad teha ajas
muutuvaid (dünaamilisi) dokumente. Selle mudeli korral küsib
klientprogramm WWW-serverist konkreetset rakendust, mitte HTML-lehte.
Server käivitab rakenduse, mis väljastab HTML-lehe, mille server
saadab klientprogrammile (rakendus võib näiteks lugeda klientprogrammi
poolt saadetud infot, seda töödelda või lihtsalt väljastada mingeid
ajas muutuvaid andmeid). Selliste rakenduste miinuseks on, et neid on
raske teha või muuta, kuna see nõuab rakenduse eelkompileerimist.
Sellised rakendused ei ole integreeritud HTML-i, vaid nende tegemiseks
on hoopis teine lähenemine kui staatilise HTML-i korral.
1.1.3 Dünaamiline HTML
Kui staatilise HTML-i võimalustest jääb väheseks ja CGI-programmide
tegemiseks pole võimalust (vajalikke oskusi), võib kasutada nn.
dünaamilist HTML-i. Sellel puhul on skriptid HTML-i laienduseks, st.
skript on lülitatud HTML-teksti sisse ja klientprogramm käitub
vastavalt skripti juhenditele. Enamlevinud skriptikeeleks, mida
HTML-is kasutatakse, on JavaScript, kasutatakse ka Jscripti ja
VBScripti. Kuid selline lahendus seab suured nõudmised
klientprogrammile ja tavaliselt esitatakse ka kasutaja arvutile
suuremad nõudmised. Et saavutada paremat interaktiivsust, tuleb
kasutada Java-rakendusi, mis loovad küll suuremad võimalused, aga
nõuavad samas ka suuremaid ressursse kasutajalt.
1.1.4 ASP-i mudel
ASP-i mudelis saab käivitatavad skriptid lülitada otse HTML-i.
Sellisel moel muutub HTML-i arendamine ja skriptide kirjutamine üheks,
mis lubab keskenduda HTML-lehtede kujundamisele lisades dünaamilised
elemendid vastavalt vajadusele. Ühe sellise lähenemisviisi on
kasutusele võtnud firma Netscape® oma WWW-serverite loomisel.
Enamkasutust on leidnud firma Microsoft® toode (WWW-serveri laiendus)
Active Server Pages. Suurimaks plussiks ASP-i korral on selle hind,
õigemini toote vaba kasutus (tasuta saadaval).
ASP-rakendused on:
* täielikult integreeruvad HTML-lehtedega.
* lihtsalt programmeritavad, käsitsi kompileerimine (ja linkimine)
puudub.
* objekt-orienteeritud ja laiendatavad ActiveX serveri
komponentidega.
ASP-skriptides võib kasutada suvalist skriptikeelt, kui leidub vastav
skripti interpretaator (näiteks PerlScript). ASP toetab vaikimisi
kahte skriptikeelt: Microsoft® Visual Basic® Scripting Edition
(VBScript) ja JScript. Vaikimisi kasutatakse VBScripti. Samuti võib
kasutada serveri ActiveX komponente.
ASP alustab tööd, kui klientprogramm soovib näha mõnda .asp-laiendiga
faili (asp-fail) WWW-serverist. WWW-server kutsub välja ASP-i, mis
loeb küsitud asp-failist HTML-i ja skripti; täidab selles olevad
skripti käsud, koostab lõpliku HTML-lehe ja saadab selle
klientprogrammile.
ASP mudel
ASP töötab kõige paremini firma Microsoft® WWW-serverite puhul.
Nendeks on:
* Microsoft® Internet Information Server versioon 3.0 või uuem
Windows NT Serveril
* Microsoft® Peer Web Services versioon 3.0 või uuem (alates
versioonist 4.0 kannab nime Personal Web Server) Windows NT
tööjaamal
* Microsoft® Personal Web Server Windows 95-l
Ka teistele WWW-serveritele toodetakse ASP-i toetust.
1.2 ASP-skriptid
1.2.1 Mis on ASP-fail?
ASP-fail on tekstifail, mis võib sisaldada suvalist kombinatsiooni
järgnevatest osadest:
* Tekst
* HTML elemendid
* Skripti käsud.
Seega on lihtsaim viis ASP-faili tekitamiseks HTML-failil
htm(l)-laiendi asp-laiendiga (.asp) asendamine. Klientprogramm näeb
tulemusena täpselt sama, mis .htm(l)-laiendi korral. Tegelikult
alustab ASP tööd kui lisada HTML-i ka skripti käske.
Skript on rida käske, mis võivad näiteks:
* Omistada väärtusi muutujatele.
* Käskida WWW-serveril saata midagi (näiteks mingi muutuja väärtuse)
klientprogrammile.
* Koondada käske protseduurideks.
Skripti käivitamisel (klientprogrammi pöördumisel ASP-faili poole)
täidetakse käsud interpretaatori poolt ja klientprogrammile saadetakse
HTML.
1.2.2 ASP-i süntaks
ASP ei ole programmeerimiskeel, ta pigem loob keskkonna mis võimaldab
sisaldada HTML-is skripte.
HTML elemendid on tavalisest tekstist eraldatud eraldajatega (sümbolid
< ja >), ASP-i puhul peavad aga eraldajad skripti osa eraldama nii
tekstist kui HTML elementidest. Selleks kasutatakse <% skripti alguses
ja %> skripti lõpus. Spetsiaalsed eraldajad on väljundi saamiseks
(näiteks mingi muutuja väärtuse saatmiseks klientprogrammile): <%=
alguses ja %> lõpus.
Skript võib sisalduda suvalises kohas HTML-i sees. Seega on õige:
Kell on <%=Now()%>.
Toodud näites näeb klient ainult lauset, mis sisaldab funktsiooni Now
poolt tagastatud väärtust.
Selleks, et täpsustada skriptikeelt, milles skript on kirjutatud,
tuleb kasutada HTML elemente koos atribuudiga
LANGUAGE (sellega teatatakse ASP-le skripti keel). Et eristada
klientprogrammis käivitatavaid skripte serveris käivitatavatest, tuleb
määrata ka atribuut RUNAT=SERVER (sellega teatatakse ASP-le, et skript
tuleb käivitada serveris). Tuleb aga meeles pidada, et selle meetodiga
saab defineerida ainult protseduure, et neid siis välja kutsuda. Kui
soovitakse muuta kogu ASP-faili skriptikeelt (keelt, mida kasutatakse
eraldajate <% ja %> vahel), tuleb ASP-faili alguses määrata ASP-i
direktiiv <%@ LANGUAGE %>, mille süntaks on järgmine:
<%@ LANGUAGE=Skriptikeel %>
Skriptikeel tähistab keelt, mida selles ASP-failis kasutatakse.
ASP võimaldab ASP-failidess sisestada teisi faile. Tavaliselt
kutsutakse seda metoodikat Server Side Includes. ASP-is on
realiseeritud selle metoodika üks käsk/element: #INCLUDE, mille
süntaks on:
Selle meetodiga sisestatakse fail (mille nimi on antud atribuudiga
failinimi) ASP-faili enne kui ASP töötleb faili. Võtmesõna VIRTUAL
võimaldab ette anda faili virtuaalse tee (see on tee, mis on määratud
WWW-serveris füüsilisele teele vastavaks). Võtmesõna FILE lubab ette
anda faili füüsilise tee jooksvast kataloogist alates.
1.3 ASP-rakendused
ASP-rakendus koosneb (virtuaalsest) kataloogist ja kõikidest selles
olevatest failidest ja alamkataloogidest. ASP-rakendus võib olla üks
ASP-lehekülg, mis võib sisaldada mitmeid dünaamilisi lehti (eri
kasutajate jaoks erinev leht, eri klientprogrammi jaoks erinev leht
jm) või see võib koosneda mitmetest (omavahel loogiliselt seotud)
lehtedest. Kasutades ASP-rakendusi saab säilitada kasutaja seisu
(informatsiooni hoidmine kasutaja kohta), mida on kahte tüüpi:
* Rakenduse seis, mille korral säilitatakse kogu rakenduse kohta
käivat infot ja see info on kättesaadav kõikidele rakenduse
kasutajatele.
* Sessiooni seis, mille korral säilitatakse konkreetse kasutaja seis
rakenduse kasutamise ajal. Säilitatav info on kättesaadav ainult
ühele kasutajale. Sessiooni seisu on võimalik säilitada kasutajate
kohta, kes kasutavad küpsiseid toetavat klientprogrammi.
ASP-i objektid Application (rakenduse info hoidmiseks ja kõikide
kasutajate vahel jagamiseks) ja Session (konkreetse kasutaja info
hoidmiseks kui, see kasutaja rakendust kasutab) võimaldavad neid seise
hallata.
1.3.1 Fail Global.asa
Igal ASP-rakendusel võib olla üks fail nimega Global.asa (laiend asa
tuleneb väljendist Active Server Application), mis peab asuma
rakenduse peakataloogis. ASP loeb faili Global.asa, kui:
* peale WWW-serveri käimapanekut toimub esimene pöördumine mõne
rakenduse ASP-faili poole.
* kasutaja, kellel ei ole aktiivset selle rakenduse sessiooni,
pöördub mõne rakenduse ASP-faili poole.
Fail Global.asa võib sisaldada protseduure juhtimaks rakenduse ja
sessiooni töölealgamist ja lõppemist:
* mida teha rakenduse ja/või sessiooni alguses (vastavad
protseduurid on Application_OnStart ja Session_OnStart).
* mida teha rakenduse ja/või sessiooni lõppedes (vastavad
protseduurid on Application_OnEnd ja Session_OnEnd).
* objektide elemente (esindajate loomist).
1.3.2 Sessioonid
Sessioon luuakse järgnevatel viisidel:
* kasutaja pöördub ASP-faili poole rakenduses, mille spetsiaalfailis
Global.asa on defineeritud protseduur Session_OnStart.
* ASP-failis salvestatakse mõni väärtus sessioonimuutujasse
(Session-objekti muutujasse).
* kasutaja pöördub ASP-faili poole rakenduses, mille spetsiaalfailis
Global.asa on loodud mõni sessiooni-objekt (elemendiga OBJEKT).
WWW-server loob sessiooni (ehk siis Session-objekti), kui sessiooni
mitteomav kasutaja pöördub mõne rakendusse kuuluva ASP-lehe poole.
Protseduuri Session_OnStart süntaks on järgmine:
ScriptLanguage tähistab skriptikeelt, milles vastav protseduur
kirjutatud. Selles protseduuris on kõik ASP-i sisseehitatud objektid
kättesaadavad.
Sessiooni loomisel genereeritakse igale kasutajale vastav numbriline
identifikaator (SessionID), mille kaudu ASP (ja programmeerija ehk
ASP-rakenduse looja) tunneb konkreetset kasutajat. Klientprogrammile
saadetakse spetsiaalne küpsis (mida kasutaja pool ei säilitada, kuna
küpsis kaotab koheselt oma kehtivuse), mille alusel genereeritakse
identifikaator. Seepärast pole võimalik Session-objekti luua
kasutajatele, kelle klientprogramm ei toeta küpsiseid. Sessiooni
identifikaatori poole saab pöörduda (ainult lugemiseks)
Session-objekti omaduse Session.SessionID kaudu.
Session-objekti võib salvestada muutujaid (näiteks kasutaja info
säilitamiseks). Muutujate säilitamise süntaks on järgmine:
Session(muutuja) = väärtus
muutuja võib olla tavaline string või string-tüüpi muutuja. Samuti
saab salvestada objekte, kui väärtus on objekti loomise käsk.
Session-objekt hävitatakse, kui sessioon kaotab kehtivuse (kasutaja ei
pöördu teatud aja jooksul ühegi rakenduse ASP-faili poole) või kui
sessioon lõpetatakse. Vaikimisi kehtib sessioon 20 minutit, aga seda
saab ASP-failides muuta, kasutades Session-objekti omadust
Session.Timeout (määratakse minutites). Objekti süntaks on järgmine:
Session.Timeout [ = Minutid ]
Sessiooni lõpetamiseks on loodud Session-objekti meetod Abandon, mille
süntaks on järgmine:
Session.Abandon
Tegelikult hävitatakse Session-objekt alles pärast ASP-faili, milles
lõpetus välja kutsuti, käskude täitmist. Seega on võimalik samal lehel
kasutada kõiki Session-objekti muutujaid.
Sessiooni lõpetamisel kutsutakse välja protseduur Session_OnEnd, mida
saab defineerida spetsiaalfailis Global.asa. Protseduuri süntaks on
järgmine:
Selles protseduuris on kättesaadavad ainult järgmised ASP-i
sisseehitatud objektid: Application, Server ja Session st. suhtlemine
kasutajaga on selleks ajaks lõpetatud.
1.3.3 Rakendused
Rakenduse objekt luuakse, kui peale WWW-serveri töö alustamist esimene
kasutaja pöördub mõne ASP-faili poole rakenduses. Järgmiste
pöördumiste korral rakendust ei looda, vaid see säilub kuni
WWW-serveri seiskamiseni. Selleks, et rakenduse alguses midagi teha
(nt. kõikidele kasutajatele mõeldud muutujate algväärtustamine), tuleb
failis Global.asa defineerida protseduur Application_OnStart.
Protseduuri Application_OnStart süntaks on järgmine:
Selles protseduuris on kättesaadavad ainult rakenduse (Application) ja
serveri (Server) sisseehitatud objektid.
Rakenduse tasemel saab näiteks WWW-serveri administraator saata
kõikidele kasutajatele päevakohast infot. Samuti saab rakenduse
tasemel kasutada loendurit külastajate üle arve pidamiseks (rakenduse
alguses võib loenduri nullida, külastajate andmebaasis algseise
taastada jm.).
Rakenduse tasemel olevate muutujate poole saab pöörduda suvalises
rakenduse ASP-failis. Muutujate poole pöördutakse järgmise süntaksiga:
Application(muutuja)[ = väärtus]
muutuja võib olla tavaline string või string-tüüpi muutuja. Samuti
saab salvestada (serveri) objekte, kui väärtus on objekti loomise
käsk.
Selleks, et kuskil rakenduses (näiteks ASP-failis) rakenduse muutujate
(objektide) poole pöörduda, kartmata, et keegi teine (mõne ASP-faili
kaudu) samal ajal selle muutuja/objekti väärtust muudab, on loodud
kaks funktsiooni (meetodit):
Application.Lock keelab teistel rakenduse muutujate väärtusi muuta.
Application.Unlock lubab teistel rakenduse muutujate väärtusi muuta.
Lock-meetodiga pääseb rakenduse muutujaid muutma ainult see ASP-fail
(koos konkreetse kasutajaga), milles Lock meetod välja kutsuti.
Unlock-meetod võimaldab teistel ASP-failidel muuta rakenduse
muutujaid. Kui Unlock-meetodit välja ei kutsuta, vabastatakse
rakenduse muutujad ASP-faili lõppedes või sessiooni lõppedes (vt.
Sessioonid).
WWW-serveri seiskamisel lõpeb ka rakenduse töö. Et rakenduse lõppedes
mingeid toiminguid läbi viia, võib failis Global.asa defineerida
protseduuri Application_OnEnd. Selle süntaks on järgmine:
Selles protseduuris on kättesaadavad ainult rakenduse (Application) ja
serveri (Server) sisseehitatud objektid. Ainus erand on Server-objekti
meetod MatPath, mida pole lubatud siin välja kutsuda.
Seega, kui WWW-server lõpetab normaalselt töö, otsitakse kõikide
rakenduste failidest Global.asa protseduure Application_OnEnd ja
täidetakse neis olevad käsud.