Cette session aborde 2 aspects liés à la couche de données : - le stockage et l’accès aux données côté serveur - la publication des données sous forme de service pour les rendre disponibles aux applications clientes Nous commencerons par le stockage des données et le mapping objet- relationnel avec Sql Server et Entity Framework 4.2 Code First. Puis, grâce à WCF Data Services, nous publierons ces données sous la forme d’un service OData qui offre un format très interopérable. --- Cette session est la 2ème du parcours « En pratique : Concevoir et développer une solution applicative ». Elle peut être suivie de manière totalement indépendante puisque seul le scénario métier sert de fil rouge dans le parcours. La session se déroule en 2 temps : 1. Mise en œuvre basique de la techno 2. Intervention d’un expert de la techno qui va proposer d’améliorer l’application ou l’expérience en utilisant des techniques nouvelles ou plus avancées ou peu connues et pourtant si pratiques.
2. De A à Z : Accès aux données avec
Entity Framework 4.2 et publication
en OData (LAN204)
07/02/2012
Stéphanie Hertrich Sébastien PERTUS
Relations Techniques Développeurs MVP SQL Server
Microsoft BEWISE
http://blogs.msdn.com/stephe http://www.dotmim.com
3. Agenda
Le besoin métier
L’architecture retenue
L’accès aux données (ORM) avec Entity Framework
La publication des données en OData
Synthèse
4. Le besoin
Notre projet fil rouge de la journée
Application Cave à Vins
Téléphone, tablette, Desktop, mult
i-plateforme
Contraintes côté données :
Multi-device donc Interopérabilité
Possibilité d’être dans le cloud ou
non (réversibilité)
Authentification pour accéder aux
données des propriétaires de
cave
5. Rappel de l’architecture :
côté données
Sql Sql
Mapping Server Azure
Objet/Relationnel
Chaine de connexion
Entity Framework Serveur
Publication
des données
WCF Data Services
WCF Data WCF Data
Client OData
Services Services
Client
Silverlight Silverlight
iPhone, …
pour WP Desktop
7. Entity Framework
EF 1
.NET 3.5 SP1
Database First Workflow
ORM plutôt basique …
EF 4
.NET 4 / VS 2010 Working Horse
Model First Workflow Edition
POCO, Lazy Loading, T4 Code-Gen, FKs
EF 4.1 / 4.2 / 4.3
.NET 4 basé sur EF4 Magic Unicorn
Code First Edition
DbContext API
EF 4.5
.Net 4.5 vNext
Edition
9. Code First avec EF 4.x
DbContext : Alternative à ObjectContext
DbSet : Alternative à ObjectSet
Ils ne remplacent pas leur prédécesseurs. Ils sont une
alternative !
Simplification, Nouvelles méthodes.
Méthode Find(Key)
Utilise un cache de données pour éviter de re-requêter
11. Migration avec EF 4.3
Jusqu’à Entity Framework 4.2
DatabaseInitializer
DropCreateDatabaseAlways
Avec Code First Migrations (Entity Framework 4.3)
Avec Magie
Ou pas …
12. Migration avec EF 4.3
Automatique
Marquée
• Event • Event
• Id: int • Id:int
• Name: max • Name: 128
• Description: max • Description: max
• When: datetime • When: datetime
code add- update-
change migration database
16. OData en 1 slide
Une façon uniforme de représenter des données structurées:
Atom, JSON
Des conventions d’URL pour:
La Navigation, les filtres, le tri, la pagination etc...
Des opérations uniformes:
http://odata.netflix.com/v1/Catalog/Titles
Qui soient adressables facilement
http://odata.netflix.com/v1/Catalog/Titles('8f4zf')
GET, POST, PUT, DELETE (CRUD)
http://odata.netflix.com/v1/Catalog/Titles?$filter=substringof('Bond', Name)&$top=5
17. Requêter
Accéder à une collection:
http://www..../Catalog/Genres
Utiliser un prédicat de recherche
http://www.../Catalog/Genres(‘ ction Classics')
A
Utiliser des fonctions
http://www..../Catalog/Genres?$filter=substringof('Action',
Name)
http://www..../Catalog/Genres?$filter=substringof('Action',
Name)&$top=10
18. Antisèche OData ! ;-)
Syntaxe des options Limitation de la bande
passante utilisée
$count $select, $filter, $top, $ski
p, $count
$expand
Utilisation de la
$filter
compression standard
$format HTTP
$orderby Limitation des allers-
$skip retours
$top $expand
19. WCF Data Services
OData, c’est…
…Une spécification d’un modèle de données exposé sur le
Web et consommable par des messages simples HTTP
WCF Data Services, c’est….
…Un SDK et l’implémentation de la spécification OData
par Microsoft
pour .NET
20. WCF Data Services
WCF Data Services
Business Logic/Authentication/Authorization
Entity Framework Provider Reflection Provider Custom Providers
Entity Framework .NET Types + IQueryable
Interfaçage avec n’importe quelle source de donnée locale ou distante (via
l’implémentation d’IEnumerable ou d’IQueryable
23. Access Control Services + Windows
Phone + OData
1 credentials
2 token
WS-Federation
OpenID
OAuth Protection
3 http Request modules
with token 5 request
+ claims 4 request with token
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
24. Avantages OData/WCF Data Service
Interopérabilité (OData, REST)
Manipulation CRUD des données
Filtrage à la source
Possibilité d’intercaler des règles métier (interceptors)
Support des authentifications
Super simple couplé avec EF
25. Synthèse
Par rapport aux contraintes du projet Cave à Vin
Interopérabilité avec WCF Data Services
(OData)
Dans SQL Azure ou SQL Server en fonction du
fichier de configuration (facilite la réversibilité)
Authentification fédérée (ACS) interceptée dans
WCF Data Services
26. Pour aller plus loin
Prochaines sessions des Dev Camps
Chaque semaine, les DevCamps 10 février Live Open Data - Développer des applications riches avec le
ALM, Azure, Windows Phone, HTML5, OpenData 2012 Meeting protocole Open Data
http://msdn.microsoft.com/fr-fr/devcamp 16 février Live Azure series - Développer des applications sociales sur la
2012 Meeting plateforme Windows Azure
17 février Live
Comprendre le canvas avec Galactic et la librairie three.js
Téléchargement, ressources et
2012 Meeting
21 février Live
La production automatisée de code avec CodeFluent Entities
2012 Meeting
toolkits : RdV sur MSDN 2 mars
2012
Live
Meeting
Comprendre et mettre en oeuvre le toolkit Azure pour Windows
Phone 7, iOS et Android
http://msdn.microsoft.com/fr-fr/
6 mars Live
Nuget et ALM
2012 Meeting
Les offres à connaître
9 mars Live
Kinect - Bien gérer la vie de son capteur
2012 Meeting
13 mars Live
90 jours d’essai gratuit de Windows Azure 2012 Meeting
Sharepoint series - Automatisation des tests
www.windowsazure.fr 14 mars
2012
Live
Meeting
TFS Health Check - vérifier la bonne santé de votre plateforme
de développement
15 mars Live Azure series - Développer pour les téléphones, les tablettes et
Jusqu’à 35% de réduction sur Visual Studio 2012 Meeting le cloud avec Visual Studio 2010
Pro, avec l’abonnement MSDN 16 mars
2012
Live
Meeting
Applications METRO design - Désossage en règle d'un template
METRO javascript
www.visualstudio.fr 20 mars Live Retour d'expérience LightSwitch, Optimisation de l'accès aux
2012 Meeting données, Intégration Silverlight
23 mars Live OAuth - la clé de l'utilisation des réseaux sociaux dans votre
2012 Meeting application