de a à z: accès aux données avec entity framework 4.2 et publication en odata
DESCRIPTION
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.TRANSCRIPT
palais des congrès Paris
7, 8 et 9 février 2012
07/02/2012
Stéphanie HertrichRelations Techniques DéveloppeursMicrosofthttp://blogs.msdn.com/stephe
De A à Z : Accès aux données avec Entity Framework 4.2 et publication en OData (LAN204)
Sébastien PERTUSMVP SQL ServerBEWISEhttp://www.dotmim.com
Le besoin métierL’architecture retenueL’accès aux données (ORM) avec Entity FrameworkLa publication des données en ODataSynthèse
Agenda
Notre projet fil rouge de la journée Application Cave à Vins Téléphone, tablette, Desktop,
multi-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
Le besoin
Rappel de l’architecture :côté données
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
Mapping Objet/Relationnel
Publication des données
Mapping Objet Relationnel
Entity Framework 4.x
Entity Framework
EF 1.NET 3.5 SP1Database First WorkflowORM plutôt basique …
EF 4.1 / 4.2 / 4.3.NET 4 basé sur EF4Code FirstDbContext API
EF 4.NET 4 / VS 2010Model First WorkflowPOCO, Lazy Loading, T4 Code-Gen, FKs
Working HorseEdition
Magic UnicornEdition
EF 4.5.Net 4.5 vNext
Edition
Entity Framework 4.x
Code First
Model First
Database First
DbContext : Alternative à ObjectContextDbSet : 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
Code First avec EF 4.x
DEMO
Entity Framework 4.2
Jusqu’à Entity Framework 4.2 DatabaseInitializer
DropCreateDatabaseAlways
Avec Code First Migrations (Entity Framework 4.3) Avec Magie Ou pas …
Migration avec EF 4.3
AutomatiqueMarquée
Migration avec EF 4.3
• Event• Id: int• Name: max• Description: max• When: datetime
codechange
update-database
add-migration
• Event• Id:int• Name: 128• Description:
max• When: datetime
DEMO
Migrations avec EF 4.3
EnumsSpatialAlternate KeysTVF Support (Table Value Function)Migrations Performance (automatic LINQ Complied queries)Designer (Multiple Diagramme)LINQ Improvments
=> Basé sur le .NET 4.5
Entity Framework vNext (4.5)
Publication des données
ODATA / WCF Data Services
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: Qui soient adressables facilement GET, POST, PUT, DELETE (CRUD)
http://odata.netflix.com/v1/Catalog/Titles?$filter=substringof('Bond', Name)&$top=5
http://odata.netflix.com/v1/Catalog/Titles
http://odata.netflix.com/v1/Catalog/Titles('8f4zf')
Requêter
Accéder à une collection: http://www..../Catalog/Genres
Utiliser un prédicat de recherche http://www.../Catalog/Genres(‘Action Classics')
Utiliser des fonctions http://www..../Catalog/Genres?
$filter=substringof('Action',Name) http://www..../Catalog/Genres?
$filter=substringof('Action',Name)&$top=10
Antisèche OData ! ;-)
Syntaxe des options Limitation de la bande passante utilisée $select, $filter,
$top, $skip, $count Utilisation de la
compression standard HTTP
Limitation des allers-retours $expand
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
WCF Data Services
Interfaçage avec n’importe quelle source de donnée locale ou distante (via l’implémentation d’IEnumerable ou d’IQueryable
WCF Data Services
WCF Data Services
Business Logic/Authentication/Authorization
Entity Framework Provider
HTTP
Reflection Provider Custom Providers
Entity Framework .NET Types + IQueryable
DEMO
WCF Data Services
DEMO
Authentification avec Access Control Services
Access Control Services + Windows Phone + OData
NB : Le userId stocké dans le token = id du propriétaire du vin dans la BDD
1 credentials
2 token
OData Service
3 http Requestwith token
4 request with token5 request + claims
7 OData results or security exception
6 Compute results or security exception
OAuth Protection modules
WS-Federation
OpenID
Interopérabilité (OData, REST)Manipulation CRUD des donnéesFiltrage à la sourcePossibilité d’intercaler des règles métier (interceptors)Support des authentificationsSuper simple couplé avec EF
Avantages OData/WCF Data Service
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
Synthèse
Chaque semaine, les DevCampsALM, Azure, Windows Phone, HTML5, OpenDatahttp://msdn.microsoft.com/fr-fr/devcamp
Téléchargement, ressources et toolkits : RdV sur MSDNhttp://msdn.microsoft.com/fr-fr/
Les offres à connaître90 jours d’essai gratuit de Windows Azure www.windowsazure.fr
Jusqu’à 35% de réduction sur Visual Studio Pro, avec l’abonnement MSDN www.visualstudio.fr
Pour aller plus loin
10 février 2012
Live Meeting
Open Data - Développer des applications riches avec le protocole Open Data
16 février 2012
Live Meeting
Azure series - Développer des applications sociales sur la plateforme Windows Azure
17 février 2012
Live Meeting
Comprendre le canvas avec Galactic et la librairie three.js
21 février 2012
Live Meeting
La production automatisée de code avec CodeFluent Entities
2 mars 2012
Live Meeting
Comprendre et mettre en oeuvre le toolkit Azure pour Windows Phone 7, iOS et Android
6 mars 2012
Live Meeting
Nuget et ALM
9 mars 2012
Live Meeting
Kinect - Bien gérer la vie de son capteur
13 mars 2012
Live Meeting
Sharepoint series - Automatisation des tests
14 mars 2012
Live Meeting
TFS Health Check - vérifier la bonne santé de votre plateforme de développement
15 mars 2012
Live Meeting
Azure series - Développer pour les téléphones, les tablettes et le cloud avec Visual Studio 2010
16 mars 2012
Live Meeting
Applications METRO design - Désossage en règle d'un template METRO javascript
20 mars 2012
Live Meeting
Retour d'expérience LightSwitch, Optimisation de l'accès aux données, Intégration Silverlight
23 mars 2012
Live Meeting
OAuth - la clé de l'utilisation des réseaux sociaux dans votre application
Prochaines sessions des Dev Camps