1 Programmeerimine veebiserveris

Veeb on oma arengus läbi teinud mitmeid etappe. Algselt oli see lihtne staatiline linkide süsteem; seejärel polnud staatiline süsteem enam mõttekas, kuna infot, mis veebi paigutati, oli liiga palju ja selle haldamine staatilisena osutus liiga töömahukaks. Selleks loodi võimalus veebi dünaamilisena hoida.

Esialgu hakati lihtsalt looma programme, mida sai teatud liideste abil veebi kaudu käivitada – liidest, mille abil seda tehti nimetatakse Common Gateway Interface (CGI). Selle liidese abil sai luua ka interaktiivseid süsteeme, kus peale info vaatamise oli kasutajal võimalus mingit infot ka serverile saata. Kui aga andmemahud veebis suurenesid, leiti, et neid andmeid on kasulik hoida andebaasides. Loomulikult oli vaja ka programme, mis neid andmeid veebis näidata suudaksid; esialgu kõlbasid CGI programmid ka selleks, kuid CGI probleemiks osutus tema aeglus – nimelt peab iga veebi poole pöördumisega CGI programmi uuesti laadima.

Seega tekkis andmemahtude suurenedes vajadus millegi kiirema järele. Selleks kiiremaks vahendiks osutusid veebiserverid ise – see tähendab, et hakati tegema programme, mis töötasid koos veebiserveriga ehk olid veebiserveri sisse integreeritud. Selleks otstarbeks loodi mitmeid liideseid nagu näiteks Internet Server Application Programming Interface (ISAPI) firma Microsoft poolt ja Netscape Server Application Programming Interface (NSAPI) firma Netscape poolt. Neid programme nimetatakse ka veebiserveri laiendusteks – nad laiendavad veebiserverit luues serverile lisavõimalusi. Nimetatud rakendused on väga kiired – programmi alglaadimine toimub kas koos veebiserveriga või siis esimesel pöördumisel konkreetse rakenduse poolt. Seega avaneb võimalus luua väga kiireid süsteeme.

Seejärel aga leiti, et need loodud programmid on küll väga head ja kiired, aga neid on küllaltki raske hallata – näiteks ka kõige väiksema muutuse korral programmis võib tekkida vajadus veebiserveri seiskamiseks. Ka sellele probleemile leiti lahendus – loodi serveripoolsed skriptid. Kuigi ka näiteks CGI programm võib olla skript (UNIX käsukeele skript, Perl skript jne) ei ole siin mõeldud seda – serveripoolsete skriptide korral töötab veebiserverisse integreeritud spetsiaalne programm, mis interpreteerib neid skripte. Sel korral küll veebirakendus kannatab teatava kiiruse languse all võrreldes näiteks ISAPI rakendustega, aga süsteemi haldamine on see-eest kiirem ja mugavam. Serveripoolsed skriptid võetakse vaatluse alla järgmises peatükis.

1.1 Veebiserverid

Igasuguse veebilahenduse üheks peamiseks osaks on siiski ennekõike veebiserver. Microsoft Windows keskkonnas kasutatakse peamiselt kolme veebiserverit: Internet Information Server, Apache veebiserver ja iPlanet veebiserver (varem tuntud kui Netscape veebiserver).

1.1.1 IIS

Internet Information Server (IIS) on Microsofti poolt välja töötatud paljude lisavõimalustega server. Lisaks veebiserverile on IIS kooseisus võimalik kasutada FTP serverit, mailiserverit ja uudisteserverit. Täieliku ülevaate saamiseks tasub vaadata firma Microsoft kodulehele (nt allikas [1, vaata »] ja [2, vaata »]).

