• Aucun résultat trouvé

M1 Outils de l’Internet lundi 6 décembre 2010

N/A
N/A
Protected

Academic year: 2022

Partager "M1 Outils de l’Internet lundi 6 décembre 2010"

Copied!
56
0
0

Texte intégral

(1)

10. Frameworks

M1 Outils de l’Internet lundi 6 décembre 2010

[email protected]

(2)

Présentation

(3)

Qu'est-ce que c'est ?

Environnement de travail

Développer des sites dynamiques Développer des applications web

Librairies, modèles, réutilisation de code...

(4)

Évolution

Web statique : modifications à la main sur chaque page

CGI permet la génération dynamique de contenu

Apparition de langages spécialement pensés pour le web (PHP, ColdFusion, ASP)

De nombreuses librairies utilisées pour le développement d'appli webs → frameworks

(5)

Architecture

Model View Controller

Deux principales façons de faire interagir le contrôle et la vue : Push et Pull.

(6)

Push

Le contrôleur effectue une action et cette action modifie la vue

Exemple : envoyer un message ou déclencher une action

Frameworks : Django, Ruby on Rails

(7)

Pull

La vue fait appel au contrôleur pour obtenir les informations qu'elle doit présenter

Exemple : représentation d'informations contenues dans la BDD

Frameworks : Struts2, Tapestry

(8)

Fonctionalités

(9)

Sécurité

Authentification Autorisation

Porte sur le contenu et les actions

Ex. : Django utilise des rôles pour répartir les droits

(10)

Bases de données

API unifiée pour communiquer avec différents formats de BDD

Même code si on change de BDD

Possibilité de grouper les échanges avec la BDD pour plus d'efficacité

(11)

Bases de données

Gestion de transactions

Outils de migration de données Object-Relational Mapping

(12)

Object-Relational Mapping

ORM, O/RM, O/R mapping

Conversion d'un objet complexe en un ensemble d'entrées dans une BDD ne contenant que des

types simples

Alternative : utiliser des BDD orientées objet (par exemple des BDD XML)

(13)

Transactions

Objectif : maintenir l'intégrité des données

Solution : gérer plusieurs opérations comme une opération indivisible

Tester l'ensemble des opérations, puis les valider si aucune erreur

(14)

Structure des URL

Utilisation d'expressions régulières et de conversions d'URL

Permet d'alléger les URL

ex. : page.cgi?nom=guybrush&item=ship

page/guybrush/ship/

(15)

Gabarits

En anglais Templates

La partie statique d'une page

Description d'une page avec les emplacements des données (mais sans les données)

Fait partie de la vue (donc pas de vraie programmation)

(16)

Cache

Conserver des données qui seront réutilisées plus tard

Certains frameworks permettent de gérer le fonctionnement du cache en séparant les

données communes (p.ex. les templates)

(17)

Configuration automatique

Exécution automatique de tâches courantes Convention over configuration

Exemple : génération automatique de la structure de la BDD lors de l'exécution Utilisation de conventions de nommage

(18)

AJAX

Asynchronous JavaScript and XML

Il est assez compliqué d'écrire entièrement des pages en AJAX

Il existe des frameworks spécialement pour AJAX

Les frameworks gèrent automatiquement les communications AJAX en fonction des

structures des objets

(19)

Langages

(20)

JAVA

Utilisent en général Java EE Spring Framework

Apache Struts Apache Struts 2 Google Guice

Induction Stripes

Tapestry Hivemind

(21)

C# et VB.NET

Langages utilisés avec ASP.NET (Microsoft)

(22)

Python

Django Zope

TurboGears Quixote

Pylons web2py

(23)

Perl

Catalyst

Mojolicious

(24)

PHP

Symfony CakePHP

Zend Framework

(25)

Ruby

Ruby on Rails Merb

Sinatra

(26)

Principes et philosophies

(27)

Don't Repeat Yourself (DRY)

Idée : Réduire au maximum les répétitions d'informations

Chaque information ne doit apparaître qu’une seule fois

Code source

Base de données

(28)

DRY

Permet de maintenir la cohérence d'un système de grande taille

Facilite la modification des données

Présenté par Andy Hunt et Dave Thomas dans leur livre The Pragmatic Programmer.

"Every piece of knowledge must have a single, unambiguous, authoritative representation within a system."

(29)

Limites de DRY

Ne peut pas être automatisé (certaines informations sont égales mais pourraient devenir différentes)

Application stricte du concept peut-être plus coûteux que les bénéfices

Difficile à gérer dans les systèmes communautaires

(30)

Limites de DRY

Informations générées automatiquement

peuvent être dupliquées sans que ce soit un problème

Les textes pour les humains contiennent des redondances et ne peuvent pas toujours être générés automatiquement

Certains langages de programmation ne permettent pas la factorisation facilement

(31)

Principe d'abstraction

Forme plus général de DRY

Abstraire les éléments communs de différents objets

Utilisation des possibilités des langages de

programmation : objets/classes, fonctions de haut niveau, etc.

(32)

