programare web - de la cgi la servere de aplicatii

32
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/ 1 Tehnologii Web Tehnologii Web 2007 2007 Programare Web Programare Web De la CGI la servere de De la CGI la servere de aplicatii aplicatii Dr. Sabin-Corneliu Buraga Facultatea de Informatica Universitatea “A.I.Cuza” – Iasi, Romania http://www.infoiasi.ro/~busaco/

Upload: sabin-buraga

Post on 11-Jan-2015

6.909 views

Category:

Technology


7 download

DESCRIPTION

Short presentation of CGI standard and an overview regarding characteristics of Web application servers and frameworks.

TRANSCRIPT

Page 1: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

1

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

Programare WebProgramare WebDe la CGI la servere de De la CGI la servere de

aplicatiiaplicatii

Dr. Sabin-Corneliu BuragaFacultatea de Informatica

Universitatea “A.I.Cuza” – Iasi, Romania

http://www.infoiasi.ro/~busaco/

Page 2: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

2

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Standardul CGI • Alternative• Caracteristici comune

ale serverelor de aplicatii Web

cuprinscuprins

Page 3: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

3

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Standardul CGI – Caracterizare– Variabile de mediu– Invocarea scripturilor CGI– SSI (Server Side Includes)

cuprinscuprins

Page 4: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

4

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Standard de facto pentru interactiunea programatica a clientilor cu serverele Web – CGI/1.1

• Scop: generarea dinamica pe server de reprezentari ale unor resurse solicitate de un client Web

• Un program (script) CGI se invoca pe server, in mod implicit sau explicit (i.e., preluarea informatiilor dintr-un formular)

• Scripturile CGI pot fi concepute in orice limbaj disponibil pe server– Limbaje interpretate:

bash, Perl (modulul CGI), Python, Pike, Ruby,...– Limbaje compilate: C, C++,...

cgi | caracterizarecgi | caracterizare

Page 5: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

5

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Un script CGI scrie datele la iesirea standard (stdout)

• Un script CGI genereaza/foloseste anteturi HTTP, utilizind standardul MIME – exemplu: Content-type: text/html

• Unui program CGI, datele de procesat i se vor trimite la intrarea standard sau prin intermediul unor variabile de mediu

• Detalii: http://hoohoo.ncsa.uiuc.edu/cgi

cgi | programecgi | programe

Page 6: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

6

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Interactiunea dintre clientul si serverul Web

cgi | programecgi | programe

Page 7: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

7

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Un program CGI are acces la variabilele de mediu:– Independente de cerere:

SERVER_NAME, GATEWAY_INTERFACE– Specifice cererilor transmise spre script-ul

CGI:SERVER_PROTOCOL, REQUEST_METHOD, QUERY_STRING, REMOTE_HOST, REMOTE_ADDR, CONTENT_TYPE, CONTENT_LENGTH

cgi | variabile/1cgi | variabile/1

Page 8: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

8

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Variabile suplimentare (generate de serverul Web): HTTP_ACCEPT, HTTP_USER_AGENT,...

• Script CGI care afiseaza variabilele de mediu:

#!/usr/bin/perl # Afiseaza mediul print "Content-type: text/plainContent-type: text/plain\n\n"; print "Environment:\n\n"; foreach $key (keys %ENV) { printf "%16s = %s\n", $key, $ENV{$key}; }

variabile.cgi

cu drepturi de citire & executie

cgi | variabile/2cgi | variabile/2

Page 9: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

9

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

#!/bin/bash

echo “echo “Content-type: text/htmlContent-type: text/html””echoechoecho “<p>Salut din CGI!</p>”

• Invocare directa (prin GET):http://domeniu/~utilizator/cale/salut.cgi

salut.cgi

stocat in ~/html/cale

cgi | invocare/1cgi | invocare/1 De experimentat si

alte tipuri MIME(text/plain, text/xml)

Page 10: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

10

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

<form action="http://www.infoiasi.ro/cgi-bin/max.cgi" method="GET"> <p>Va rugam, introduceti doua numere: <input type="text" name="nr1" size="5" /> <input type="text" name="nr2" size="5" /> </p> <p><input type="submit" value="Afla maximul" /></p></form>

• Invocare dintr-un formular interactiv (GET sau POST)

cgi | invocare/2cgi | invocare/2

Page 11: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

11

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

URL special (cazul GET)

cgi | invocare/3cgi | invocare/3

Page 12: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

12

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Pentru fiecare cimp al formularului, se genereaza o pereche nume_cimp=valoare delimitata de & care va fi adaugata URL-ului unde este stocat programul CGI:http://www.infoiasi.ro/cgi-bin/max.cgi?nr1=7&nr2=4

• Acest URL este codificat (%hexa, spatiul devine +) – URL encoding (vezi cursul anterior)

• Serverul va invoca scriptul CGI pasindu-i datele la intrarea standard sau via variabile de mediu