Kuna IIS on põhjalikult integreeritud Windows NT-ga, siis omab ta head ülevaadet operatsioonisüsteemist ning juurdepääsu Windowsi omadustele. Näiteks sisaldab IIS transaktsioonidel põhinevat serveripoolsed skriptivahendit Active Server Pages. IIS põhiomadused sisaldavad:

  • HTTP/1.1 (Hypertext Transfer Protocol) standardi toetus. See tähendab, et IIS sisaldab ühenduste alalhoidmist, konveiersüsteemi ja dokumentide sisemist puhverdamist.
  • Mitme veebiserveri korraga haldus.
  • Veebi-, Windows- ja käsurea-põhine administreerimine.
  • ISAPI laienduste ja filtrite toetus.
  • Active Server Pages (ASP) skriptivahendit.
  • Spetsiaalset teadete haldussüsteemi. ASP rakendused saavad välistele programmidele teateid saata kasutades spetsiaalset Microsoft Message Queue serverit – seoses sellega saab ASP kiirelt tööd jätkata, lastes haldussüsteemil teadetega tegeleda.
  • Vigade vältimine. IIS võimaldab määrata teatud osa veebist töötama, kui eraldiseisva rakenduse – see võimaldab ülejäänud veebil tööd jätkata, kui nimetatud osa põhjustab vea.
  • Automaatne vigade parandus. Kui mõni veebirakendus tekitab vea ja seiskub, käivitatakse see automaatselt järgmise pöördumise korral.
  • Kohandatav logi. ISAPI rakendustel on võimalus lisada logifaili oma teateid.
  • Komponentide toetus. IIS lubab kasutada suvalisi serveris asuvaid komponente; IIS haldab nende komponentide laadimist ja välja laadimist.
  • ActiveX Data Objects toetus.
  • Sisseehitatud sertifikaadiserver.
  • Integreeritud indekseerimine ja otsing võimaldab indekseerida kogu veebiserverit. IIS oskab lisaks tavalistele hüperteksti- (Hypertext Markup Language – HTML) ja tekstifailidele indekseerida ka Microsoft Office ja näiteks PDF dokumente.
  • Väljundi aegumine võimaldab määrata veebiserveri poolt saadetud infole aegumistähtaegu.
  • Võimalus lisada kohandatud dokumendi jaluseid (footer) määratud HTML lehtedele.
  • Võimalus luua enda koostatud HTTP veateateid.
  • HTTP lisapäiste lisamine väljundile.
  • Automaatsed ümbersuunamised.
  • Korralik dokumentatsioon.

IIS võimaldab kasutada Windows NT turvaelemente nagu failiõiguste määramine ja doomeenikontrolleri kasutamine kasutajate tuvastamisel – seega pole vaja veebiserveri jaoks eraldi kasutajaid luua, vaid selleks saab kasutada näiteks Windows NT kasutajagruppe ning nende õigusi. IIS võimaldab kasutaja tuvastamisel kasutada Windows NT tuvastussüsteemi NTLM (nimi tuleneb Windows NT LAN Manager nimest, kuna seda kasutati Windowsi esimestes võrgusüsteemides). Windows NT kasutaja tuvastamise protsessi nimetatakse Windows NT Challenge/Response. NTLM skeemist annab ülevaate järgmine joonis:

Joonis 1.1 Windows NT Challenge/Response kasutajatuvastuse skeem
Joonis 1.1 Windows NT Challenge/Response kasutajatuvastuse skeem

NTLM kasutajatuvastust toetab näiteks Microsoft Internet Explorer.

1.1.2 Apache server

Apache veebiserver on hetkel maailma populaarseim veebiserver. Seda põhiliselt tänu tema vabale kasutusele ja algkoodi avalikkusele. Igaühel on võimalus serverit täpselt selliseks kujundada nagu ta ise seda soovib. Vaatamata asjaolule, et Windows keskkonnas ei paku Apache võibolla kõiki võimalusi mida ta pakub UNIX keskkonnas, on ta seal siiski IIS järel teisel kohal.

Apache veebiserveri kohta leiab piisavalt palju informatsiooni serveri korduma kippuvate küsimuste lehelt (vt allikas [3, vaata »]).

