Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Ouadie LAHDIOUI
D’année en année, les utilisateurs souhaitent voir les données de leurs applications évoluer en temps réel quelque soit la nature de l'application !!
Malheureusement, le mode de communication HTTP classique a montré ses limites en termes d'interactions même que AJAX a permis quelques améliorations en terme de rafraîchissement à la volée.
Je vous invite à découvrir la super spécification Java (JSR 356), le nouveau protocole WebSocket (RFC 6455) et un panel technologique super intéressant
Objectif général : Prendre en main Express js, le mini-framework de Node js le plus utilisé
objectifs spécifiques :
Installer Node js et Express js
Créer une application Express js
Router les requêtes
Recevoir des données à partir de l’URL d’une requête
Recevoir des données à partir du corps d’une requête
Traiter des fichiers uploadés
Utiliser un moteur de template
Utiliser une base de données
Utiliser des middlewares
Node.js et les nouvelles technologies javascriptKhalid Jebbari
Présentation sur Node.js et les nouvelles technologies javascript, qui a eu lieu dans les locaux de Smile, à Levallois (92).
Retour d'exploration par un développeur Drupal (moi) sur ces technologies, et comparaison avec Drupal.
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Ouadie LAHDIOUI
D’année en année, les utilisateurs souhaitent voir les données de leurs applications évoluer en temps réel quelque soit la nature de l'application !!
Malheureusement, le mode de communication HTTP classique a montré ses limites en termes d'interactions même que AJAX a permis quelques améliorations en terme de rafraîchissement à la volée.
Je vous invite à découvrir la super spécification Java (JSR 356), le nouveau protocole WebSocket (RFC 6455) et un panel technologique super intéressant
Objectif général : Prendre en main Express js, le mini-framework de Node js le plus utilisé
objectifs spécifiques :
Installer Node js et Express js
Créer une application Express js
Router les requêtes
Recevoir des données à partir de l’URL d’une requête
Recevoir des données à partir du corps d’une requête
Traiter des fichiers uploadés
Utiliser un moteur de template
Utiliser une base de données
Utiliser des middlewares
Node.js et les nouvelles technologies javascriptKhalid Jebbari
Présentation sur Node.js et les nouvelles technologies javascript, qui a eu lieu dans les locaux de Smile, à Levallois (92).
Retour d'exploration par un développeur Drupal (moi) sur ces technologies, et comparaison avec Drupal.
Venez découvrir le développement d'applications web
« offline first » avec les Service Workers.
Au programme : gestion du cache, notifications offline, synchronisation en arrière-plan et plein d'autres choses géniales !
PHP jouit parfois d'une mauvaise réputation au niveau des performances. Nous verrons si cette réputation est méritée, si les performances sont réellement un problème pour utiliser PHP.
PHP a une architecture qui lui permet de monter en charge sans mettre en place des solutions complexes. Entre l'installation, la configuration et les possibilités au niveau applicatif, cette session vous permettra de répondre efficacement à la problématique des performances.
Cours de 1h30 pour HETIC - H4.
Architecture Web.
Présentation générale de l'architecture web, bons et mauvais exemples.
Présentation des load balancers & proxys
Présentation des caches (memcached, varnish...)
Cloud
Présentation donnée à l'Aperotech Oxalide, le 24 juin 2013.
Qu'est-ce que NodeJS ? pourquoi en parle-t-on autant ? quand l'utiliser ? qu'est-ce que l'asynchrone ? quelle est le contexte actuel du marché du js / NodeJS ?
Retour d'expérience sur un projet agile, avec les technos Flex, Spring, Hibernate, donné lors du ToulouseJug du 21/04/2011.
Bert Poller & Nicolas Deverge
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007Eric D.
Il est possible d'aller plus loin que les applications classiques. En profitant pleinement des capacités du navigateur cet atelier vous montrera comment améliorer les performances et modulariser l'existant. HTTP, REST et Ajax sont au menu pour une application orienté services légère, simple à modifier et avec une API partageable avec vos clients.
"Enfin", c'est le mot qu'on peut avoir à la découverte du framework web Ruby On Rails.
Enfin un cadre de travail MVC qui facilité réellement le développement au lieu de le complexifier. ActiveRecord, une des briques magiques de cette application, pose une interface objet pour votre base de donnée en moins de cinq lignes. Le reste est à l'image de ruby : principe de surprise minimum, agilité et extensibilité. Cette présentation vous montrera, après des années de framework Web et d'expertises PHP, ce que quelques mois de Ruby On Rails suffisent à gagner.
Venez découvrir le développement d'applications web
« offline first » avec les Service Workers.
Au programme : gestion du cache, notifications offline, synchronisation en arrière-plan et plein d'autres choses géniales !
PHP jouit parfois d'une mauvaise réputation au niveau des performances. Nous verrons si cette réputation est méritée, si les performances sont réellement un problème pour utiliser PHP.
PHP a une architecture qui lui permet de monter en charge sans mettre en place des solutions complexes. Entre l'installation, la configuration et les possibilités au niveau applicatif, cette session vous permettra de répondre efficacement à la problématique des performances.
Cours de 1h30 pour HETIC - H4.
Architecture Web.
Présentation générale de l'architecture web, bons et mauvais exemples.
Présentation des load balancers & proxys
Présentation des caches (memcached, varnish...)
Cloud
Présentation donnée à l'Aperotech Oxalide, le 24 juin 2013.
Qu'est-ce que NodeJS ? pourquoi en parle-t-on autant ? quand l'utiliser ? qu'est-ce que l'asynchrone ? quelle est le contexte actuel du marché du js / NodeJS ?
Retour d'expérience sur un projet agile, avec les technos Flex, Spring, Hibernate, donné lors du ToulouseJug du 21/04/2011.
Bert Poller & Nicolas Deverge
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007Eric D.
Il est possible d'aller plus loin que les applications classiques. En profitant pleinement des capacités du navigateur cet atelier vous montrera comment améliorer les performances et modulariser l'existant. HTTP, REST et Ajax sont au menu pour une application orienté services légère, simple à modifier et avec une API partageable avec vos clients.
"Enfin", c'est le mot qu'on peut avoir à la découverte du framework web Ruby On Rails.
Enfin un cadre de travail MVC qui facilité réellement le développement au lieu de le complexifier. ActiveRecord, une des briques magiques de cette application, pose une interface objet pour votre base de donnée en moins de cinq lignes. Le reste est à l'image de ruby : principe de surprise minimum, agilité et extensibilité. Cette présentation vous montrera, après des années de framework Web et d'expertises PHP, ce que quelques mois de Ruby On Rails suffisent à gagner.
Ce Support explique quelques concepts de base de NodeJS et montre comment mettre en oeuvre la technologie NodeJS pour développer la partie Backend d'une application.
Les vidéos des démonstrations sont publiées sur les adresse suivantes :
- https://www.youtube.com/watch?v=-X_C1tS5-9Y
- https://www.youtube.com/watch?v=rE-xRH28m0s
- https://www.youtube.com/watch?v=tnxjkTvWoKA
Cette série explique les éléments suivants :
- Architecture Web
- Modèles Multi-Threads avec les entrées sorties bloquantes
- Modèles Single Thread avec les entrées sortie non bloquantes
-Technologie Node JS
- Comment créer une simple application Node JS avec java Script
- Architecture du Framwork Express
- Comment créer une application NodeJS avec Type Script
- Comment écrire des tests unitaires avec Jest
- Quelques concepts sur MongoDb
- Comment Créer une API Rest avec NodeJS, Express et MongoDb
- Comment tester l'API Rest
- Comment Créer la partie FrontEnd avec Angular.
Même si la qualité audio n'est pas bonne, ses vidéos peuvent aider ceux qui débutent dans NodeJS en attendant d'autres vidéos avec plus qualité audio et de contenu.
Bonne lecture
Le cache côté client, le cache côté serveurs et leur impact sur le SEO et l'expérience utilisateur. Conférence effectuée lors du SEOCamp'us Paris 2017 avec Benoit Chevillot de Divioseo
Le développement des applications web devient de plus en plus exigeant non seulement en termes de performances mais également de point de vue des utilisateurs. Ergonomie soignée, les interfaces utilisateurs réactifs, le plus souvent entièrement basée sur AJAX, déploiement sur Azure et la scalabilité sont un aperçu des contraintes qui dominent aujourd’hui. Pour les développeurs ce n’est pas une tâche facile et c’est pour cela ils ont besoin de disposer d’outils fiables, efficaces et faciles à mettre en œuvre dans la vie tous les jours de chaque développeur, c’est-à-dire, développer, tester et déployer. Dans cette session vous allez apprendre par des cas pratiques issus du monde professionnel du plus grand e-commerçant français, comment les nouveautés de ASP.NET 4.5 aide à pousser la qualité du développement à plus haut niveau. Nous allons aborder les nouveautés du ASP.NET 4.5 Core et Framework comme la gestion l’asynchronisme, web sockets et l’amélioration des performances. Quant aux WebForms nous allons voir le nouveau binding inspirée par ASP.NET MVC qui d’ailleurs sera également présentée avec son lot de nouveautés pour le développement mobile. Nous allons terminer par présenter Visual Web Développer 11, IIS Express et Nuget qui facilite la gestion de dépendances et le déploiement même au sein d’une entreprise.
Atelier RIA : “Développement d’applications RIA avec le Google Web Toolkit”
du mercredi 27 Juin 2012 CCI Entreprises de Montpellier
Intervenant :
- Emmanuel Pavaux – Oxiane Méditérranée, cabinet d’ingénierie, de conseil et formation NTIC
GWT (Google Web Toolkit)
Le développement d’applications internet riches (RIA) est une tendance de fond. L’utilisation intensive de JavaScript, de DHTML et des échanges asynchrones (AJAX) est une réalité technique devenue courante pour les nouvelles applications intranet et internet.
La librairie GWT est la solution s’appuyant sur la plateforme java proposée par Google pour masquer la complexité de ces technologies et offrir un modèle de développement web original, simple et robuste aux développeurs.
6. • HTTP 1.0 :
• Sur TCP
• Requête-réponse avec fermeture de connexion
• HTTP 1.1 :
• Keep-alive
• AJAX :
• Requêtes asynchrones
• HTML ou data
Historique
7. • Short polling :
• Requêtes périodiques courtes sur le serveur
• Comet :
• Long polling :
• Requêtes sur le serveur qui bloquent en attente de réponse
• Streaming :
• Requête longue sur le serveur avec plusieurs contenus retournés
• Limitations :
• Temps de requête/connexion
• Overhead HTTP
• Buffering des proxy
Historique
8. • Server-Sent Event (SSE) :
• Push uniquement, en texte, pas de streaming
• SPDY :
• HTTP amélioré par Google : compression des headers,
multiplexage des requêtes, etc
• Push de ressources (pas d'API JS de callback)
• Upgradable en WebSocket
• HTTP/2 :
• Standard basé sur SPDY : compression, multiplexage,
upgradable en WebSocket, etc
• Push de ressources
Historique
9. • Protocole de communication full-duplex sur connexion TCP
• RFC 6455
• Texte ou binaire
• Crypté ("wss:") ou pas ("ws:")
• Web friendly :
• Upgrade d'HTTP ou indépendant
• API JavaScript par W3C
• Supporté par les browsers : Ch 16, FF 11, IE 10, Saf 6
• Sous-protocoles, e.g. XMPP, STOMP, SIP
• Cible : applications temps réel, event-driven
• Bénéfices : réduction de bande passante et latence
WebSocket
12. • JavaScript :
• API JavaScript standard du W3C
• SocksJS : émulation WebSocket
• Socket.io : wrapper WebSocket, AJAX long-polling, etc,
utilisable aussi sur Node.js
• Java :
• Les API propriétaires des serveurs d'application
• Java API for WebSocket 1.0 (JSR 356, dans Java EE 7)
• Spring : fallback transparent sur SocksJS
• Atmosphere : framework Java et JS supportant Comet,
SSE, WebSocket, etc.
API
14. • Cryptage via "wss:"
• Authentification :
• Pas de mécanisme spécifique
• Solutions HTTP possibles, par ex cookies
• Ou par message applicatif
• Pas de Same-Origin Policy
• Cross-Site WebSocket Hijacking (CSWSH) :
• Similaire à CSRF
• Vérifier le header "Origin"
• Générer un token aléatoire pour l'upgrade
Sécurité
25. Codes de fermeture
Code Nom Description
0-999 Réservés
1000 CLOSE_NORMAL Fermeture normale
1002 CLOSE_PROTOCOL_ERROR Erreur de protocole
1003 CLOSE_UNSUPPORTED Type de message pas supporté
1009 CLOSE_TOO_LARGE Data frame trop grosse
3000-3999 Pour les librairies et frameworks
4000-4999 Pour les applications
… … …
36. • Cible Java EE 8
• Pas encore final
• Améliorations envisagées :
• Support des scopes CDI
• API bas niveau pour gérer les frames
• Amélioration des extensions
• API de filtrage
• Amélioration sur les sous-protocoles
• API cliente : support de proxy, modes d'AH HTTP, etc.
• Broadcast
• Sécurité, par exemple @RolesAllowed
• Cluster
• Etc.
API WebSocket.NEXT
40. • Client vers serveur : actions en texte, exemples :
• create-game Capture English 2 10
• join-game Tom
• claim-word 42 Coalition
• Serveur vers client : notifications en JSON, exemple :
• { "type":"games-list",
"list":[ {
"creator":"Tom",
"type":"Capture",
"language":"English",
"rounds":2,
"words":10,
"guests":[ ] } ] }
Messages
41. Couches applicatives
Games
Game
Results
Endpoints Contrôleurs
V1
Play PlayV3
Services
Games
Games
Games
Game
Results
Games
Game
Results
V2 Games
Games
Game
Results
Play
Games
Game
Results
Pages
/games
/game/{id}
/results/{id}
/games
/game/{id}
/results/{id}
/play
Métier
Métier
MétierRéceptions
Sécurité
Session WS
Emissions
Session WS
Emissions
Réceptions
Sécurité
Réceptions
Sécurité
Session WS
Emissions
42. • Pas lié à WebSocket mais au push :
• Besoin d'indentification et catégorisation des clients
• Plusieurs états à coordonner :
• Session HTTP
• Session WebSocket
• Etat applicatif
• Web vs WebSocket : manque de solutions intégrées à ce
jour
Impacts sur la conception
43. • Un path d'endpoint WebSocket doit commencer par "/",
pas nécessaire pour JAX-RS
• WildFly 8.0.0 : codes d'erreur pas supportés (corrigé en
8.1.0)
• Quelques limitations d'héritage
• Injection de @Singleton ok, mais pas @RequestScoped
• Clustering pas spécifié :
• Load-balancing, réplication de session, fail-over ?
• L'API Spring semble aller plus loin
API Java