Upload
microsoft
View
177
Download
1
Embed Size (px)
DESCRIPTION
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.
Citation preview
palais des congrès Paris
7, 8 et 9 février 2012
7 février 2012
Stéphanie Hertrichblogs.msdn.com/stepheRelation technique développeursMicrosoft France
De A à Z : Choisir une architecture pour sa solution applicative (ARC201)
Benjamin Guinebertière www.benjguin.comRelation technique architectesMicrosoft France
Agenda
1. Le besoin métier2. L’analyse et le choix des technologies3. La conception et les choix d’implémentation4. Conclusion
http://msdn.microsoft.com/en-us/library/ff650706.aspx
Ce que la session n’est pas
Le besoin métier
Application Cave à VinsTéléphone, tablette, Desktop, multi-plateformeCas 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
Le besoin métier
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, …
Contraintes s’ajoutant au Cahier des charges
L’analyse et le choix des technologies
ConstatUX réussie => bien intégrée et homogène avec l’ergonomie nativement proposée par le device
SolutionUtiliser les contrôles du langage natifDévelopper en langage natif des principales plateformesLe fallback pourrait être une interface web (PhoneGap)
La plus belle app de cave à vins
Pourquoi réinventer la roue ?IHM de manipulation de collection
Ex : http://netflixpivot.cloudapp.net/
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 …
Desktop : PivotViewer
• Une appli par plate-forme cliente • Toujours les mêmes données
Þ Faciliter l’accès aux données et aux services métiers
Þ Services http REST
Déclinable facilement sur tout type de device
DataDAL
WP7 Silverlight .Net Html5 …
LAN, WAN, …
Ex Netflix: les films des années 80 ayant une note > 4 et leur awardhttp://odata.netflix.com/Catalog/Titles?$filter=ReleaseYear le 1989 and ReleaseYear ge 1980 and AverageRating gt 4&$expand=Awards
Un service de données interopérable :OData
Data
DAL
WP7 Silverlight .Net Html5
Réponse =Flux XML/JSON
Question = URI http
…
LAN, WAN, …
OData
Quelques précisions complémentaires au dessus de REST (~profil): Odata http://
www.odata.org/developers/protocols/overview
OData
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, RemObjects Data Abstract
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 TablesSchéma fixe
Clefs/valeursColonnesDocumentsGraphes…
Montée en charge Non linéaire linéaire
BDD relationnelle ? C’est bon pour nous ? Sql/noSql
Fédérations SQL AzureComplémentarité
Plateforme Cloud ?Pourquoi ?
!!! Le client est frileux : il ne veut pas être lié au Cloud de manière définitive
Prévoir une architecture réversible
Application publique : Charge indéterminée
Utilisation
Com
pute
Temps
Utilisation
Inactivité
“Puissance Ponctuelle“
Com
pute
Temps
“Pics Imprévisibles“
Utilisation Moyenne
Utilisation MoyenneCom
pute
Temps
“Croissance Rapide “
Com
pute
Temps
Utilisation Moyenne
“Pics Prévisibles“
Par les APIs de chaque fournisseur
Par Windows Azure Access Control Services
Gérer les règles au niveau de l’application
Gérer les différents protocoles et formats de jetons
Les maintenir
L’application reconnaît ACS
On configure ACS pour accepter des fournisseurs d’identité
Utiliser des providers d’identité existants(Facebook, Google, LiveID, …)
InterfaceUtilisateur
Service
ServiceEntrepôt de données
métier
Accès aux données Accès aux services
Interfaces de services
Accès aux services
Modèles
VuesCinématique
Remplissons ce modèle
Android
OData Client
Objets métier
PagesNav
DB
WP7
OData Client
Silverlight
Architecture à ce stade
Client
Serveur Web/App:Windows Server
ouWindows Azure
Données
Desktop
OData Client
Pivot Viewer
(Silverlight)iPhone
OData Client
Objective-C
Service
OData
Access Control Services
?
La conception et les choix d’implémentation
WCF Data Services :OData pour .Net
WCF Data Services
Entity Framework Provider
HTTP
.NET Provider Custom Providers
Entity Framework.NET Types +
IQueryable/IUpdatable
Business Logic/Authentication/Authorization
WCF Data Services : OData pour .Net
Entity Framework
Sql Serve
r
Sql Azure
WCF Data Services
WCF Data Services
WCF Data Services
Silverlight pour WP
Silverlight Desktop
iPhone, …
Client OData
Client
Serveur
Chaine de connexion
Accélérateur Pour Windows Phone mais aussi iOS et Android:http://watwp.codeplex.com/https://github.com/microsoft-dpe/wa-toolkit-ioshttps://github.com/microsoft-dpe/wa-toolkit-android
Windows Azure
WS-Federation
OpenID
BesoinsDéploiement des données et services à demeure ou CloudStockage des fichiers d’image à demeure ou sur les blobsTransparent 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 BDDService de stockage des photos renvoyant une simple Uri
Architecture Réversible
Sur disque à demeureSur 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
Srockage des photos
(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=HgX671MAcaQvwAEB3ITXz5k8zct113OR6iW5NpB67uE%3D
Upload: cas Windows Azure
client
Service d’images Blobs
(1) (3)
(2)
(1) GetUriForImage renvoie vers le service lui-même(2) PUT vers le service d’images qui fait suivre le stream vers le dossier NTFS
Upload: cas Windows Server
client
Service d’images
NTFS
(1) (2)
(2)
Access Control Services + Windows Phone + OData
1 credentials
2 token
OData Service
3 http Requestwith token
4 check token validity
5 validity ok/not ok
7 OData results or security exception
6 Compute results or security exception
NB : Le userId stocké dans le token = id du propriétaire du vin dans la BDD
Service
WP7
WCF Data Services
Silverlight
Android
OData Client
Objets métier
Pages
Nav
Synthèse
Client
Serveur
Données
Desktop
WCF Data Services
Pivot Viewer
(Silverlight)iPhone
OData Client
Objective-C
SQL Azure DB
Sql Server
Entity Framework
WCF Data Services
Access Control Services
BlobsFile System
Photo Upload Service
File System Blob Client
7 février 2012
Stéphanie Hertrichblogs.msdn.com/stepheRelation technique développeursMicrosoft France
De A à Z : Choisir une architecture pour sa solution applicative (ARC201)
Benjamin Guinebertière www.benjguin.comRelation technique architectesMicrosoft France