Apache serverit populaarseks tegevad omadused on:

  • Multiplatvorm. Apache serverit saab edukalt kasutada suvalisel platvormil suvalises operatsioonisüsteemis.
  • Toetab täielikult HTTP/1.1 protokolli.
  • Võimaldab väga võimsat konfigureerimist ja laiendamist.
  • Võimaldab lisada mooduleid laiendamaks serverit; selleks saab kasutada spetsiaalset liidest Apache module Appilcation Programming Interface (Apache API).
  • Omab toetust nii Windows CGIle kui ka ISAPI liidesele (läbi vastava mooduli).
  • Kogu algkood on avalik ja litsentsitingimused ei piira selles muudatuste tegemist.
  • Võimaldab piisavat kasutajatuvastuse ja õiguste mehhanismi.
  • Kohandatavad serveripoolsed veateated.
  • Mitme veebisaidi ühes serveris hoidmine.
  • Omab väga võimsat logi süsteemi, mis on vastavalt vajadustele kohandatav.
  • Areneb pidevalt edasi.

1.1.3 iPlanet veebiserver

iPlanet veebiserver oli esialgselt välja töötatud firma Netscape poolt, hiljem läks serveri arendus Sun-Netscape alliansi kätte ja alates serveri neljandast versioonist kannab see nime iPlanet. Netscape ja iPlanet veebiserverid on hetkel maailmas populaarsuselt kolmandal kohal (seda nii UNIX kui ka Windows keskkonnas), seda vaatamata asjaolule, et serverid ei ole vabavara, vaid neid tuleb (küllaltki suure rahasumma eest) osta. iPlanet veebiserverist ülevaate saamiseks on soovitatav vaadata allikat [4, vaata »].

iPlanet veebiserveri (versioon 4.01) põhilised omadused on:

  • Töötab nii UNIX kui ka Windows platvormil.
  • Väga hea server loomaks e-äri süsteeme.
  • Oskus serveri koormust balansseerida kasutades mitme protsessi ja lõimesüsteemi (mutlithreading).
  • Dünaamilised logi loomise võimalused.
  • Toetab erinevaid Java rakendusi nagu Java Servlets, JavaServer Pages ja Java Virtual Machine.
  • Toetab täielikult HTTP/1.1 protokolli.
  • Netscape Appilcation Programming Interface (NSAPI) toetus.
  • NSAPI rakenduste puhverdamise võimalused.
  • Piisav kasutajate tuvastuse ja õiguste süsteem.
  • Veebipõhine administreerimine.

1.2 CGI programmid

Common Gateway Interface (CGI) on lihtne liides, mis võimaldab veebiserveris käivitada väliseid programme – see tähendab, et programmid võivad väljastada HTML-i, pilte jne ja veebiserver vaatab programmide töö tulemusele nagu oleks see tavaline staatiline väljund. Seega võimaldab CGI genereerida küllaltki lihtsalt dünaamilist väljundit. Üldistatult näeb CGI töö välja järgmiselt:

Joonis 1.2 CGI programmide kasutamine veebis
Joonis 1.2 CGI programmide kasutamine veebis

CGI spetsifikatsioon on põhjalikult kirjeldatud allikas [5, vaata »], CGI programmeerimisest annavad ülevaate allikad [6, vaata »] ja [7, vaata »].

1.2.1 Milleks CGId kasutatakse

CGId võib kasutada paljude erinevate ülesannete täitmiseks ja pikka aega oli CGI ainus vahend dünaamiliste veebilahenduste loomiseks. CGI kasutamist ülesannete kaupa võib jaotada kolmeks: lihtsad, keskmised ja keerulised ülesanded.

Lihtsad ülesanded on sellised, mille koostamiseks kulutatakse küllaltki vähe aega ja vaeva nagu näiteks veebilehtede külastuste loendur, serveri kellaaja näitamine jm. Need on sellised ülesanded, kus programmeerimist ega CGI tundmist pole praktiliselt vaja. Sellised lihtsad ülesanded osutuvad ka piisavalt kiireteks lahendatuna CGIs.

