En partant d’un besoin concret qui tient compte des nouveaux usages, nous évaluerons des architectures pouvant servir de squelette à notre solution applicative. Quelles technologies nous aideront à mettre en œuvre au mieux cette solution, et plus généralement, quelles sont les questions à se poser pour bien choisir une architecture et les technologies qui lui seront associées ? Cette session est la première du parcours « De A à Z : Concevoir et développer une solution applicative ». Nous y choisirons les technologies qui seront mises en œuvre dans la solution, tout au long de ce parcours d’une journée. Elle peut être suivie de manière totalement indépendante puisque seul le scénario métier sert de fil rouge dans le parcours.
2. De A à Z : Choisir une
architecture pour sa
solution applicative
(ARC201)
7 février 2012
Stéphanie Hertrich Benjamin Guinebertière
blogs.msdn.com/stephe www.benjguin.com
Relation technique développeurs Relation technique architectes
Microsoft France Microsoft France
3. Agenda
1. Le besoin métier
2. L’analyse et le choix des technologies
3. La conception et les choix d’implémentation
4. Conclusion
4. Ce que la session n’est pas
http://msdn.microsoft.com/en-
us/library/ff650706.aspx
6. Le besoin métier
Application Cave à Vins
Téléphone, tablette, Desktop,
multi-plateforme
Cas d’utilisation différents
L’utilisateur emmène son
téléphone au supermarché :
aide au choix parmi les
bouteilles en rayon par lecture
du code-barre
Chez moi sur le poste de
travail, je parcours le catalogue
complet des vins
7. Contraintes s’ajoutant au
Cahier des charges
La plus belle app de cave à vins => Priorité à l’UX car
concurrence importante sur ce type d’applications qui vise
potentiellement tout le monde
Déclinable facilement sur tout type de device (phone,
tablette, desktop)
Appli publique, collaborative, charge
variable/indéterminée
Identification du propriétaire de la cave : réutiliser son
compte FB, Google, Live, …
9. La plus belle app de cave à vins
Constat
UX réussie => bien intégrée et homogène avec l’ergonomie
nativement proposée par le device
Solution
Utiliser les contrôles du langage natif
Développer en langage natif des principales plateformes
Le fallback pourrait être une interface web (PhoneGap)
10. Desktop : PivotViewer
Pourquoi réinventer la roue ?
IHM de manipulation de collection
Ex : http://netflixpivot.cloudapp.net/
11. Desktop : PivotViewer
Disponible
en add-on avec Silverlight 4
directement avec Silverlight 5
Côté serveur
Génération du contenu statique ou dynamique
Côté client
Associer des actions
Personnaliser les couleurs, fond, police …
12. Déclinable facilement sur tout type
de device
• Une appli par plate-forme cliente
• Toujours les mêmes données
Data
DAL
LAN, WAN, …
WP7 Silverlight .Net …
Html5
Faciliter l’accès aux données et aux services métiers
Services http REST
13. Un service de données
interopérable :OData
Data
DAL
Réponse =
OData Flux XML/JSON
LAN, WAN, …
Question =
URI http
WP7 Silverlight .Net …
Html5
Ex Netflix: les films des années 80 ayant une note > 4 et leur award
http://odata.netflix.com/Catalog/Titles?$filter=ReleaseYear le 1989
and ReleaseYear ge 1980 and AverageRating gt 4&$expand=Awards
14. OData
Quelques précisions complémentaires au dessus de
REST (~profil): Odata
http://www.odata.org/developers/protocols/overview
De nombreux SDK pour accélérer la consommation et la
production
http://www.odata.org/developers/odata-sdk
Javascript, PHP, Java, ruby, Windows Phone
7, Objective-
C, .NET, Silverlight, Joomla, Drupal, MySql, RemObjec
ts Data Abstract
15. BDD relationnelle ? C’est bon pour
nous ? Sql/noSql
Considération Sql noSql
Volumétrie Mo -> To Mo -> Po
Cas d’utilisation Universel Spécifique
Maturité des technologies Au moins 20 ans Beaucoup de solutions très
récentes
Nature des données Tables Clefs/valeurs
Schéma fixe Colonnes
Documents
Graphes
…
Montée en charge Non linéaire linéaire
Fédérations SQL Azure
Complémentarité
16. Application publique : Charge
indéterminée
Plateforme Cloud ?
Pourquoi ?
!!! Le client est frileux : il ne veut pas être lié au Cloud de
manière définitive Inactivité
Compute
Compute
Prévoir une architecture réversible
Utilisation Utilisation
Utilisation
Moyenne
Temps Temps
Compute
Compute
Utilisation Moyenne Utilisation Moyenne
Temps Temps
17. Utiliser des providers d’identité
existants
(Facebook, Google, LiveID, …) Azure Access Control
Par les APIs de chaque Par Windows
fournisseur Services
Gérer les règles au L’application reconnaît
niveau de l’application ACS
Gérer les différents On configure ACS pour
protocoles et formats accepter des
de jetons fournisseurs d’identité
Les maintenir
18. Remplissons ce modèle
Vues
Cinématique
Interface
Modèles
Utilisateur
Accès aux services
Interfaces de services
Service métier
Accès aux données Accès aux services
Entrepôt de données Service
19. Architecture à ce stade
Pivot
Silverlight Objective-CPages Viewer
WP7 iPhone Nav Desktop (Silverlight)
Objets
Android
OData Client métier
OData Client
OData Client
Client
OData Client
Access Control Services
Serveur
OData Web/App:
Service Windows Server
? ou
Windows Azure
Données
DB
22. WCF Data Services :
OData pour .Net
Sql Sql
Server Azure
Chaine de connexion
Entity Framework Serveur
WCF Data
Services
WCF Data WCF Data Client
Services Services OData
Client
Silverlight Silverlight
iPhone, …
pour WP Desktop
23. Windows Azure
WS-Federation
OpenID
Accélérateur Pour Windows Phone mais aussi iOS et
Android:
http://watwp.codeplex.com/
https://github.com/microsoft-dpe/wa-toolkit-ios
24. Architecture Réversible
Besoins
Déploiement des données et services à demeure ou Cloud
Stockage des fichiers d’image à demeure ou sur les blobs
Transparent pour les apps clientes
Simple mais à prévoir dès le départ pour abstraire
- Le choix de la base
- Le choix du lieu de stockage des images
Comment ?
Fichiers de config azure pour chaine de connexion à la BDD
Service de stockage des photos renvoyant une simple Uri
25. Srockage des photos
Sur disque à demeure
Sur les blobs dans Azure
Création d’un service qui implémente l’abstraction du lieu de
stockage
Pour le client:
1. Appel d’un service intermédiaire Uri GetUriForImage();
2. PUT de l’image (Stream) sur l’Uri
Sécurité par Shared Access Key sur Windows Azure
http://nuget.org/packages/Phone.Storage.AccessControl
26. Upload: cas Windows Azure
client
(1) (3)
(2)
Service d’images Blobs
(1) GetUriForImage renvoie une Shared Access Signature demandée au service de
stockage avec la clef du compte (2) pour
(3) PUT directement vers le service de Blobs. L’URI contient l’adresse avec la clef
temporaire
Exemple:
https://stockageazure.blob.core.windows.net/sample/wines/ChateauSample.jpg
?st=2012-01-20T16%3A33%3A20Z&se=2012-01-
20T17%3A33%3A20Z&sr=c&sp=rw&sig=HgX671MAcaQvwAEB3ITXz5k8zct11
3OR6iW5NpB67uE%3D
27. Upload: cas Windows Server
client
(1) (2)
Service d’images
(2)
(1) GetUriForImage renvoie vers le
service lui-même
NTFS (2) PUT vers le service d’images qui
fait suivre le stream vers le dossier
NTFS
28. Access Control Services +
Windows Phone + OData
1 credentials
2 token
5 validity
3 http Request ok/not ok
with token
4 check token validity
6 Compute
results or
security
7 OData results or exception
security exception OData Service
NB : Le userId stocké dans le token = id du propriétaire du vin dans la BDD
29. Synthèse
Silverlight Pivot Viewer
Objective-C Pages (Silverlight)
WP7 iPhone Nav Desktop
Objets
Android
WCF Data
OData Client
métier WCF Data Client
Services Services
OData Client
Access Control Services
Serveur
Photo Upload Service
WCF Data Services
Service File System Blob Client
Entity Framework
File System Blobs Données
SQL Azure
Sql Server
DB
30. De A à Z : Choisir une
architecture pour sa
solution applicative
(ARC201)
7 février 2012
Stéphanie Hertrich Benjamin Guinebertière
blogs.msdn.com/stephe www.benjguin.com
Relation technique développeurs Relation technique architectes
Microsoft France Microsoft France