47
Veebirakenduste loomine IV - 1 Serveripoolsus Serveri arhitektuur Serveri laiendusvõimalused HTTP protokoll Serveripoolsed skriptikeeled

05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

Embed Size (px)

Citation preview

Page 1: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

Veebirakenduste loomine IV - 1

Serveripoolsus

• Serveri arhitektuur• Serveri laiendusvõimalused• HTTP protokoll• Serveripoolsed skriptikeeled

Page 2: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

Veebirakenduste loomine IV - 2

Serveri arhitektuur • WWW Server suudab tavaliselt tegeleda vaid failide

edastamisegaServer

Server

Klient

...Internet

exte

nsio

ns

DB

Page 3: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

Veebirakenduste loomine IV - 3

Serveri arhitektuur

Server

CGI Engine

ISAPI/ NSAPI /WSAPIEngine

Apache modules

Executableprograms

DLL Extensionlibraries

Apache loadablemodules

SSI Engine

Multithreaded engine

Page 4: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 5: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 6: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 7: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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)

Page 8: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 9: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 10: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 11: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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)

Page 12: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

<?>

Page 13: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 14: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

Veebirakenduste loomine IV - 14

<Viited/>• ColdFusion Kodulehed

– http://www.coldfusion.com

• Õpetused

Page 15: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 16: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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/

Page 17: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 18: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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>

Page 19: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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)

Page 20: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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>

Page 21: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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" )) {%>

Page 22: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

Veebirakenduste loomine IV - 22

<Viited/>• JSP Kodulehed

– http://java.sun.com

• Õpetused

Page 23: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

Veebirakenduste loomine IV - 23

Küsimused?

=============== < ? ! ? > ================

Page 24: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 25: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 26: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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)

Page 27: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 28: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 29: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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)

Page 30: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

Veebirakenduste loomine IV - 30

HTTP Protokoll – Paketi struktuur• General-Header:

– Cache-Control– Connection– Date– Pragma– Trailer– Transfer-Encoding– Upgrade– Via– Warning

Page 31: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 32: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 33: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 34: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

Veebirakenduste loomine IV - 34

HTTP Protokoll – Paketi struktuur• Response-Header:

– Accept-Ranges– Age– Etag– Location– WWW-Authenticate | Proxy-Authenticate– Retry-After– Server– Vary

Page 35: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 36: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 37: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 38: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 39: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 40: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 41: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

Veebirakenduste loomine IV - 41

Küsimused?

=============== < ? ! ? > ================

Page 42: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 43: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 44: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 45: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 46: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

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

Page 47: 05 - Veebirakendused - Server ja laiendusedpriidu/courses/web/WebCourseV2/Slides/WEB-05... · Veebirakenduste loomine IV - 3 Serveri arhitektuur Server CGI Engine ISAPI / NSAPI

Veebirakenduste loomine IV - 47

Küsimused?

=============== < ? ! ? > ================