Keskmiste ülesannete lahendamiseks tuleb juba natuke vaeva näha, need ei valmi lihtsalt paaritunnise töö tulemusena, nende lahendamiseks tuleb juba tunda ka CGId. Sellised ülesanded on näiteks CGI programmid, mis moodustavad kogu HTML lehe ja animatsioonid (nt pildil klikkides see suureneb või väheneb). Neid ülesandeid on võimalik ka näiteks Javaga lahendada, kuid CGI osutub tihtipeale kiiremaks ja paljud brauserid ei toeta Javat või on see neis keelatud.

Keerulised ülesanded nõuavad juba ülesande väga täpset püstitust ja korralikku realiseerimist. Keerulisteks ülesanneteks võib pidada näiteks andmebaasisüsteeme, otsingumootoreid ja ka mitmete dünaamiliste HTML lehtede kooslust. Sellised ülesanded moodustavad tavaliselt lõpuks ka ühtse terviku – infosüsteemi.

1.2.2 Mida CGI programm peab oskama

CGI programme võib kirjutada suvalises programmeerimiskeeles, peaasi, et need programmid töötaksid veebiserveris ja vastaksid teatud nõuetele. Enamlevinud programmeerimiskeeled CGI jaoks on C, C++ ja Perl, kuid kasutatakse ka näiteks keeli nagu Tcl, Visual Basic, Applescript jne. Nõuded, mis seatakse CGI programmidele, võib üldistatult kokku võtta järgmiselt:

  • Programm peab oskama kliendi poolt saadetud andmeid lugeda – seda muidugi juhul, kui programmi eesmärgiks on kliendi poolt andmeid saada.
  • Programm peab oskama väljastada standarditele vastavat väljundit.

Kliendi poolt andmete lugemisel tuleb arvestada asjaoluga, et klient võib andmeid veebiserverile saata (andmete saatmise meetod on meetod, millega brauser pärib veebiserverilt programmi) kolmel erineval moel:

  • GET meetodi korral saadab klient kogu vormi info URLiga (Uniform Resource Locator) koos (lehe aadressi järel küsimärgiga eraldatult). CGI paigutab saadetava info keskkonnamuutujasse QUERY_STRING. Programm peab olema võimeline selles muutujas sisalduvast infost välja lugema endale vajaliku info.
  • POST meetodi korral saadab klient kogu vormi info eraldi osana päringu lõpus – programm peab lugema seda infot standardsisendist. Selle meetodi korral tuleb meeles pidada, et server ei lõpeta saadetavat infot tavalise lõpusümboliga, vaid selle asemel väärtustatakse CGI keskkonnamuutuja CONTENT_LENGTH, mis sisaldab saadetava info pikkust. POST meetodit on soovitatav kasutada, kui saadetav info on liiga pikk (tavaliselt on piirang seatud 1024 sümboli peale).
  • HEAD meetod sarnaneb GET meetodiga, ainult et selle meetodi korral ootab klient tagasi ainult HTTP päiseid, andmeid saata pole vaja.

Saadetav info on teataval viisil kodeeritud. Nimelt on kõik spetsiaalsümbolid (k.a. täpitähed) kodeeritud kuueteistkümnendkoodis ja erinevate vormi muutujate (ning nende väärtuste) eraldajaks on kasutatud &-märki.