cgi | invocare/4cgi | invocare/4

Page 13: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

13

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Procesarea datelor prin metoda GET– Datele vor fi disponibile in variabila

QUERY_STRING

printf (“Content-type: text/html\n\n”);…data = getenv (“QUERY_STRING”); /* preia variabila de mediu */sscanf (data, “nr1=%ld&nr2=%ld”, &nr1, &nr2);…printf (“<p>Maximul dintre %ld si %ld este …</p>”,…);

cgi | invocare/5cgi | invocare/5

Page 14: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

14

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Procesarea datelor prin metoda POST– Datele vor fi accesate de la intrarea

standard (stdin), lungimea in octeti a datelor primite fiind stocata in variabila CONTENT_LENGTH

printf (“Content-type: text/html\n\n”);…lenstr = getenv (“CONTENT_LENGTH”);sscanf (lenstr, “%ld”, &len);fgets (data, len+1, stdin); /* citim de la intrarea standard */…printf (“<p>Maximul dintre %ld si %ld este …</p>”,…);

cgi | invocare/6cgi | invocare/6

Page 15: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

15

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Metoda GET se foloseste pentru generarea de reprezentari ale resurselor cerute (starea serverului nu trebuie sa se modifice)

• Metoda POST se utilizeaza atunci cind datele transmise serverului au dimensiuni mari (continut de fisiere) sau sint “delicate” (e.g., parole); de asemenea, cind invocarea scriptului poate conduce la modificari ale starii pe server (adaugarea unei inregistrari, alterarea unui fisier,...)

• Folosind GET, se poate stabili un “bookmark” pentru acces ulterior la o resursa Web

cgi | GET cgi | GET vs.vs. POST POST

Page 16: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

16

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Scop: posibilitatea executiei scripturilor CGI si a altor actiuni, direct din pagina Web

• Comenzi (directive) SSI: <!--#directiva --> • Fisierele continind directive SSI in mod

uzual au extensia .shtml

server side includesserver side includes

Page 17: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

17

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Comenzi uzuale:– echo – afiseaza valoarea anumitor variabile

<p>Data si timpul: <!--#echo var="DATE_LOCAL"--></p><p>Legătura prin care s-a ajuns aici este <!--#echo var="HTTP_REFERER" --></p><p>Numele acestui document este <!--#echo var="DOCUMENT_NAME" --></p>

– fsize – furnizeaza marimea unui fisier<!--#fsize file="index.html" -->

server side includesserver side includes

Page 18: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

18

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Comenzi uzuale:– flastmod – ofera data ultimei modificari

a unui fisier (aflat pe serverul Web)<p>Ultima modificare: <!--#flastmod file="web.html" --></p>

– exec – executa un script CGI (nu-i permisa la IIS)<!--#exec cgi="citat.pl.cgi" -->

– include – include un fisier<!--#include file="antet.html.inc" -->

server side includesserver side includes

Atentie la problemele de securitate ce pot aparea!

Page 19: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

19

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Folosirea altor interfete de programare Web pe partea de server – mod_perl (Apache)– NSAPI (Netscape Server API)– ISAPI (Microsoft Internet Services API)– Servere de aplicatii Web – reprezentative:

•ASP (Active Server Pages) .NET• JSP (Java Server Pages) •PHP (PHP: Hypertext Preprocessor)•Ruby on Rails

alternativealternative

Page 20: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

20

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Caracteristici comune ale serverelor de aplicatii Web– Caracterizare– Comparatii privind facilitatile

oferite

cuprinscuprins

Page 21: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

21

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Ofera posibilitatea de a include cod (script) direct in cadrul documentelor Web, cod invocat pe server generarea de continut dinamic pe partea de server

• Maniera de includere depinde de serverul de aplicatii Web:– <% ... %> pentru ASP / ASP.NET– <% ... %> pentru JSP (Java Server Pages)– <?php ... ?> pentru PHP– Mai general: <script language=“...”>...</script>

servere de aplicatiiservere de aplicatii

Page 22: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

22

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Beneficiaza de facilitatile oferite de cadrul de lucru pus la dispozitie de serverul de aplicatii– Limbaj(e) de programare– API-ul de baza– Suport pentru baze de date– Suport pentru interactiunea Web– Suport pentru cookie-uri & sesiuni – Suport pentru procesari speciale (e.g., XML)– Medii de dezvoltare– Alte facilitati particulare

servere de aplicatiiservere de aplicatii

Page 23: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

23

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Beneficiaza de facilitatile oferite de cadrul de lucru pus la dispozitie de serverul de aplicatii– Limbaj(e) de programare

• VBScript & JScript (ASP)• limbajele .NET (ASP.NET)

ASP.NET este independent de limbaj, fiind parte a .NET Framework

• Java (servlet-uri, JSP)• Python (Zope)• Ruby (Ruby on Rails)• altele

