Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Play Framework

1 220 vues

Publié le

  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Play Framework

  1. 1. Framework Play! ZUBER Lionel
  2. 2. Ordre du jour Le problème Java EE Play! Principe de fonctionnement Play in action ! Et pour les questions… N’attendez pas la fin ! 2
  3. 3. Le problème Java EE
  4. 4. Architecture JEE standard Réponse HTTP Spring / CDI Requête HTTP • Mapping URI / Actions • Constitution objets métiers a partir de la • • • • requête Constitution objets sessions à partir de la session Restaurations d’états Conversions Validations 4 JPA JSF XML Serveur d’Applications
  5. 5. Et quand on monte en charge... Serveur d’Applications Serveur d’Applications Serveur d’Applications 5 CACHE Serveur d’Applications SESSIONS Serveur d’Applications
  6. 6. Et coté développements... Code • En moyenne coté déploiement… • Démarrage du serveur : 2 min • Redéploiement d’une application : 30s Test Compilation • Effectués 50 fois par jour • Presque 30 min de pertes • En phase de « debug », la partie Déploiement déploiement est parfois la plus longue du cycle. 6
  7. 7. Présentation générale du Framework
  8. 8. Historiques • Base du framework posée en 2007 par Guillaume Bort • Version 1.0 en Octobre 2009 • Entreprise Zenexity • Version purement Java • Version 2.0 en Mars 2012 • Entreprise Zenexity et Typesafe • 1 version Java et 1 version Scala • Se rapproche de l’eco-système Scala 8
  9. 9. Play! Un ensemble de technologie Sbt CoffeeScript Less Ebean Google Closure Compile Jdbc Yaml Memcached Akka Heroku Selenium Logback Junit 9
  10. 10. Les grands principes • Respect de l’architecture Web (principe REST) • Full-Stack Framework • • Couvre toutes les phases : du développement à la production Fournit une API pour les fonctionnalités nécessaires à l’élaboration d’une application Web • Productif • • Basé sur des concepts simples et prévisibles Architecture minimum • Forte Scalabilité • • Framework stateless Peu d’instanciation d’objets • Testabilité • • Intégration d’outils de test (Junit, Selenium) Helper pour aider à leurs mises en places 10
  11. 11. Les petits plus • Outils en ligne de commande complet (initialisation, packaging, console, …) • Gestions des dépendances par le Framework • Documentation disponible via le serveur de développement • Compilation et déploiement « à la volée » • Extensible • Du source : toute API Java peut être incluse • Du noyau : système de plugins 11
  12. 12. Architecture MVC Annotations JPA routes Controller Java Template Scala 12 Models Ebean
  13. 13. Architecture MVC Annotations JPA routes Controller Java Template Scala @(form: Form[forms.Login]) @main {BOUM} {Dashboard} { @helper.form(routes.Application.authenticate) { <h1>Sign in</h1> @if(form.hasGlobalErrors) { <p class="error"> @form.globalError.message </p> } } } 13 Models Ebean
  14. 14. Architecture MVC Annotations JPA routes Controller Java Template Scala Models Ebean # Map static resources from the /public folder to the /assets URL path GET /assets/*file controllers.Assets.at(path="/public", file) # Authentication GET /login controllers.Application.login() POST /login controllers.Application.authenticate() # Application de gestion de flux GET /flux controllers.GesFlux.search(page:Int ?= 0, sortBy ?= "answerDate", sortOrder ?= "asc", ip ?= "", status:Int ?= 0) 14
  15. 15. Architecture MVC Annotations JPA routes Controller Java Template Scala public class Application extends Controller { @Security.Authenticated(Secured.class) public static Result index() { return ok(index.render("")); } } 15 Models Ebean
  16. 16. Architecture MVC Annotations JPA routes Controller Java Template Scala */ @Entity public class UserEntity extends Model implements BoumModel { @Id public String login; public static Model.Finder<String,UserEntity> find = new Finder<String, UserEntity>(String.class, UserEntity.class); public static List<UserEntity> findAll() { return find.all(); } } 16 Models Ebean
  17. 17. Cycle de vie 17
  18. 18. Et quand on monte en charge... Serveur Play! Load Balancing Serveur Play! Serveur Play! Serveur Play! 18 CACHE Serveur Play!
  19. 19. Les points faibles • Documentation • • • • Bonne approche mais pas assez exhaustive Javadoc inexistante pour la partie template Doc sur certains outils annexes (YML) inexistante Exemple internet périmé (Play 1) • Non-Standard • Incompatible JEE • Forte dépendance vis-à-vis du Framework • Se séparer de Play! = Refondre complètement l’application 19
  20. 20. Démonstration
  21. 21. Cas pratique • Vador veut une application pour gérer son tableau de chasse. • Le lot 1 de l’application devra permettre au Jedi • • • D’afficher la liste de ses victimes D’effectuer une recherche dans la liste De rajouter un nouveau Jedi à la liste de ses victimes • Yoda l’a nargué à de nombreuses reprises avec le pouvoir de Play! Le seigneur noir veut donc voir cette étrange puissance en action… 21
  22. 22. Outils en ligne de commande Les commandes externes Play • play new: commande de création d’un nouveau projet. Crée l’arborescence et la paramétrage par défaut. • play : lance le shell play en mode standard • play debug : lance le shell play en mode debug Les commandes du Shell • run : lance le serveur d’application en mode développement (rechargement automatique) • • • • • • test : lance les tests automatisés (unitaire et fonctionnel) compile : lance la compilation clean : fait le ménage dans les fichiers générés eclipsify : prépare le projet eclipse dist: crée le jar pour un déploiement standalone console : passe en console interactive scala 22
  23. 23. Getting Started Eclipse 1. play new : on initialise le projet 2. play eclipsify : on initialise les fichiers de configurations eclipse 3. Import du projet dans Eclipse Eclipse compile le code comme un projet standard. Après l’ajout d’un nouveau template ou d’une nouvelle dépendance, relancer eclipsify, et rafraichir le projet. 23
  24. 24. Arborescence • /app: dossier contenant les sources applicatives • /test : dossier contenant les sources des tests unitaires ou fonctionnels • /conf : configuration général de l’application • /application.conf : properties principales de l’application (bdd, logger, langue) • /routes : configuration des urls • /logs : log applicatif de l’application • /project : fichier concernant le packaging et la configuration play • /Build.scala : packaging (dépendances, fonctions spécifiques, versionning) • /plugins.sbt : ajout et mise à disposition de plugin Play • /public : ressources utilisable dans l’application (Fichier css, images, javascript) • /target : dossier contenant les binaires et résultats de packaging 24
  25. 25. Package Applicatif • controllers : contient toutes les classes de controllers de l’application. • models : modèles de données persistés en base (class Ebean). • views : template scala 25
  26. 26. Des questions ? Site officiel : http://www.playframework.com/

×