CGI programm saadab väljundi standardväljundisse; veebiserver võib selle saata otse kliendile või siis saadetud infot omakorda töödelda (nt kui programm suunab kliendi uuele asukohale). CGI programm peab enne tavalise väljundi saatmist seadma ka kliendile saadetavad HTTP päised nagu näiteks:

  • Content-Type päisega annab programm teada väljundi MIME tüübi. Näiteks text/html tähendab tavalist HTML teksti, image/gif aga spetsiaalformaadis pilti.
  • Location päisega teatab programm, et soovib klienti suunata uuele asukohale. Kui suunatav koht asub samas veebiserveris, võib server teha seda vahetult, ilma kliendi poole pöördumata, kui aga antud on täispikk URL, siis saadetakse vastus kliendile ja kliendi programm peab suunamisega ise hakkama saama.
  • Status päisega teatab server kliendile töö staatust. Järgnev tabel annab ülevaate põhilistest staatuskoodidest ja nende tähendustest:
    Staatuse kood Staatuse tekst Tähendus
    200 OK Päring õnnestus ilma probleemideta
    202 Accepted Päring võeti vastu, kuid on veel töötluses
    301 Moved Antud leht on üle viidud teise kohta
    302 Found Küsitud lehte ei leitud sellest kohast kust teda küsiti, kuid see leht leiti mujalt
    400 Bad Request HTTP päringu süntaks ei olnud korrektne
    401 Unauthorized Küsitud leht nõuab kasutajatuvastust
    403 Forbidden Serveril puuduvad vastavad õigused küsitud lehele
    404 Not Found Küsitud lehte ei leitud
    500 Server Error Serveris tekkis viga
    502 Service Overloaded Server on liiga koormatud ja ei suuda hetkel teenindada
    Tabel 1.1 HTTP staatuskoodide tähendused

1.2.3 Keskkonnamuutujad

Keskkonnamuutujad on muutujad, mis väärtustatakse kui veebiserver käivitab mõne CGI programmi. Nende muutujatega antakse programmile infot kliendi ja serveri kohta. Tähtsamad muutujad, mis väärtustatakse, on järgmised:

  • AUTH_TYPE määrab kasutajatuvastuse tüübi.
  • CONTENT_LENGTH määrab kliendi poolt saadetud andmete pikkuse baitides. Muutuja on määratud ainult juhul, kui saatmine toimus POST meetodit kasutades.
  • CONTENT_TYPE määrab kliendi poolt POST meetodiga saadetud vormis määratud MIME tüübi; tavaliselt on selleks application/x-www-form-urlencoded.
  • PATH_INFO annab lisainfot URLi kohta.
  • PATH_TRANSLATED määrab CGI programmi füüsilise asukoha serveris.
  • QUERY_STRING sisaldab GET meetodiga saadetud infot.
  • REMOTE_ADDR sisaldab kliendi arvuti IP aadressi.
  • REMOTE_USER sisaldab edukalt tuvastatud kasutajanime.
  • REQUEST_METHOD määrab päringu tüübi, millega programmi poole pöörduti (GET, POST või HEAD).
  • SCRIPT_NAME määrab programmi virtuaalse tee (nt /cgi-bin/Test.cgi).
  • SERVER_NAME sisaldab serveri nime või IP aadressi.
  • SERVER_PORT sisaldab veebiserveri pordi numbrit.
  • SERVER_PROTOCOL sisaldab veebiserveri poolt kasutatava protokolli.
  • SERVER_SOFTWARE sisaldab veebiserveri tarkvara nimetust.
  • HTTP_ACCEPT muutujaga annab klient teada, millistest MIME tüüpidest ta suudab aru saada.
  • HTTP_REFERER muutujaga teatab klient, milliselt URLilt ta programmile tuli.
  • HTTP_USER_AGENT muutujaga annab klient teada klientprogrammi nime.

1.3 Veebiserveri laiendused

CGI programmid teevad oma tööd hästi: koguvad veebist infot, töötlevad seda ja genereerivad väljundi. Samas on neil üks suur miinus: iga kord kui programmi poole pöördutakse, laetakse see programm uuesti serveri mällu. Kui CGI programm on skript (nt Perli skript), siis peab interpretaator iga kord skripti lisaks ka kompileerima; kui ühte CGI programmi vaatab korraga viis inimest, on serveris korraga mälus viis eksemplari antud programmist, kui kliente on tuhandeid, siis… ja seda kõike näiteks selleks, et väljastada lehele ühte numbrit (külastatavuse loendur). See ei ole just kõige parem väljavaade.

