05 - veebirakendused - server ja laiendusedpriidu/courses/web/webcoursev2/slides/web-05... ·...

Post on 06-Feb-2018

224 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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