Les services de type ressource sont très répandus, ils se cachent parmi nous sous l'appellation RESTful. Mais ils n'étaient pas là les premiers et leurs ancêtres ont 2-3 choses à nous apprendre. Par ailleurs, ils bénéficieront grandement d'un peu plus d'attention que de simplement les coller sur un framwork MVC. J'expliquerai les différentes couches les composants, les différents systèmes de requête/réponse et leur intégration avec ces fameux frameworks MVC que tout le monde adore.
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
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)hibnico
Présentation par Nicolas Lalevée des modèles de gestion de dépendances Maven, Ivy et OSGi au Toulouse Jug du 26 Mai 2011.
Abstract:
La gestion des dépendances, sac de noeuds presque par définition, on va essayer de démêler tout ça.
Après avoir fait un état des lieux avec Maven car il est l'incontournable du moment, nous irons voir comment Ivy peut décrire assez finement et gérer avec souplesse des dépendances. Nous verrons ensuite comment le modèle de dépendances d'OSGi est original et apporte encore de nouveaux concepts. Deux mondes s'affrontent alors, celui de Maven et Ivy face à celui d'OSGi; on tentera enfin d'esquisser un meilleur des deux mondes.
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
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)hibnico
Présentation par Nicolas Lalevée des modèles de gestion de dépendances Maven, Ivy et OSGi au Toulouse Jug du 26 Mai 2011.
Abstract:
La gestion des dépendances, sac de noeuds presque par définition, on va essayer de démêler tout ça.
Après avoir fait un état des lieux avec Maven car il est l'incontournable du moment, nous irons voir comment Ivy peut décrire assez finement et gérer avec souplesse des dépendances. Nous verrons ensuite comment le modèle de dépendances d'OSGi est original et apporte encore de nouveaux concepts. Deux mondes s'affrontent alors, celui de Maven et Ivy face à celui d'OSGi; on tentera enfin d'esquisser un meilleur des deux mondes.
Découverte de l'environnement de la philosophie et du fonctionnement de Laravel. Pourquoi un tel succès ?
Présentation de différents composant Open Source qui permettent de débuter rapidement un projet Laravel.
Cette présentation fait partie d'une suite de présentations technologiques appelée "Symposium" chez Versusmind. Toutes les présentations sont disponibles sur http://versusmind.eu.
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain MaretSylvain Maret
Avec l’expansion des services en lignes via le cloud ou tout simplement l’interconnexion des SI, le besoin d’exposer des services vers l’extérieur est croissant. Les WebServices sont une solution
maintenant éprouvée depuis longtemps pour répondre à ce besoin.
Que l’on utilise SOAP ou REST un problème se pose toujours : comment faire pour sécuriser l’accès à mon SI alors que j’en ouvre une porte en exposant mon métier ? Cette conférence tentera de répondre à ces questions en présentant des cas concrets d’implémentation.
Guide de mise en oeuvre d'une authentification forte avec une cpsBee_Ware
Destiné plus spécifiquement aux chefs de projets et aux architectes techniques et applicatifs, ce guide présente la mise en œuvre d’une authentification forte avec une carte CPS (Carte de Professionnels de Santé).
SophiaConf 2010 Présentation de la conférence du 30 Juin - Gestion des identi...TelecomValley
SophiaConf 2010 Conférence du 30 Juin 2010 à Polytech'Nice Sophia sur la Gestion des identités et Sécurisation des services Web : Réalités et Perspectives par Hubert Le Van Gong et trois retours d'expériences : Maitre Pascal Agosti, Cabinet Caprioli&Associés; Frédéric AIME, Chief Technical Officer de JANUA; Florent Peyraud, CEO et fondateur de TRYPHON
L'essentiel a savoi sur les démarreurs échange standardWebdealauto
L'essentiel à savoir sur les démarreurs échange standard est présenté dans ce diaporama. Plus d'infos sont disponibles sur webdealauto, des offres de ventes aussi.
Chères et chers amis tarophiles,
Force est de constater que l’accroissement du nombre de licenciés entraîne aussi une plus grande
participation dans les festivals, séjours et open d’accompagnement des Championnats de France.
Une priorité doit être donnée pour l’accueil des joueurs dans toutes ces manifestations. Commettre des
erreurs d’appréciation peut arriver, ne pas les reconnaître et les analyser serait une faute, les reproduire
serait inadmissible. Les membres du Conseil d’Administration sont à votre écoute pour améliorer
le fonctionnement de notre Fédération en respectant les désirs de la majorité.
Lors du premier Championnat Seniors en donnes libres, la participation avait été inattendue et avait
vraiment montré que cette création était utile. La deuxième édition disputée à Alès dans d’excellentes
conditions voit le deuxième titre du jeune comité Val d’Adour et un accroissement significatif du nombre
de joueurs.
Avec la création d’un qualificatif sur place à Pontarlier pour la 21ème édition franc-comtoise, c’est aussi
la demande des joueurs qui est récompensée. L’impressionnant nombre de tables démontre à quel
point les joueurs de tous niveaux et de toutes régions aiment se retrouver pour partager la convivialité de
notre passion.
La fin de saison est bien tardive puisque les 2 derniers rendez-vous auront lieu début juin, il ne restera
que très peu de temps pour mettre en forme le Classement National et le donner à l’Assemblée
Générale organisée par le comité des Charentes.
Cordialement à tous,
Emmanuel STEFANAZZI
Président de la FFT
Découverte de l'environnement de la philosophie et du fonctionnement de Laravel. Pourquoi un tel succès ?
Présentation de différents composant Open Source qui permettent de débuter rapidement un projet Laravel.
Cette présentation fait partie d'une suite de présentations technologiques appelée "Symposium" chez Versusmind. Toutes les présentations sont disponibles sur http://versusmind.eu.
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain MaretSylvain Maret
Avec l’expansion des services en lignes via le cloud ou tout simplement l’interconnexion des SI, le besoin d’exposer des services vers l’extérieur est croissant. Les WebServices sont une solution
maintenant éprouvée depuis longtemps pour répondre à ce besoin.
Que l’on utilise SOAP ou REST un problème se pose toujours : comment faire pour sécuriser l’accès à mon SI alors que j’en ouvre une porte en exposant mon métier ? Cette conférence tentera de répondre à ces questions en présentant des cas concrets d’implémentation.
Guide de mise en oeuvre d'une authentification forte avec une cpsBee_Ware
Destiné plus spécifiquement aux chefs de projets et aux architectes techniques et applicatifs, ce guide présente la mise en œuvre d’une authentification forte avec une carte CPS (Carte de Professionnels de Santé).
SophiaConf 2010 Présentation de la conférence du 30 Juin - Gestion des identi...TelecomValley
SophiaConf 2010 Conférence du 30 Juin 2010 à Polytech'Nice Sophia sur la Gestion des identités et Sécurisation des services Web : Réalités et Perspectives par Hubert Le Van Gong et trois retours d'expériences : Maitre Pascal Agosti, Cabinet Caprioli&Associés; Frédéric AIME, Chief Technical Officer de JANUA; Florent Peyraud, CEO et fondateur de TRYPHON
L'essentiel a savoi sur les démarreurs échange standardWebdealauto
L'essentiel à savoir sur les démarreurs échange standard est présenté dans ce diaporama. Plus d'infos sont disponibles sur webdealauto, des offres de ventes aussi.
Chères et chers amis tarophiles,
Force est de constater que l’accroissement du nombre de licenciés entraîne aussi une plus grande
participation dans les festivals, séjours et open d’accompagnement des Championnats de France.
Une priorité doit être donnée pour l’accueil des joueurs dans toutes ces manifestations. Commettre des
erreurs d’appréciation peut arriver, ne pas les reconnaître et les analyser serait une faute, les reproduire
serait inadmissible. Les membres du Conseil d’Administration sont à votre écoute pour améliorer
le fonctionnement de notre Fédération en respectant les désirs de la majorité.
Lors du premier Championnat Seniors en donnes libres, la participation avait été inattendue et avait
vraiment montré que cette création était utile. La deuxième édition disputée à Alès dans d’excellentes
conditions voit le deuxième titre du jeune comité Val d’Adour et un accroissement significatif du nombre
de joueurs.
Avec la création d’un qualificatif sur place à Pontarlier pour la 21ème édition franc-comtoise, c’est aussi
la demande des joueurs qui est récompensée. L’impressionnant nombre de tables démontre à quel
point les joueurs de tous niveaux et de toutes régions aiment se retrouver pour partager la convivialité de
notre passion.
La fin de saison est bien tardive puisque les 2 derniers rendez-vous auront lieu début juin, il ne restera
que très peu de temps pour mettre en forme le Classement National et le donner à l’Assemblée
Générale organisée par le comité des Charentes.
Cordialement à tous,
Emmanuel STEFANAZZI
Président de la FFT
Chers Amis,
La saison 2006-2007 fut une année de consolidation de nos effectifs avec une légère augmentation par rapport à la saison précédente.
Les Championnats ont connu un vif succès et permis une belle représentation des différents comités. On ne peut donc que se féliciter des
améliorations apportées. Nous allons continuer dans cette voie et la saison 2007-2008 verra naître deux nouveaux Championnats :
- tout d’abord une division 3 qui permettra aux joueurs 3ème et 4ème série de disputer une compétition qui leur est propre.
- un championnat libre, par équipes de 4, réservé aux clubs, permettant de mêler les différentes séries.
J’espère que ces deux nouveautés permettront de vous satisfaire encore plus.
Le Conseil d’Administration a oeuvré tout au long de l’année pour que notre structure soit des plus
efficaces et je le remercie pour tout le travail accompli.
Introduction à Cloud Foundry et au PaaSGerard Konan
Cloud Foundry est le standard Ouvert de l'industrie du PaaS et offre un choix de Clouds, de frameworks et de services d'application. Sa vision unique est de stimuler les contributions d'une large communauté de développeurs, utilisateurs, clients, partenaires et éditeurs de logiciels tout en faisant progresser le développement de la plate-forme à rapidement
Retour sur les conférences du BreizhCamp, l'événement tech rennais annuel.
Alexandre, Antonin, Olivier et Pierre nous présentent quelques sujets choisis. Des sujets techniques qu'ils souhaitent nous faire partager, ceux qui leurs donnent des idées à mettre en place et à creuser ou tout simplement des sujets qui les ont particulièrement marqués :
- Urbaniser un SI pour 10 ans
- Les bases du Service Mesh
- Arch Unit, le test unitaire de l'architecture
- Fast API, aperçu du framework python
- OAuth 2.1 : Principes et nouveautés
- Rust : Pourquoi l'envisager ?
- REX Lean : Créer un SaaS et être rentable en 6 mois
- Retour sur la Keynote Sécurité
- La théorie de la vitre brisée appliquée à nos métiers
Notre voyage vers le déploiement continu avec micro-services, la conteneurisation et l'orchestration des conteneurs utilisant Kubernetes. Sur notre chemin, nous avons dû créer divers outils pour nous aider à mieux utiliser et tester le tout avant d'aller en production. Nous avons également intégré une variété d'autres outils pour nous donner de la visibilité sur notre plate-forme. Cette conférence sera un aperçu de notre voyage jusqu'à maintenant.
Our journey towards continuous deployment with micro-services, containerization and orchestration of containers using Kubernetes. On our way there, we've had to create various tools to help us better use and test everything before going to production. We also had to integrate a variety of other tools to give us visibility on our platform.
This talk will be an overview of our journey up to now.
Présentation de l'état de l'art du Portail en 2014 à la conférence des développeurs java, Devoxx, en France par Emmanuel Pavaux, consultant formateur Oxiane.
3. Un service web, qu’est-ce?
• Partage des fonctions entre applications
• Permettre à des logiciels fonctionnant sur des environnements
disparates de communiquer
• Dé-couplage ?
• Fonctionnel
• Structurel (de données)
• Temporel
• Positionnel (URI)
Architecture services web de type ressource – Antoine Pouch 3
4. Les différents types
Les classiques
• CORBA
• DCOM
Les modernes
• RPC
• Message
• Ressource
Architecture services web de type ressource – Antoine Pouch 4
5. Les différents types d'API - RPC
• Une URL
• Une signature par méthode
• SOAP/XML/WSDL usuellement
Architecture services web de type ressource – Antoine Pouch 5
6. Les différents types d'API- Message
• Une URL
• Une signature pour toutes une famille de méthodes avec un
paramètre unique qui diffère
• SOAP/XML/WSDL usuellement
Architecture services web de type ressource – Antoine Pouch 6
7. Les différents types d'API- Ressource
• Une URL par ressource, par action
• Signatures proches, faciles à « deviner »
• Pas toutes REST!
Architecture services web de type ressource – Antoine Pouch 7
9. Interaction: Request/Response
• La plus simple
• Couplage temporel fort
• Mauvaise scalability
Architecture services web de type ressource – Antoine Pouch 9
10. Interaction: Request/Acknowledge
• Plus complexe
• Annule le couplage temporel
• Sous-type : Callback
• Complexe
• Sous-type : Poll
• Ne résout pas le problème de scalability, peut uniquement le déporter
Architecture services web de type ressource – Antoine Pouch 10
11. Interaction: Media Type Negotiation
• Extension
• Pas sémantiquement correct
• Header
• Parfait, fournit par spécification HTTP (Accept)
• Généralement pas de négociation, client
• Pattern: Response Handler
• Discovery: HEAD
Architecture services web de type ressource – Antoine Pouch 11
12. Interaction : Service Liés (hypermedia
control/HATEOAS)
• Découverte : OPTIONS
• Suites logiques retournées dans la réponse
• Permet aux clients d'avoir peu d'URI statiques à connaître
• Permet le changement, l'ajout de services, l'auto-documentation
• Mais attention aux clients qui « bookmarkent » !
• Parfois retournés dans le Link header : pas sémantiquement correct !
Et trop unidimensionnel.
Architecture services web de type ressource – Antoine Pouch 12
13. Intéraction : HAL
• Hypertext Application Language
• application/hal+json
Architecture services web de type ressource – Antoine Pouch 13
14. Avant HAL
{
"status": "This is my awesome status update!",
"user": "mwop"
}
Architecture services web de type ressource – Antoine Pouch 14
15. Avec HAL
{
"_links": {
"self": {"href": "http://example.com/api/status/1347"}
},
"id": "1347",
"timestamp": "2013-02-11 23:33:47",
"status": "This is my awesome status update!",
"_embedded": {
"user": {
"_links": {
"self": {"href": "http://example.com/api/user/mwop"}
},
"id": "mwop",
"name": "Matthew Weier O'Phinney",
"url": "http://mwop.net"
}
}
}
Architecture services web de type ressource – Antoine Pouch 15
17. Data Transfer Objects
• Pour éviter l'annotation des Domain Objects (Couplage Structurel Très
Fort, références circulaires)
• POPOs : manipulent types génériques ou autres DTOs
• Créés en entrée par un Request Mapper ou un déserialiseur
• Utilisés en sortie par un Response Mapper ou un sérialiseur
• Le Mapping peut être centralisés et formalisé en fichiers de
configuration
• Introduisent de la lourdeur
Architecture services web de type ressource – Antoine Pouch 17
18. Request Mapper
• Si besoin de plus qu'un simple Deserializer
• Injecté au Service Controller, ou avec une Factory
• Varient selon le client, le format d'entrée, la version
• Créént les DTOs
Architecture services web de type ressource – Antoine Pouch 18
19. Response Mapper
• Si besoin de plus qu'un simple Serializer
• Injecté au Service Controller, ou avec une Factory
• Varient selon le client, le format de sortie, la version
• Manipulent les DTOs
• Utiles par ex. pour une réponse JSON qui sera différente d'un XLS
(données moins agrégées)
• Introduisent de la lourdeur
Architecture services web de type ressource – Antoine Pouch 19
20. Interceptors
• Utilisés en entrée et sortie
• Entrée : Authentification, Autorisation, Caching,
• Sortie : Logging, Error handling
Architecture services web de type ressource – Antoine Pouch 20
21. Styles d'implémentation
• Transaction Script
• Fat fat controller, prévoir du copy-paste
• Datasource Adapter
• Souvent dérivé d'annotation sur Objets issus d'ORM
• Operation Script
• Classes centrales qui fournissent des opérations possibles sur le domaine
• Command Invoker
• Plus rien dans le service. Sauvegardable. Nécessaire pour Request/Ack.
• Workflow Connector
• Comme CI, mais contenu dans un Workflow Engine. Pour suites d'opérations.
Architecture services web de type ressource – Antoine Pouch 21
26. Integration dans les Frameworks
MVC (symfony2, ZF2)
Architecture services web de type ressource – Antoine Pouch 26
27. Generalités
• Décharge de responsabilité : Les méthodes/outils qui suivent sont selon la
communauté du framework la façon la meilleure/plus simple
d'implémenter REST mais vous pouvez toujours les modifier ou les oublier
• Le Routing est extrêmement simplifié
• Les intercepteurs sont intégrés : Events.
• Events génériques inclus : Authentication, Authorization, Logging
• Serializer et Deserializer disponibles
• Create/Update utilisent les Forms sf2 ou ZF2. Les aimez-vous?
• Par défaut, multiples actions dans un seul controlleur. Aimez-vous les
classes de 3000 lignes ?
Architecture services web de type ressource – Antoine Pouch 27
28. symfony2
• FOSRestBundle
• https://github.com/FriendsOfSymfony/FOSRestBundle
• NelmioApiDocBundle
• https://github.com/nelmio/NelmioApiDocBundle
• JMSSerializerBundle
• https://github.com/schmittjoh/JMSSerializerBundle
• L’enfer des configurations et des annotations
Architecture services web de type ressource – Antoine Pouch 28
29. Symfony - Routing
users:
type: rest
resource: AcmeHelloBundleControllerUsersController
class UsersController {
public function optionsUsersAction() {} // "options_users" [OPTIONS] /users
public function getUsersAction() {} // "get_users" [GET] /users
public function getUserAction($slug) {} // "get_user" [GET] /users/{slug}
public function editUserCommentAction($slug, $id) {} // "edit_user_comment" [GET]
/users/{slug}/comments/{id}/edit
}
Architecture services web de type ressource – Antoine Pouch 29
30. Symfony – Routing not simplified
/**
* List all notes.
*
* @ApiDoc(
* resource = true,
* statusCodes = {
* 200 = "Returned when successful"
* }
* )
*
* @AnnotationsQueryParam(name="offset", requirements="d+", nullable=true, description="Offset from which to start listing notes.")
* @AnnotationsQueryParam(name="limit", requirements="d+", default="5", description="How many notes to return.")
*
* @AnnotationsView()
*
* @param Request $request the request object
* @param ParamFetcherInterface $paramFetcher param fetcher service
*
* @return array
*/
public function getNotesAction(Request $request, ParamFetcherInterface $paramFetcher)
Architecture services web de type ressource – Antoine Pouch 30
31. Symfony – Préparation - Events partout
• Interceptors (Auth, Logging, etc.)
• FormatListener pour la négociation de format
• JMSSerializer très puissant (supporte les versions par ex.), peut être
étendu en Request Mapper. Ne pas utiliser les annotations Doctrine !
• BodyConverters qui servent de Request Mappers sinon (permet
injection de params dans controlleurs). Mais si on les utilise, il faut
faire le routing à la main. Et la validation par regexp ou classes
spécifiées dans les annotations, vraiment ?
Architecture services web de type ressource – Antoine Pouch 31
32. Symfony – Exécution
• Create et Update via des Forms
• Peuvent être affichés en HTML (Backoffice rapide)
• Mais il faut les aimer
Architecture services web de type ressource – Antoine Pouch 32
33. Symfony - rendering
• Gestion des exceptions dans controlleur à part, avec configuration des
exceptions vers statuts et messages. Lourd.
• ViewHandler (= Response Handler) : Couche de plus entre le
controlleur et la vue. Rend la vue agnostique au format (xml, json,
twig). Peut être étendu en ResponseMapper. Utilise JSMSerializer.
• Ne supporte pas les DTOs, mais extensible. Mais soyez prêts à
beaucoup de changements si vous sortez des sentiers battus.
Architecture services web de type ressource – Antoine Pouch 33
34. ZF2
• Support intégré! Mais faible. Ou qui laisse beaucoup de liberté.
• Apigility pour aller plus loin.
Architecture services web de type ressource – Antoine Pouch 34
35. ZF2 - Préparation
• Interceptors pour auth, logging, etc.
• Un controlleur par entité obligatoirement (encore ces controlleurs de
3000 lignes)
• AbstractRestfulController fournit un mapping très basique (mais
efficace) de verbes HTTP vers méthodes.
• Pas de Request Mappers, en fait, même pas de déserializer. Ne
parlons pas des DTOs.
Architecture services web de type ressource – Antoine Pouch 35
36. ZF2 – Exécution
• Create et Update via des Forms
• Peuvent être affichés en HTML (Backoffice rapide)
• Mais il faut les aimer
• Moins forcé de les utiliser que dans sf2
Architecture services web de type ressource – Antoine Pouch 36
37. ZF2 - rendering
• JsonModel. Peut être étendu en ResponseMapper, gère les DTOs avec
propriétés publiques.
• Et c’est tout.
Architecture services web de type ressource – Antoine Pouch 37
38. ZF2 - Apigility
• https://apigility.org
• Création d’API par formulaire ! REST ou SOAP.
• Génération de backoffice
• Auto-documentation
• Génération de sous-classes de contrôleurs vides à remplir pour
particulariser.
Architecture services web de type ressource – Antoine Pouch 38
39. Symfony et ZF2 – Manques
• DTOs
• Command Invokers. Aucune possibilité de faire du Request/Ack.
Même pas de Ack automatique.
• Trop d'accent mis sur couplage avec ORM
Architecture services web de type ressource – Antoine Pouch 39
40. Références
• Service Design Patterns par Robert Daigneau, 2012, Addison Wesley
• Richardson Maturity Level :
martinfowler.com/articles/richardsonMaturityModel.html
• Hypertext Application Language : stateless.co/hal_specification.html
• Integrating into ZF : www.slideshare.net/mikestowe/building-a-rest-api-
with-zend-framework-2
• Integrating into symphony : welcometothebundle.com/symfony2-
rest-api-the-best-2013-way/
Architecture services web de type ressource – Antoine Pouch 40