Serveri laiendused nagu Internet Server Application Programming Interface (ISAPI) ja Netscape Server Application Programming Interface (NSAPI) loovad uued võimalused veebi programmeerimiseks. Mainitud liidesed võimaldavad programmeerijatel laiendada veebiservereid ja loovad sellega neile seniolematud võimalused veebi programmeerimiseks.

1.3.1 ISAPI

Microsoft Windows keskkonnas on väga populaarne kasutada ISAPIt; seda põhiliselt tänu tõsiasjale, et Microsoft on üks ISAPI loojatest ja ISAPI töötab väga lähedaselt koos IISga. ISAPI võimaldab võimsaid kõrgtasemel arendatud dünaamilisi veebisaite – need lahendused on võimelised toime tulema paljude päringutega ilma veebiserverit oluliselt koormamata. ISAPI ei ole lihtsalt parem CGI, ta erineb põhimõtteliselt CGIst ja on loodud lahendamaks CGI probleeme.

ISAPIst antakse põhjalik ülevaade allikates [6, vaata »] ja [8, vaata »], programmeerimise seisukohalt on kasulik vaadata materjale allikas [9, vaata »].

ISAPI põhilised eelised CGI ees on mastaapsus (scalability), kiirem jõudlus (faster performance) ja laiendatavus (extensibility).

Mastaapsus. ISAPI võimaldab luua veebikeskkondi, mis suudavad teenindada ühest kuni tuhandete samaaegsete ühendusteni ilma seejuures lisaressursse nõudmata. CGI korral tuleb iga uue ühenduse jaoks luua uus protsess iga CGI programmi jaoks. ISAPI korral loob veebiserver initsialiseerimisprotsessi käigus lõimetsooni ja iga uue pöördumise korral ISAPI rakenduse poole luuakse rakendusest uus lõim. Lõimetöötlus on vähem mälunõudlik ja lõime loomine toimub palju kiiremini kui protsessi loomine. CGI korral peab veebiserver programmi töö lõppedes tegema teatavat puhastustööd, ISAPI korral annab veebiserver juhtimise ISAPI rakendusele ja see teeb kogu töö (hoolitseb ka töö korrektse lõpetamise eest) ja vabastab lõime.

Kiirem jõudlus. Nagu juba mainitud, luuakse ISAPI rakendused lõimedes: see annab lisaks ressurssidele juurde ka kiiruses – rakendused töötavad kiiremini. Lisaks ei tööta ISAPI rakendused standardsisendi ja –väljundiga, vaid saadavad andmeid otse serverile, mis saadab need omakorda kliendile.

Laiendatavus. ISAPI võimaldab veebiserverit ka otseselt laiendada – muuta saab ka veebiserveri sisemist käitumist. Selliseid ISAPI rakendusi nimetatakse ISAPI filtriteks. Pea igale sammule, kui veebiserver suhtleb kliendiga, saab ISAPI filtri vahendajaks panna.

ISAPI rakendused on tavaliselt realiseeritud teekidena (Dynamik-Link Libraries – DLL). Teeke võib olla kahte tüüpi: ISAPI laiendused (extensions) on sarnased CGI programmidega, ISAPI filtrid (filters) võimaldavad veebiserverit laiendada väga madalal tasemel.

1.3.2 ISAPI laiendused

Laiendused on nagu CGI programmidki, ainult et tavaliselt on need realiseeritud DLLidena. Nad laetakse juhul, kui mõni klient pöördub esimest korda laienduse poole ja jäävad tavaliselt laetuks kuni veebiserveri seiskamiseni. Veebiserveril on alati võimalus laiendust mälust välja laadida (näiteks ressursside vabastamise eesmärgil); laiendused töötavad samas mälupiirkonnas kus veebiservergi. ISAPI rakendused töötlevad andmeid kasutades selleks spetsiaalset andmete kontrollblokki (Extension Control Blocks – ECB) – see kiirendab rakenduste tööd tunduvalt, kuna seda blokki haldab server ja selle korral puudub standardsisendi ja -väljundiga suhtlemine.
Kui toimub pöördumine laienduse poole, toimuvad serveris järgmised sammud:

  • server saab päringu, mis nõuab laienduse kasutamist;
  • server kontrollib, kas laiendus on juba laetud ja kui seda pole veel tehtud, laiendus laetakse;
  • laiendus saab andmeid andmete kontrollbloki kaudu;
  • andmed töödeldakse;
  • laiendus saadab tulemuse kliendile;
  • server katkestab laienduse töö ja laeb selle vastavalt vajadusele ka mälust välja.