Principe d'abstraction

Benjamin C. Pierce Types and Programming Languages (2002) :

Each significant piece of functionality in a program

should be implemented in just one place in the source code.

Where similar functions are carried out by distinct pieces of code, it is generally beneficial to combine them into one

by abstracting out the varying parts.

(33)

Principe d'abstraction

David A. Schmidt The structure of typed programming languages (1994) :

The phrases of any semantically meaningful syntactic class may be named.

(34)

Convention over Configuration

Également Coding by Convention

Idée : réduire le nombre de choix à spécifier par les programmeurs tout en conservant l'ensemble des possibilités

Seul ce qui n'est pas conventionnel doit être décrit

On ne perd pas en flexibilité

(35)

Convention over Configuration

Les fichiers de configuration sont bien plus simples

Exemples de frameworks :

Spring, Ruby on Rails, CakePHP, Zend Framework

Classes → Tables en BDD (attributs → colonnes)

(36)

Gabarits

Séparer les données de la présentation

Similaire au principe des formulaires (papiers)

Très fréquemment utilisés pour la génération automatique de pages

(37)

Gabarits

Développer des applications faciles à modifier Séparation de la vue et des données

Principes flous, difficile à formaliser entièrement Les gabarits peuvent être récursifs

Utilisation de la notion d'héritage

(38)

Quelques Exemples

(39)

Django

Écrit en Python Open Source

Tire son nom de Django Reinhardt

(40)

Django : composants

Object Relational Mapper (classes Python → BDD) Traitement des URL par expressions régulières

Système de templates

(41)

Django : fonctionnalités

Serveur web pour tester

Système de validation des entrées Gestion des caches

Système de sérialisation en XML ou JSON

Le système de templates est facilement extensible

(42)

Django : fonctionnalités

Système d'authentification extensible Interface dynamique d'administration Gestion de flux RSS et Atom

(43)

Django : compatibilité

Apache avec mod_python (ou mod_wsgi) FastCGI

PostgreSQL, MySQL, SQLite et Oracle

(44)

Ruby on Rails

Programmé en Ruby

Basé sur le projet Basecamp de 37signals Publié en open source en 2004

Inclus dans Mac OS X 10.5 (2007)

(45)

RoR : fonctionalités

Fonctionne par échafaudage (scaffolding) :

spécification de l'utilisation de la BDD permet de produire une base d'application (MVC)

Serveur web en Ruby (WEBrick)

Fonctionne avec Apache (Passenger, FastCGI,

mod_ruby)

Moteur de production : Rake

(46)

RoR : philosophie

Convention over Configuration Don't Repeat Yourself

(47)

Zope

Z Object Publishing Environment Open source

Orienté objet

Écrit en Python Interface web

(48)

Zope : fonctionnalités

Objets dans une BDD (pas de fichiers) Encapsulation facile

Conversion URL → objets

Utilise la Zope Objects Database

(49)

What a long, strange trip

it's been...

(50)

Internet : vue d'ensemble

Matériel

Encodage/Formats Protocoles

Langages

Applications Sécurité

(51)

Matériel

Vu rapidement au premier cours Voir avec Emmanuel...

(52)

Encodage

Beaucoup de formats sur Internet Les normes évoluent

Réutilisation de normes (ex. MIME, URI)

(53)

Protocoles

DNS, mail, web, sécurité, etc.

Différentes structures possibles (P2P, client- serveur, Radius, mail, etc.)

(54)

Langages

Web : *ML, CSS, JS, PHP, Python, LDAP, etc.

Liés aux protocoles, applications et à l'architecture (p.ex. MVC)

(55)

Sécurité

À tous les niveaux physique

réseau

protocoles langages

applications humain

(56)

Applications

S'appuient sur les autres points De plus en plus diversifiées

Motivent l'évolution des formats et protocoles

Applications web ou locales (avec fonctionnalités en ligne)

Références

Documents relatifs

Donner le nombre moyen de comparaisons pour trouver chaque élément du tableau (pour chaque

La Bourse de Casablanca est désormais la première bourse d’Afrique et l’une des premières dans le monde à certifier son système de management de la

Il est recommandé de porter des lunettes de sécurité, des gants de protection, de se laver les mains après utilisation, d'assurer une bonne ventilation du lieu de travail, et de

Au niveau global, les charges d’exploitation SIH s’élèvent à 510,8 millions d’euros, soit 1,5% des charges d’exploitation totales des établissements de santé. L’analyse

indicateurs et la collecte des premières données en 2015, pour une mise en oeuvre des premières mesures dès 2017. Le travail sur la capacité de charge pour les plongeurs et pour

L’Agence France Trésor a présenté le mercredi 8 décembre 2021 son programme indicatif de financement pour 2022 qui prévoit 260 milliards d’euros d’émissions de dette à moyen

8 - Pluralité des fonctions des associations selon leur fonction principale Opale, enquête associations culturelles employeuses 2020 (données 2018).. Lecture : 74 % des

2 Quelques exemples de traitement des données Économiser l'espace.. Détecter et corriger