Introduction

publicité
Programmation Web
Introduction
Jean-Rémy Falleri
[email protected]
Enseirb-Matmeca
Département Télécommunications
Présentation du module
●
●
●
Savoir faire : comprendre et mettre en place
une application Web
Pédagogie : cours en salles machines, autoformation et projets,
pas de supports !
Évaluation : QCM (1/3) et projet (2/3)
Organisation du module
1.Introduction au Web (1 séance amphi)
2.Langages de présentation des données : HTM
et CSS (2 séances, salles machines)
3.Programmation cote serveur : PHP
(2 séances,
salles machines)
Particularités du Web business
●
Impact et environnement mondial
●
Technologies ouvertes
●
Investissement faible
●
Créativité fortement valorisée
Success stories
●
YouTube
●
●
●
Fondé en 2005 par trois anciens de PayPal en une nuit
Revendu à Google 1,65 milliards de dollars en 2006
Wikipedia
●
●
●
Créé en 2001
Modèle participatif
Aujourd’hui recense plus de 10 millions d’articles en
200 langues différentes
Success stories (2)
●
Google
●
●
●
Elaboré dans un garage de la Silicon Valley par deux
étudiants américains de 23 et 24 ans
Sa valeur est estimée aujourd’hui à plus de 200
milliards de dollars.
Meetic
●
●
Créé en 2001 par l’entrepreneur Marc Simoncini
pour occuper son temps libre
Chiffre d'affaire en 2010 : 186 millions d'euros
Les défis du Web business
●
Volatilité technologique
●
Cadre législatif flou
●
Monétisation difficile
Internet
Réseau mondial de machines interconnectées
Architecture d'Internet
●
Architecture en couches simplifiée
●
Les couches physiques sont masquées par IP
●
Les couches supérieures du modèle OSI sont
fusionnées dans une couche application
Applications
TCP – SSL/TLS
IP
Accès réseau
HTTP, DNS, FTP, POP3, SMTP, ...
IP et TCP
●
●
●
IP fournit un adressage et un moyen
d'envoyer des paquets à destination
TCP permet d'établir une connexion fiable
entre deux machines sur un port. SSL et
TLS sont les pendants cryptés de TCP
Ces deux protocoles forment l'ossature
d'Internet, la valeur ajoutée se trouve sur la
couche application
Domain Name System
●
●
DNS vs. IP google.fr
:
ou 74.125.230.223?
DNS est un système hiérarchique et distribué
qui traduit un nom de domaine vers une IP
.
com
org
net
wikipedia
fsf
...
nds
de
...
de.wikipedia.org.
de
...
Exemple
Gouvernance
●
●
Internet Corporation for Assigned Names and
Numbers (ICANN) : gère les adresses IP et les
serveurs roots DNS pour les Regional Internet
Registries (RIR), ainsi que les numéros de ports
Les RIR gèrent les serveurs DNS et les adresses
IP au sein d'une zone géographique pour les
Local Internet Registries
●
●
RIPE NCC pour l'Europe et une partie de l'Asie
Les LIR attribuent les adresses aux utilisateurs
Couche application
●
DNS est un premier exemple
●
D'autres exemples connus :
●
●
●
●
●
Le
Le
Le
Le
...
mail (POP, IMAP et SMTP)
transfert de fichiers (FTP)
transfert de documents (HTTP)
chat (XMPP)
Le Web (enfin!)
Système d'information sur Internet
Technologies du Web
●
●
●
●
●
Uniform Resource Locator (URL) permet de
localiser les ressources
HyperText Transfert Protocol (HTTP) protocole
permettant de s'échanger les ressources
Un Serveur Web stocke et sert les ressources
Un Navigateur Web permet aux clients de
manipuler les ressources
HyperText Markup Language (HTML) permet de
mettre en forme les ressources
Uniform Resource Locator
●
Chaîne de caractères permettant d'identifier une ressource
●
Syntaxe :
scheme://domain:port/path?
query_string#fragment_id
●
●
●
●
●
Scheme : protocole (HTTP, FTP, ...)
Domain : domaine DNS
Path : chemin de la ressource sur le serveur
Query_string : passé au serveur (optionnel)
Fragment_id : partie dans le document (optionnel)
HyperText Transfert Protocol
●
Protocole client-serveur et sans état
permettant de manipuler des ressources
●
●
●
●
Connexion client – serveur
Le client envoie une requête au serveur
Le serveur répond et ferme la connexion
Principales commandes
●
●
GET permet de récupérer une ressource
POST permet d'envoyer du contenu à une ressource
En-têtes HTTP
●
●
●
Disponibles à partir de HTTP 1.0
Utilisables lors de la requêtes par le client ou
de la réponse par le serveur.
Spécifiées dans les lignes suivant la requête o
le code de réponse
●
●
Sous la formeNom: Valeur
Séparées par une ligne vide du corps du message
Cookies
●
En-têtes permettant de stocker des valeurs sur le
client
●
Envoi par le serveur de :
SetCookie: name=value, Expires=date
●
Envoi par le client de :
Cookie: value
●
Détruits après la période d'expiration et valables
sur un seul nom de domaine
Pipelining HTTP
●
Permet d'envoyer plusieurs requêtes dans la
même connexion TCP, avec les en-têtes
Connection: Keep-Alive
et Connection: Close
no pipelining
client
open
pipelining
server
client
open
tme
close
close
server
User agent
●
●
Permet au serveur de savoir exactement quel client tente
un connexion
Plusieurs utilisations
●
●
●
Vérifier que le client n'est pas un programme « automatique »
Proposer une version différente mobile – ordinateur de bureau
En-tête User-Agent:value
●
Chrome : Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17
(KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17
●
Iphone : Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS
X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1
Mobile/9A334 Safari/7534.48.3
Serveur Web
●
●
●
●
Logiciel permettant de réagir aux requêtes HTTP
et pouvant servir un très grand nombre de clients
simultanément
Utilise des optimisations de type cache
En général installé sur une machine propre voire
un cluster
Peut se brancher avec des langages de
programmation côté serveur via CGI (C, Java,
PHP, etc.)
Principaux serveurs Web
Navigateur Web
●
●
Logiciel qui permet à un client d’accéder à
des ressources via HTTP de manière
complètement transparente
Permet de visualiser de manière graphique
une multitude de formats de données (HTML,
XML, SVG, RSS, …)
●
Peut exécuter du code JavaScript
●
Utilise aussi des optimisations de type cache
Les applications Web
●
●
●
●
Application client-serveur qui s’exécute sur le Web
en général via un navigateur web
Ensemble de codes sources hétérogènes : HTML,
code côté client, code côté serveur
Avantages : déploiement facile, utilise peu de
ressources côté client
Inconvénients : interfaces pauvres, nécessite une
infrastructure serveur solide, ne fonctionne pas
sans réseau ou serveur
Les styles d'applications Web
1.Les applications statiques
2.Les applications dynamiques côté serveur
3.Les applications dynamiques côté serveur et
client
4.Les applications orientées données
Applications statiques
1. requête client
2. réponse directe serveur
Analyse
●
Avantages
●
●
●
Facile à mettre en œuvre (uniquement du HTML)
Maintenance minimale
Inconvénients
●
●
Interface sommaire
Contenu fastidieux à produire
Applications dynamiques serveur
1. requête client
3. réponse serveur
2. exécution de programmes
côté serveur calculant la réponse
Analyse
●
Avantages
●
●
●
Séparation données - présentation
Production de contenu beaucoup plus rapide
Inconvénients
●
●
●
Interface sommaire
Charge serveur plus élevée
Nécessite de connaître un langage de
programmation supplémentaire
Applications dynamiques serveur et
client
1. requête client
3. réponse serveur
4. exécution de JavaScript
côté client
2. exécution de programmes
côté serveur calculant la réponse
Analyse
●
Avantages
●
●
●
●
Séparation données - présentation
Production de contenu beaucoup plus rapide
Interface moyenne
Inconvénients
●
●
●
Charge serveur plus élevée
Il faut gérer les différents navigateurs
Nécessite de connaître deux langages de
programmation supplémentaires
Applications orientées données
1. requête client
3. réponse serveur
4. exécution de programmes
utilisation de composants natifs
2. exécution de programmes
côté serveur calculant la réponse
Analyse
●
Avantages
●
●
●
●
Séparation données - présentation
Production de contenu beaucoup plus rapide
Interface riches : utilisation de composants natifs
Inconvénients
●
●
●
Charge serveur plus élevée
Nécessite de connaître deux langages de programmation
supplémentaires et les systèmes natifs
Il faut décliner l'application pour les différentes plate-formes
What's next ?
●
Apprentissage des technologies de
présentation des données
●
●
●
HTML
CSS
Apprentissage d'un langage de programmation
simple côté serveur : PHP
Téléchargement