Laienduste tööd veebiserveriga iseloomustab järgmine pilt:

Joonis 1.3 ISAPI laienduste töö veebiserveris
Joonis 1.3 ISAPI laienduste töö veebiserveris

ISAPI laiendustel põhinevad tavaliselt ka serveripoolsete skriptide interpretaatorid nagu näiteks Active Server Pages, ColdFusion ja PHP.

1.3.3 ISAPI filtrid

Filtrid pakuvad funktsionaalsust, mida CGIga pole võimalik saavutada. Filtrid sekkuvad HTTP ühendustesse nende ühenduste väga madalal tasemel – see võimaldab muuta veebiserveri standardset ühenduste haldamist. Filtrid laetakse koos veebiserveriga ja need jäävad laetuks kuni serveri seiskamiseni. Filtrid võimaldavad näiteks kontrollida päringute tegemist veebiserverile ja neile vastamist. Filtri eesmärk on filtreerida mingit infot, seega kui veebiserver saab HTTP päringu kontrollitakse see kõigepealt filtri poolt ja kui filter leiab infot, mida ta peab töötlema, see töödeldakse ja alles seejärel saab server oma tööd jätkata.
Filtrite tööd veebiserveris võib illustreerida järgmise pildiga:

Joonis 1.4 ISAPI filtrite sekkumine veebiserveri töösse
Joonis 1.4 ISAPI filtrite sekkumine veebiserveri töösse

ISAPI filtreid saab kasutada järgmistel eesmärkidel:

  • Kohandatud kasutajatuvastus.
  • Info pakkimine.
  • Info krüptimine.
  • Logi pidamine.
  • Päringute analüüs.

1.3.4 NSAPI

Netscape Server Application Programming Interface (NSAPI) on firma Netscape poolt välja töötatud liides Netscape veebiserverite laiendamiseks. NSAPI võimaldab lisada serverile funktsionaalsust, nagu seda teeb ka CGI, kuid samas lubab NSAPI muuta veebiserveri funktsionaalsust ja seda väga madalal tasemel.

NSAPIst saab ülevaate allikast [6, vaata »], programmeerimise poole pealt tasub vaadata allikat [10, vaata »].

NSAPI põhilisteks eelisteks peetakse:

  • Jõudlus. NSAPI funktsioonid on palju kiiremad kui CGI programmid. Seda just seetõttu, et NSAPI on väga tihedalt integreeritud veebiserveriga.
  • Protsessi jagamine. NSAPI funktsioonid töötavad samas protsessiruumise veebiserveri protsessiga ja jagavad ühtseid ressursse.
  • Andmetele juurdepääs. NSAPI funktsioonidel on juurdepääs palju rohkematele andmetele kui näiteks CGI programmidel. Seda just seetõttu, et nad töötavad veebiserveri sees ja teevad ka osaliselt veebiserveri tööd.

NSAPI rakendusi saab kasutada näiteks järgmistel eesmärkidel:

  • Kohandatud kasutajatuvastus.
  • Logi pidamine.
  • Turvalisuse suurendamine.
  • Aruandlus.
  • Automaatne dokumentide teisendamine.
  • Küpsiselaadse info kaudu kasutaja seisu säilitamine.

Võib julgelt öelda, et NSAPI võimalused on piiratud ainult veebi arendaja kujutlusvõimega.