google appengine&guice

48
App Engine Et Guice 1

Upload: slimen-belhaj-ali

Post on 24-Jun-2015

205 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Google appengine&guice

1

App Engine Et Guice

Page 2: Google appengine&guice

2

PlanGoog

le AppEngin

e

• Introduction • Qu’est ce le cloud computing ?• Vue globale de GAE• Architecture• Services• Stockage des données

Google

Guice

• Qu’est ce que Guice ?• Injection de dépendance• AOP• Conclusion

Page 3: Google appengine&guice

3

Introduction

Page 4: Google appengine&guice

4

Qu’est ce que le cloud computing?

•Avec le cloud computing, les utilisateurs ou les entreprises ne sont plus gestionnaires de leurs serveurs informatiques.• Ils peuvent accéder à une multitude de services en ligne sans avoir à gérer l'infrastructure inhérente, souvent complexe.• Les applications et les données ne se trouvent plus sur l'ordinateur local mais dans un «cloud »•On déploie dans les nuages et ils se débrouillent pour que ça marche !

Page 5: Google appengine&guice

5

Trois modèles de service

Infrastructure as a service

Platform as a service

Software as a service

• Serveurs virtuels• Architectes réseau

• Environnement pour déployer une application

• Développeurs d’application

• Logiciels web configurables prêt à être utilisés

• Les utilisateurs finaux

Page 6: Google appengine&guice

6

Présentation de GAE

GAE est un service qui permet de déployer des

applications web sur l’infrastructure Google

Au début GAE supporte uniquement Python

Le service Python n’a pas eu un grand succès

Java était le langage le plus demandé (devant PHP)

Google a annoncé le support de Java pour GAE le 07 avril

2009

Page 7: Google appengine&guice

7

Présentation de GAEGoogle App Engine propose un conteneur de Servlet

et une base de données qui permettent d'héberger des

application Java sur les serveurs de Google.

un environnement de développement local complet

qui simule Google App Engine sur votre ordinateur

Page 8: Google appengine&guice

8

Présentation de GAE

Toutes les applications peuvent utiliser jusqu'à 500 Mo

d'espace de stockage, et assez de temps processeur et

de bande passante gratuitement.

Basé sur des quotas d’utilisation

Possibilité de limiter le budget quotidien

Page 9: Google appengine&guice

9

Pourquoi Google App engine?

• Montée en charge• Distribution• Authentifications• Performance• Évolutivité• Coûts réduits

Page 10: Google appengine&guice

10

Architecture globale

Cloud Computing Google

Web Server / Jetty

Application

Services

Cron

Mail

URL Fetch

MemCache

Images JPA / JDO

BigTable

GFS(Google File

System)

ConsoleAdministration

(Stats, logs, Quotas)

Déploiement

(Stats, logs, Quotas)

Security

WWWHTTP/S

Utilisateurs

Communication

Déploiement

UtilisateursAdministrateurs

API BigTable

Page 11: Google appengine&guice

11

Java ou Python?

Vous êtes libres !La même infrastructureLes mêmes services spécialisésLa même console d’administration

Page 12: Google appengine&guice

12

appengine-web.xml

Fichier de configuration de App engine

Placé dans le répertoire WEB-INF/

Il inclut :l’identifiant de l’application , numéro de version et

des listes de fichiers statiques (images ou les feuilles de style

CSS …)

Page 13: Google appengine&guice

13

Démo • Les ingrédients:

– Java 5 ou 6– Eclipse 3.3 ou plus– Plugin GAE

• Site (Eclipse): http://dl.google.com/eclipse/plugin/3.x

• Doc: http://code.google.com/intl/fr/appengine/docs/java/tools/eclipse.html

– Un compte GAE• http://appengine.google.com/

• La recette:– Nouveau projet: « Web Application Project »– Deploy to App Engine– http://xxxxxxx.appspot.com/

Page 14: Google appengine&guice

14

Les services de GAE

URL Fetch

Memcache

Mail

Image

XMPP

Google Accounts

Cron jobs: Traitements réguliers

Page 15: Google appengine&guice

