Google appengine&guice

Preview:

Citation preview

1

App Engine Et 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

3

Introduction

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 !

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

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

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

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

9

Pourquoi Google App engine?

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

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

11

Java ou Python?

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

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 …)

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/

14

Les services de GAE

URL Fetch

Memcache

Mail

Image

XMPP

Google Accounts

Cron jobs: Traitements réguliers

15

Les services de GAE

•Communiquer via http/https

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

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

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

anything@app-id.appspotchat.comApp-id@appspot.com

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.

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

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

21

Stockage de données

L’accès aux données:

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

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.

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.

24

Stockage de données

25

26

Guice?

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

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

28

Guice?

Les ingrédients

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

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

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

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

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

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

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

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)

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

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

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

39

Démo

Etudiant

Filière

Injector

Module

Filière GL

40

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.

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.

43

Guice AOP

44

Integration

frameworks

• Struts

• GIN - GWT

• Seam

• Guice and JSF

• JPA

MobileRoboGuice - Guice for Android.

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. . . . . . .

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

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.

48

Merci pour votre attention

Questions

Recommended