servere de aplicatiiservere de aplicatii

Page 24: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

24

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Beneficiaza de facilitatile oferite de cadrul de lucru pus la dispozitie de serverul de aplicatii– Limbaj(e) de programare

• Strong typed vs. weak typed (ASP.NET/JSP vs. ASP/PHP)

• Utilizare de spatii de nume si instante de clase• Raportare de erori (ASP, PHP4) vs.

exceptii (ASP.NET, JSP, PHP5)• Pur obiectuale (ASP.NET, JSP) sau nu (PHP)• Interpretate sau compilate (de cele mai multe ori,

se prefera generarea de cod intermediar – IL)

servere de aplicatiiservere de aplicatii

Page 25: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

25

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Beneficiaza de facilitatile oferite de cadrul de lucru pus la dispozitie de serverul de aplicatii– API-ul de baza

• Utilizarea “puterii” limbajului si framework-ului (functii/clase predefinite) migrare facila de la aplicatii clasice la cele Web securitate, consistenta, acces la resursele mediului

• Se poate asigura si independenta de platforma• PHP Built-in functions vs. ASP.NET CLR (Common

Language Runtime) – aceeasi comparatie si la JSP• Functionalitatile incluse in API-ul de baza

nu necesita recompilarea serverului de aplicatii

servere de aplicatiiservere de aplicatii

Page 26: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

26

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Beneficiaza de facilitatile oferite de cadrul de lucru pus la dispozitie de serverul de aplicatii– Suport pentru baze de date

• Acces robust la servere de baze de date• ADO.NET pentru ASP.NET• JDBC (Java DataBase Connectivity) pentru JSP• Functii PHP predefinite pentru o pleiada de RDBMS,

via biblioteci incorporate (SQLite si mysqli in PHP5) sau extensii; se poate utiliza si interfata ODBC

• “Legarea” datelor de program (data binding) este realizata automat (ASP.NET) sau manual (PHP)

• Eventual, se pot folosi framework-uri aditionale (e.g., Hibernate – Java)

servere de aplicatiiservere de aplicatii

Page 27: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

27

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Beneficiaza de facilitatile oferite de cadrul de lucru pus la dispozitie de serverul de aplicatii– Suport pentru interactiunea Web

• Controale Web disponibile pe server, fie emulind cimpurile din formularele (X)HTML, fie oferind controale noi (e.g., calendar) generarea de cod HTML (+JavaScript) in functie de client

– ASP.NET (<asp:control>), PHP 5 via PRADO– similar, pentru platforma Java

• Procesarea evenimentelor provenind de la client (ASP.NET) – event driven Web applications

• Transferuri asincrone prin AJAX (module/clase aditionale)

servere de aplicatiiservere de aplicatii

Page 28: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

28

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Beneficiaza de facilitatile oferite de cadrul de lucru pus la dispozitie de serverul de aplicatii– Medii de dezvoltare

• Unele, foarte sofisticate• Comerciale (Delphi, Visual Studio .NET, JBuilder,

Zend,...), gratuite (Kylix, IBM Eclipse, WebMatrix), de evaluare/educationale (Visual Studio Express,...)

• Depanatoare, optimizatoare de cod (e.g., Zend Optimizer), profilers etc.

• Facilitati pentru dezvoltatorii de servicii Web• Clase/componente/biblioteci aditionale

(comerciale ori gratuite)

servere de aplicatiiservere de aplicatii

Page 29: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

29

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Beneficiaza de facilitatile oferite de cadrul de lucru pus la dispozitie de serverul de aplicatii– Suport acordat inginerilor software

• Aplicatii N-tier• Unele framework-uri incurajeaza folosirea

sabloanelor de proiectare (design patterns): MVC (Model-View-Controller) – e.g., Ruby on Rails

• Unitati de testare automata (JUnit, PHP Unit,...)• Generarea automata de documentatii,

in diverse formate• Suport pentru versioning (CVS, Subversion,…)• Pot folosi o paradigma (e.g., agile programming)

servere de aplicatiiservere de aplicatii

Page 30: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

30

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Beneficiaza de facilitatile oferite de cadrul de lucru pus la dispozitie de serverul de aplicatii– Alte facilitati

•Suport pentru dezvoltarea de aplicatii Web complexe

– Aplicatiile Web pot folosi containere de componente

– Arhitecturi orientate spre servicii (SOA – Service Oriented Architecture)

•Suport pentru arhitecturi/platforme avansate de tip enterprise (e.g., Grid)

servere de aplicatiiservere de aplicatii

Page 31: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

31

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

• Standardul CGI • Alternative• Caracteristici comune

ale serverelor de aplicatii Web

rezumatrezumat

Page 32: Programare Web - De la CGI la servere de aplicatii

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

32

Teh

nolo

gii

Web

Teh

nolo

gii

Web

20

07

20

07

Intrebari…?