15

Les services de GAE

•Communiquer via http/https

•Mémoire cache distribuée persistente•Service stable, robuste

Page 16: Google appengine&guice

16

Les services de GAE

•Stockage des images.•Manipulation des images

(rotation, translation….)

•Pour les envois , on utilise JavaMail•L’expéditeur est le compte administrateur•Reception des messages sous la forme de requêtes HTTP par App Engine qui va les transmettre à l’application

Page 17: Google appengine&guice

17

Les services de GAE•Protocole messagerie instantanée

•Votre application se connecte aux messageries instantannées compatibles XMPP (Google Talk)

•Une URL particulière traite les messages entrants

[email protected]@appspot.com

Page 18: Google appengine&guice

18

Les services de GAE

cron.xml<cronentries><cron><url> /tasks/summary</url><description> daily summary job </description> <schedule> every 24 hours</schedule></cron></cronentries>

•Service App Engine CRON configurer des tâches planifiées qui s'exécutent à des heures définies ou à intervalles réguliers.

Page 19: Google appengine&guice

19

Stockage de données Le stockage de données s’appuie sur BigTableBig table:

• développé en interne par Google• scalable (capacité de montée en charge)

Big Table n’est pas •Une base de données relationnelle classique

Mais plutôt : • C’est une base de donnée NoSQL

Page 20: Google appengine&guice

20

Stockage de données

• Dans le Datastore on peut stocker des entités.

• Une entité se définit par : Son genre (Kind) Son identifiant Un ensemble de propriétés

• L'application peut exécuter des requêtes sur les entités.

• AppEngine maintient un index pour chaque type de requête qu’on peut exécuter dans l’application.

garantir des résultats rapides sur des ensembles de données très volumineux

Page 21: Google appengine&guice

21

Stockage de données

L’accès aux données:

•API de bas niveau•API de haut niveau Datanucleus : JPA & JDO

Page 22: Google appengine&guice

22

Fonctionnalités de JPA & JDO non prises en charge

Relations d'appartenance plusieurs-à-plusieurs

Requêtes de "jointure".

Requêtes d'agrégation (GROUP BY, HAVING, SUM,

AVG, MAX, MIN).

Requêtes polymorphes : Vous ne pouvez pas exécuter

une requête d'une classe pour récupérer des instances

d'une sous-classe.

Page 23: Google appengine&guice

23

Stockage de données

Deux options de stockage de données

High Replication Datastore Master/Slave

• Le type par défaut•les données sont répliquées dans les centres de données d’une manière synchrone

•Il réplique les données de manière asynchrone dans les centres de données.• un seul centre de données peut avoir le rôle de maître lors de l'écriture.

Page 24: Google appengine&guice

24

Stockage de données

Page 25: Google appengine&guice

25

Page 26: Google appengine&guice

26

Guice?

C’est un Framework proposé par Google en 2007Fondé par Bob Lee

Page 27: Google appengine&guice

27

Guice?

Un Framework léger d’injection de dépendance pour Java 5

et au dessus

La version actuelle 3.0 (lancée 4 mars 2011)

Google Guice est apparu après la solution de Spring

Développé pour être « meilleur » que Spring IoC

Utilisé dans la plupart des applications de Google

Page 28: Google appengine&guice

28

Guice?

Les ingrédients

•IOC•Guice Module• Injection•Binding • Scope• AOP• Autres

Page 29: Google appengine&guice

29

Présentation•Les injections de dépendances ont été inventées par Martin Fowler.

• Dérivé du principe d’inversion de contrôle

•Utilisé pour avoir des applications modulaires

•Permet de réduire les dépendances entre les classes

•Utilisé pour la programmation orientée aspect

Les injections de dépendances

Page 30: Google appengine&guice

30

Cas de base:

• Dépendance : utilisation de méthodes d’une autre classe

•Généralement fait par un « new » dans le code

•Pas modulaire, difficile à maintenir, ne permet pas le changement

Les injections de dépendances

Page 31: Google appengine&guice

31

Avec une interface

• Permet à la classe A d’utiliser une interface

