La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Développement dapplication avec base de données Semaine 10 : WCF avec Entité Framework Automne 2013.

Présentations similaires


Présentation au sujet: "Développement dapplication avec base de données Semaine 10 : WCF avec Entité Framework Automne 2013."— Transcription de la présentation:

1 Développement dapplication avec base de données Semaine 10 : WCF avec Entité Framework Automne 2013

2 Dans ce cours, nous allons voir lutilisation de lentité Framework avec les services WCF et quels complications(et solutions) peuvent survenir. Introduction

3 Architecture Création de la partie serveur Création de la partie client Exercices Plan de présentation

4 Architecture

5 Lutilisation de lentité framework nous aidera à gérer la base de données du côté service. Par contre, du côté client, EntityCollections nexistera pas de la même manière. Par exemple, les objets en relations avec les autres seront stocké dans des List plutôt que dans un EntityCollections. Un autre différence est que les propriétés de navigations ne seront pas automatiquement dans les deux directions. De plus, il faut garder à lesprit que les modifications stockés dans ObjectStateEntry seront perdues une fois transféré au service. Mise en garde

6 Une mauvaise choses pour les clients qui nutilisent pas le.Net. De plus, la sérialisation(protocole du service) fait que les objets EntityObject sont très gros. Par contre, si lon est certain dutiliser un client.Net, cela nous simplifie énormément le travail. Retourner des EntityObjects de la part du service: Bon ou Mauvais?

7 1.Créer un projet(exemple Console) qui utilise qui utilise lentité Data Modèle 2.Ajouter un projet « Application du service WCF » Construire un service avec lentité Framework

8 Renommer(partout dans le projet) IService1 pour quelque chose de plus significatif. Ajouter une référence à System.Data.Entity Copier la section ConnectionStrings de votre projet Modèle (app.config) vers votre projet Service(web.config) Construire un service avec lentité Framework

9 1.Ouvrir le fichier de linterface (exemple : ICustomerService). 2.Supprimer les opérations par défaut GetData et GetDataUsingDataContract. 3.Ajouter le bon usign de votre EDM. 4.Ajouter les méthodes OperationContract dans votre interface Construire un service avec lentité Framework

10

11 Il est possible de définir de nouveaux types qui pourront être utilisés du côté client(définis dans le WSDL) avec le mot-clé [DataContract()](et par conséquent [DataMember()]).

12 Cest maintenant le temps dajouter de la logique à notre service 1.Supprimer les méthodes par défauts. 2.Ajouter les bons using. 3.Implémenter linterface du service 4.Ajouter le code pour retrouver la liste des contacts Implémenter linterface du service

13 Construire un service avec lentité Framework

14 Recommandation Lorsquon utilise un service Web, il faut que la durée de vie du contexte(et sa connexion) soit la plus courte possible. Pourquoi? Pour éviter davoir plusieurs contextes entres les différents clients qui soit désynchronisés.

15 Attention avec le Lazy Loading. Il est préférable de le désactiver et de gérer nous-même les éléments transférés. La sérialisation lors dun transfert essaiera de récupérer les entités reliés. Pour tester votre nouvelle fonction, vous pouvez suivre les étapes(voir plus bas)voir plus bas

16 Construire un service avec lentité Framework La méthode GetContact

17 Construire un service avec lentité Framework InsertContact Il y a plusieurs choses à savoir si lon veut ajouter un contact: Les valeurs par défaut définies dans le modèle ne sont pas sérialisé. Si on veut ajouter les éléments en liens avec une entité, il faut utiliser le mot clé [DataContract(IsReference = true)] pour éviter une référence cyclique lors de la sérialisation... Par contre les performances seront moindres.

18 Construire un service avec lentité Framework

19

20

21 Supprimer un contact et ses adresses

22 Construire un service avec lentité Framework Lors de la modification dun contact un problème simpose: Comment savoir ce qui a été modifié, ajouté ou supprimer. Comme nous navons pas accès au ChangeTracker du côté client, il faudra utiliser une astuce pour faire la modification.

23 Construire un service avec lentité Framework Au niveau du service, nous allons définir un nouveau type pour la modification dun contact(ContactUpdate). Ce nouveau type contiendra le Contact et ses adresses modifié et ajouté. De plus, il contiendra la liste des numéro dadresse à supprimer. Et comme On sait quune nouvelle adresse à un id < 0, il ne restera quà traiter indépendamment les trois cas possibles (Ajouter, Modifier et Supprimer)

24 Construire un service avec lentité Framework

25

26

27 1.Créer un nouveau projet Console ou Windows Form. 2.Ajouter une référence à un Service. Clique droit sur le nouveau projet et sélectionner Ajouter une référence de service Construire un client qui utilise un service avec lentité Framework

28 Cliquer sur le bouton Avancé… et modifier le type de collection de System.Array pour Generic List. Cliquer sur Ok Construire un client qui utilise un service avec lentité Framework

29 Comme nous aurons probablement beaucoup de donnés à transférer nous devrons augmenter la taille maximale du buffer. Double-click sur app.config. Dans lélément binding, ajouter/modifier lattribut MaxReceivedMessageSize. Augmenter sa valeur. Faire la même chose avec lattribut MaxBufferSize. Les deux attributs MaxReceivedMessageSize et MaxBufferSize doivent avoir la même valeur. Construire un client qui utilise un service avec lentité Framework

30 Maintenant, vous pouvez tester votre service en créant un objet en lien avec le proxy. Construire un client qui utilise un service avec lentité Framework

31 Faite les exercices. Exercice

32 Questions?


Télécharger ppt "Développement dapplication avec base de données Semaine 10 : WCF avec Entité Framework Automne 2013."

Présentations similaires


Annonces Google