Veebirakenduste loomine IV - 1
Serveripoolsus
• Serveri arhitektuur• Serveri laiendusvõimalused• HTTP protokoll• Serveripoolsed skriptikeeled
Veebirakenduste loomine IV - 2
Serveri arhitektuur • WWW Server suudab tavaliselt tegeleda vaid failide
edastamisegaServer
Server
Klient
...Internet
exte
nsio
ns
DB
Veebirakenduste loomine IV - 3
Serveri arhitektuur
Server
CGI Engine
ISAPI/ NSAPI /WSAPIEngine
Apache modules
Executableprograms
DLL Extensionlibraries
Apache loadablemodules
SSI Engine
Multithreaded engine
Veebirakenduste loomine IV - 4
Serveri arhitektuur • SSI (Server-side includes)
– Võimaldab HTML dokumenti kirjutada spetsiaalseid kommentaare, millede puhul saab WWW serverile ette anda teatud käske, mis võimaldavad programme käivitada ning faile sisse võtta
• CGI– Tavaline käsurea programm, millele antakse OS-i keskkonnamuutujate
ja parameetrite abil ette käsud ning oodatakse kuni ta midagi standard-väljundisse (ekraanile) trükib
– Iga päringu jaoks käivitatakse uus protsess, mis töö lõpetades oma eksistentsi lõpetab
• WinCGI, FastCGI– Sarnased CGI lahendustele, kuid püüavad vähendada tavalise CGI
poolt kulutatavaid resursse– Teenindav programm jääb peale esimest kasutust töösse– Parameetrid antakse edasi spetsiaalse INI faili kaudu
Veebirakenduste loomine IV - 5
Serveri arhitektuur • NSAPI
– Netscape firma poolt loodud meetod laiendamaks serveri võimalusi¨dünaamiliste moodulite abil (DLL, so)
– Moodulid käivitatakse webi serveri protsessi aadressväljas, vähendades seega resursside vajadusi ning suurendades reageerimiskiirust
• ISAPI– Sisuliselt samal põhimõttel baseeruv metodoloogia, mis on mitmes
suhtes lihtsam ja laiemate võimalustega kui NSAPI– Seda liidest toetab enamus levinud webiserveritest– Lisab ka päringute ja vastuste filtreerimise võimaluse
• WSAPI– O’Reilly WebSite serveri laiendused. Täpset võrdlust pole läbi viinud
(täieliku dokumentatsiooni saamiseks tuleb see server osta), kuid põhimõttelelt loodi ta ISAPI võimaluste laiendamiseks
Veebirakenduste loomine IV - 6
Serveri arhitektuur • Apache Modules
– Apache moodulid on Windowsi all DLL-id, UNIXi all aga dünaamiliselt laaditavad so-library’d
• Java Servlets– Java keelel põhinevad moodulid, mis järgivad päringu-vastuse mudelit– Kirjutatud Java keeles
• Skriptikeeled– PHP– ASP– JSP
Veebirakenduste loomine IV - 7
Serveri laiendusvõimalused • Serveri võimaluste laiendamiseks tuleb tavaliselt
vastavad moodulid või programmid endal luua
• Skriptikeelte puhul on olemas ka hulk vabavarana või kommertsalustel saadavaid teeke (ASP, PHP, JSP)
• Kasutada võib ka kolmandate poolte poolt pakutavaid laiendusmooduleid, kas otsese funktsionaalsuse pakkumiseks või suhtluseks skriptikeele mootoriga (á la ColdFusion)
Veebirakenduste loomine IV - 8
Serveri laiendusvõimalused - SSI• SSI defineerib spetisaalse kuju tavalise HTML
kommentaari sees, mida server eriliselt käsitleb
<!--#command param1=”value” param2=”value”-->
• Parameetrid sõltuvad konkreetsest käsust
Veebirakenduste loomine IV - 9
Serveri laiendusvõimalused - SSI• SSI võimalused* (Sõltuvad serverist)
Trükib välja env_var poolt tähistatava keskkonnamuutuja väärtuse (HTTP_USER_AGENT)
var=”env_var”echo
Trükib välja virtual_path või file poolt näidatud faili viimase muutmise kuupäeva/kellaaja (sõltuvalt eelnevalt config abil defineeritud ajaformaadile)
virtual=”../virtual_path”
file=”file”
flastmod
Tagastab virtual_path või file poolt näidatud faili suuruse (sõltuvalt defineeritud formaadile)
virtual=”../virtual_path”
file=”file”
fsize
Pistab virtual_path või file poolt näidatud faili sisu antud dokumendi sisse
virtual=”../virtual_path”
file=”file”
include
Käivitab /path/command poolt näidatud käsu. Kui see käsk väljastab mingit teksti, saadab server selle brauserile
cgi=”/path/command”exec
Näitab kuidas aeg ekraanile väljastadaNäitab kuidas faili suurus ekraanile väljastadaDefineerib veateate
seletus
timefmt=”formaat”
sizefmt=”formaat”
errormsg=”message”
args
config
command
*) Vaata ka: http://www.pld.ttu.ee/ssi.html
Veebirakenduste loomine IV - 10
Serveri laiendusvõimalused - ISAPI• DLL peab eksportima 2 funktsiooni
– GetExtensionVersion– HttpExtensionProc– TerminateExtension (optional)
• Filtreerimise lisamiseks tuleb juurde veel 2:– GetFilterVersion()– HttpFilterProc()
• Filtreerimine võimaldab päringute logimist (audit trail), kodeerimist/krüpteerimist, pakkimist jne
Veebirakenduste loomine IV - 11
Serveri skriptikeeled• Serveri poole peal on võimalik kasutada mitmeid
erinevaid skriptikeeli– Server-side JavaScript
Netscape poolt oma Enterprise Serverile lisatud laeindamisvõimalus
– ColdFusionHTML-ile sarnanev tag-e kasutav speudo-skiptikeel
– PHPVabalt saadav võimas skriptikeel paljude eri webiserverite jaoks
– Active Server Pages (ASP)Vabalt saadav võimas skriptikeelte baas Microsofti IIS (InternetInformation Server) peal
– Java Server Pages (JSP)Java ja JavaScripti kasutav laiendus (üljuhul töötab Java Servleti baasil)
Veebirakenduste loomine IV - 12
Serveri skriptikeeled – Cold Fusion• Arhitektuur
• Kasutab HTML-faili lisatavaid CFML (ColdFusion Markup Language) elemente
Klient
Internet
Server
exte
nsio
n
ColdFusion
XX
X X
X
<HTML><HEAD> <TITLE>Call Department</TITLE> </HEAD><BODY>
<STRONG>Call Department</STRONG><CFSET Department="Sales"><CFOUTPUT>I’d like to talk to someone in #Department#.</CFOUTPUT>
</BODY></HTML>
JRun
<?>
Veebirakenduste loomine IV - 13
Serveri skriptikeeled – Cold Fusion• Plussid
– Väga laiad võimalused eri vahendite integreerimiseks: XML, Java Servlets, JSP, ActiveX/COM/CORBA komponendid, JavaBean’id, LDAP, ODBC
– Hästi skaleeruv
• Miinused– Kuna Web server ja ColdFusion (CF) server on eraldi
loodud protsessidena, võib see hakata mõjutama kiirust– Palju erinevaid uusi elemente – esialgne õppimine keerukas
Veebirakenduste loomine IV - 14
<Viited/>• ColdFusion Kodulehed
– http://www.coldfusion.com
• Õpetused
Veebirakenduste loomine IV - 15
Serveri skriptikeeled – PHP• Skripti tekst on lisatud HTML faili kasutades
spetsiaalseid märgendeid
• Kasutada võib mitmeid alternatiivseid viise
<HTML><BODY>
<?phpecho(”Selle kirjutame PHP kaudu”);
?></BODY></HTML>
<?php echo(”PHP tekst”); ?> // XML stiilis
<?p echo(”PHP tekst”); ?> // SGML stiilis
<SCRIPT LANGUAGE=’php’> echo(”PHP tekst”); </SCRIPT> // HTML stiilis
<% echo(”PHP tekst”); %> // ASP stiilis
Veebirakenduste loomine IV - 16
<Viited/>• PHP Kodulehed
– http://www.php.net– http://www.zend.com
• Õpetused– http://www.phpbuilder.com– http://www.ifconnection.de/~tm/ (PDF Library)– http://php.netvision.net.il/browscap/ (Browser Capability)– http://www.cyscape.com/asp/browscap/
Veebirakenduste loomine IV - 17
Serveri skriptikeeled – ASP• ASP pole skriptikeel selle klassikalises mõttes
• ASP defineerib raamid, millede abil saab kasutada mistahes skriptikeelt (JavaScript, VBScript jne)
• ASP annab skriptikeeltele kasutuseks standardsed objektid (Request, Response) ning mõningad funktsioonid
• Erinevaid skriptikeeli võib kasutada läbisegi, määrates eelnevalt ära keele
Veebirakenduste loomine IV - 18
Serveri skriptikeeled – ASP• Skripti tekst on lisatud HTML faili kasutades
spetsiaalseid märgendeid
• Kasutada võib ka <SCRIPT> elemendi abil
<HTML><BODY>
<% @LANGUAGE=”JavaScript”>var objLocalContext = GetObjectContext;objLocalContext.Response.Write(”Selle kirjutame ASP kaudu”);
%></BODY></HTML>
<SCRIPT RUNAT=”SERVER” LANGUAGE=”JavaScript” SRC=”Skript.inc”></SCRIPT>
Veebirakenduste loomine IV - 19
<Viited/>• Õpetused
– http://www.15seconds.com– http://www.actionjackson.com– http://www.activeserverpages.com– http://www.asp101.com– http://www.aspwatch.com– http://www.ultimateasp.com– http://www.internet.com
• MS ASP alternatiivid– http://www.chilisoft.com (Chili!ASP)– http://www.halcyonsoft.com (Instant ASP)
Veebirakenduste loomine IV - 20
Serveri skriptikeeled – JSP• JSP (Java Server Pages) põhineb Java keelel ning
kasutab Java Servleti kujul realiseeritud skripti parserit
• Lubab koodi kirjutada kahel kujul– Tavaline JSP süntaks, kus eraldajateks <% ... %>
– XML kuju: <jsp:expression>numguess.getHint()</jsp:expression>
Veebirakenduste loomine IV - 21
Serveri skriptikeeled – JSP• Näide:
<%String name = null;if (request.getParameter("name") == null) {
%>
<%@ include file="error.html" %>
<%} else {foo.setName(request.getParameter("name"));if (foo.getName().equalsIgnoreCase("integra"))name = "acura";
if (name.equalsIgnoreCase( "acura" )) {%>
Veebirakenduste loomine IV - 22
<Viited/>• JSP Kodulehed
– http://java.sun.com
• Õpetused
Veebirakenduste loomine IV - 23
Küsimused?
=============== < ? ! ? > ================
Veebirakenduste loomine IV - 24
HTTP Protokoll• HTTP on võrguprotokoll, mis töötab TCP/IP peal ning
vahendab WWW kliendi ning serveri suhtlust
• Suhtlust alustab klient, millele server vastab jaatavalt või eitavalt. Kõik järgnevad päringud järgivad sama põhimõtet
• Pakett on tekstiformaadis ning MIME-kodeeringule vastav (sarnane e-maili formaadile)
• HTTP võib olla ”tunneldatud” või vahendatud (cache, tulemüür jms) läbi erinevate abiserverite; iga neist vahejaamadest võib sideme katkestada
Veebirakenduste loomine IV - 25
HTTP Protokoll – Versioonid• Esimene kasutusele tulnud versioon oli 0.9 ning võimaldas
lihtsat toorel kujul andmete edastust
• Versiooniga 1.0 lisandus MIME-tüüpi teadete formeering ning võimalus lisada andmetele metainformatsiooni
• Praegu on kasutusel HTTP 1.1 (RFC 2616 ”HyperText Transfer Protocol – 1.1” kättesaadav www.w3.org/protocols) ning lisab – hierarhiliste proxy’d– cache juhtimise– püsivad ühendused– virtuaalhostid – jäigemad reeglid
Veebirakenduste loomine IV - 26
HTTP Protokoll – Võimalused• Praegune versioon võimaldab
– Juhtida andmete buhverdamist cache serverites– Pärida informatsiooni juppide kaupa (näiteks kui suure faili
allalaadimine katkes võib jätkata sealt kus pooleli jäi)– Kodeerida edastatavaid andmeid ning vajadusel ka
kompresseerida– Klient võib teada anda soovitud keele(d) ja andmetüübi(d)
vastavalt sobivuse või eelistuse astmele– Korraga saab edastada mitu ressurssi (multipart messages)– Juhtida serveris asetsevaid ressursse väliselt (á la
FrontPage)
Veebirakenduste loomine IV - 27
HTTP Protokoll – Paketi struktuur• HTTP teated jagunevad päringuteks ja vastusteks • Iga teade/pakett koosneb päisest ja kehast, mis on
teineteisest eraldatud 2 reavahetuse abil
• Päis defineerib erinevad metaandmed ning juhtkäsud• Keha sisaldab mingis kodeeringus andmeid
Veebirakenduste loomine IV - 28
HTTP Protokoll – Paketi struktuur• Päringu päis:
Request-Line*((general-header | request-header | entity-header) CRLFCRLF[message-body]
• Request-Line:method ” ” Request-URI ” ” HTTP-Version CRLF
Näiteks:GET http://www.w3.org/pub/file.html HTTP/1.1
GET /pub/file.html HTTP/1.1Host: www.w3.org
Veebirakenduste loomine IV - 29
HTTP Protokoll – Paketi struktuur• Method
– GET – palub andmeid, mis on ära näidatud Request-URI kaudu– HEAD – sama, mis GET, kuid server ei tagasta andmeid– POST – pärib Request-URI poolt näidatud andmeid ning võib
sisaldada paketi keha– PUT – kaasaantud andmed tuleb salvestada Request-URI poolt
näidatud kohta– DELETE – palub kustutada Request-URIs näidatud info– TRACE – kasutatakse rakenduse-tasemel tagasiside loomiseks– CONNECT – reserveeritud proxy’de jaoks, mis suudavad end
dünaamiliselt tunneliks (SSL jms) muuta – extension-method – võimalus lisada uusi meetodied tingimusel, et
server sellest aru saab (Näiteks WebDAV [RFC 2518] lisab COPY, MOVE, SEARCH, LOCK, UNLOCK, MKCOL, MKREF, PROPFIND, PROPPATCH, PROPERTYUPDATE, SUBSCRIBE, UNSUBSCRIBE)
Veebirakenduste loomine IV - 30
HTTP Protokoll – Paketi struktuur• General-Header:
– Cache-Control– Connection– Date– Pragma– Trailer– Transfer-Encoding– Upgrade– Via– Warning
Veebirakenduste loomine IV - 31
HTTP Protokoll – Paketi struktuur• Request-Header:
– Accept | Accept-Charset | Accept-Encoding | Accept-Language– Authorization | Proxy-Authorization– Expect– From– Host– If-Match | If-None-Match– If-Modified-Since | If-Unmodified-Since– If-Range– Max-Forwards– Range– Referer | User-Agent– TE
Veebirakenduste loomine IV - 32
HTTP Protokoll – Paketi struktuur• Vastuse päis:
Status-Line*((general-header | response-header |
entity-header) CRLFCRLF[message-body]
• Status-Line:HTTP-Version ” ” Status-Code ” ” Reason-PhraseCRLF
NäiteksHTTP/1.1 200 OK
Veebirakenduste loomine IV - 33
HTTP Protokoll – Paketi struktuur• Status-Code:
– 1xx – Informatsioonilised– 2xx – Edukas tulemus– 3xx – Ümbersuunamine– 4xx – Kliendi-poolne viga– 5xx – Serveri-poolne viga
• Reason-String– Staatus-koodile vastav teade teksti kujul
Veebirakenduste loomine IV - 34
HTTP Protokoll – Paketi struktuur• Response-Header:
– Accept-Ranges– Age– Etag– Location– WWW-Authenticate | Proxy-Authenticate– Retry-After– Server– Vary
Veebirakenduste loomine IV - 35
HTTP Protokoll – Paketi struktuur• Entity-Header:
– Allow– Content-Encoding | Content-Language– Content-Length | Content-Location | Content-Range– Content-Type | Content-MD5– Expires– Last-Modified– extension-header
Veebirakenduste loomine IV - 36
HTTP Protokoll – Paketi päised• Näitlik päring
GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
Accept: text/plain; q=0.5, text/html,
text/x-dvi; q=0.8, text/x-c
Accept-Charset: iso-8859-5, unicode-1-1;q=0.8
Accept-Language: da, en-gb;q=0.8, en;q=0.7
• Vastus võib ollaHTTP/1.1 206 Partial content
Date: Wed, 15 Nov 1995 06:25:24 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Content-Range: bytes 21010-47021/47022
Content-Length: 26012
Content-Type: text/html
Veebirakenduste loomine IV - 37
HTTP Protokoll – Paketi päised• Näitlik päring 2
GET / HTTP/1.0Host: localhost
Accept: text/html, */*User-Agent: Mozilla/3.0 (compatible; Indy Library)
Saadetava dokumendi sisu (kui POST meetod)
• Vastus võib ollaHTTP/1.1 500 Internal Server Error
Server: Cinetix WebProxy Server 1.0
Content-Type: text/xml<EOL>Content-Length: 252
Tagastatava dokumendi sisu
Veebirakenduste loomine IV - 38
HTTP Protokoll – Võimalused• Milleks on vaja teada HTTP protokolli?
– Selleks, et aru saada serveri käest küsitavast ning vajadusel sellele ise vastata
– HTML võimaldab HEAD sektsioonis kasutada <META> elementi, mille abil saab brauserile erikäske anda
– Võimaldab kontrollida dokumentide hoidmist cacheserveris ning vajadusel sellest mööda minna
– Faile saab tükikaupa saata või vastu võtta– Võimaldab kasutaja autoriseerimist webiserveri
tavameetoditest erinevalt (isegi kui server seda ei nõua, võime meie seda teha meile sobival moel)
– Võimaldab otsest ligipääsu Cookie’dele
Veebirakenduste loomine IV - 39
HTTP Protokoll – Võimalused• HTTP päise väljadele saab ligi väga erinevalt
– CGI puhul tuleb tihti kogu saadetud pakett ise lahti kodeerida. Selle lihtsustamiseks on olemas ka erinevaid librareid
– ISAPI puhul saadakse kogu informatsioon läbi vastava funktsiooni. Ka siin tuleb tihti ise osalist dekodeerimist teha. Selle vältimiseks on loodud mitmeid abivahendeid (Borland Delphi puhul vastavad objektide klassid)
– Java Servlet’ide puhul on Delphi-lahendusele sarnane päringu/vastuse objektide struktuur, kus üheks osaks on ka ligipääs HTTP protokolli väljadele
Veebirakenduste loomine IV - 40
<Viited/>• Standardid
– http://www.w3c.org/standards
• RFCd– RFC 1945 – HTTP 1.0– RFC 2616 – HTTP 1.1– RFC 2660 – SHTTP– RFC 2774 – HTTP Extension Framework
Veebirakenduste loomine IV - 41
Küsimused?
=============== < ? ! ? > ================
Veebirakenduste loomine IV - 42
URI, URL, URN• URI (Universal Resource Identifier) on kasutusel
ressursside identifitseerimiseks• URI jaguneb kaheks
– URL (Universal Resource Locator) ja – URN (Universal Resource Name)
ftp:http:gopher:etc
urn:
URNs
URLs
URIs
Veebirakenduste loomine IV - 43
URI, URL, URN• URI on kujul:
<Scheme> ”:” <Scheme-specific-part>
<Scheme-specific-part> =><authority><path>?<query>
Näiteks:
http://server/file.htmlurn:isbn:1-23-456789-0
Veebirakenduste loomine IV - 44
URI, URL, URN• URL identifitseerib ressursi viidates sellele primaarse
ligipääsumeetodi abil (asukoht võrgus)
• URN indetifitseerib ressursi, millele pole võimalik otseselt viidata (raamat, inimene, jne)
• Suur osa URI skeeme on registreeritud IANA poolt (www.iana.org/assignments/uri-schemes)
• Teada URN NIDs (Namespace IDs):ietf, pin, issn, oid, newsml, oasis, publicid, jt
Veebirakenduste loomine IV - 45
URI, URL, URN• URN on kujul:
”urn:” <NID> ”:” <NSS>,
kus NID – Namespace IDja NSS – Namespace-specific String
• Näiteks:
urn:ISSN:1560-1560urn:com:microsoft:schemasurn:newsml:iptc.org:20001006:NewsMLv1.0:1urn:newsml:reuters.com:20000206:IIMFFH05643_2000-02-06_17-54-01_L06156584:1U
Veebirakenduste loomine IV - 46
<Viited/>• Standardid
– http://www.w3c.org/standards– www.iana.org/assignments/uri-schemes
• RFCd– RFC 2141 – URN Syntax– RFC 2276 – Architectual Principles for URN)– RFC 2396 – URI Generic Syntax– RFC 2611 – URN Namespace Definition– RFC 2718 – Guidlines for new URN Schemas– RFC 2648 – IETF URNs– RFC 3044 – ISSN URNs– RFC 3085 – NewsML URNs
Veebirakenduste loomine IV - 47
Küsimused?
=============== < ? ! ? > ================
Top Related