•Plusieurs implémentations de l’interface

•Toujours un « new » dans le code de A

•Pas beaucoup avancé

Les injections de dépendances

Page 32: Google appengine&guice

32

Avec une factory:

• Un seul «new» de la classe B dans tout le code

•Pattern Factory est lourd à implémenter

Les injections de dépendances

Page 33: Google appengine&guice

33

Le principe est simple !

vous n’avez plus besoin d’instancier les objets ou

d’utiliser des factories, c’est les objets qui viennent à

vous.

le Framework instancie pour vous et vous n’avez

qu’à les utiliser.

Les injections de dépendances avec GuiceDON’T CALL US ;

WE WILL CALL YOU

Page 34: Google appengine&guice

34

injection de dépendances avec Guice

Principe de fonctionnement:

•Utilise des abstractModule pour faire la liaison

interfaceimplémentation

•Utilise l’annotation @Inject pour déclarer les classes

à injecter

•Utilise un Injector pour charger le module dans

notre application

Page 35: Google appengine&guice

35

injection de dépendances avec Guice

Principe de fonctionnement (Les modules):

•Étendent la classe AbstractModule de Guice

•Un module peut effectuer plusieurs associations

•Une application peut avoir plusieurs modules

(1module = 1configuration)

Page 36: Google appengine&guice

36

injection de dépendances avec Guice

Principe de fonctionnement (l’injection):

Trois formes

injection sur un attribut

injection sur un constructeur

injection sur une méthode

Page 37: Google appengine&guice

37

injection de dépendances avec Guice

Principe de fonctionnement (l’injecteur):

• Injecteur Guice pour charger le module dans

notre application

•Injecter les dépendances à sa charge

•Créer une instance de la classe injectée

Page 38: Google appengine&guice

38

Les scopes

Il existe 4 scopes :

UnscopedCréer un objet à chaque

utilisation

@Singletoncréer une seul instance par

application

@RequestScopedune instance par requête

web ou RPC

@SessionScopedune instance par http

Session

Page 39: Google appengine&guice

39

Démo

Etudiant

Filière

Injector

Module

Filière GL

Page 40: Google appengine&guice

40

Page 41: Google appengine&guice

41

Programmation orientée aspect AOP

C’est un paradigme de programmation qui permet de séparer les considérations techniques (aspect en anglais) des descriptions métier dans une application.

Page 42: Google appengine&guice

42

Guice AOP

Comment ça marche ?• On peut appliquer des méthodes intercepteurs sur

des objets injectés.

•Guice AOP génère des proxies (impersonators)

•Enveloppe un objet cible pour appliquer des aspects

avant et après l’appel à cet objet

•le code entre l’objet et method invocation est appelé

interceptors.

Page 43: Google appengine&guice

43

Guice AOP

Page 44: Google appengine&guice

44

Integration

frameworks

• Struts

• GIN - GWT

• Seam

• Guice and JSF

• JPA

MobileRoboGuice - Guice for Android.

Page 45: Google appengine&guice

45

Les nouveautés de Guice 3.0 supporte JSR 330 : une proposition lancée par

Springsource et Google visant à standardiser un jeu d’annotation pour gérer l’injection de dépendance.

Building avec Maven

D’autres annotations:• @ImplementedBy• @providedBy• @Singleton• @Provides• @CheckedProvides• @RequestScoped• @SessionScoped. . . . . . .

Page 46: Google appengine&guice

46

Guice VS Spring

Spring : le paramétrage des classes se fait via un fichier

de configuration XML

Guice: se fait directement dans le code via des

annotations.

Frameworks très similaires

Spring reste très utilisé pour l’IoC

Mais lourd et format compliqué

Guice très léger et plus facile à utiliser

Conclusion

Page 47: Google appengine&guice

47

perspectives

RoboGuice RoboGuice est un petit framework permettant d’adapter Google Guice au cycle de vie particulier des applications Android. De plus, il ajoute des fonctionnalités qui simplifient le développement Android.

Page 48: Google appengine&guice

48

Merci pour votre attention

Questions