Réalisé par                                 : Sofiene Rabhi.

Société                                         : Cynapsys IT (Parc Technologique el Ghazala).

Fonction                                       : Ingénieur de développement logiciel.

Mail                                               : s.rabhi@cynapsys.de

Langue, Language, Sprache  : Français, French, Französisch.

Description                                 : Cet article est une introduction au FrameWork .NET RIA Services qui facilite la construction des applications Client/serveur avec Microsoft Silverlight.

 

Silverlight WCF RIA SERVICES

1.      Pré requis

  • Visual Studio 2010 RC
  • Microsoft Silverlight 4 RC/WCF RIA Services

Lien de téléchargement : http://www.silverlight.net/getstarted/silverlight-4/#tools

2.     Définition de WCF/RIA Services et Entity FrameWork

2.1. WCF/RIA Services

RIA est une couche logicielle (API) qui va permettre de simplifier l'implémentation de la communication entre les tiers d'une application n-tiers (entre la partie client léger -silverlight ici- et le serveur web).

Pour ce faire, RIA s'appuie sur quattre mécanismes :

  • Centralisation de la définition des règles de validation des données. Le mécanisme est basé sur la décoration des classes et membres par des attributs dans un fichier de métadonnées;
  • le modèle de données est diffusé côté client (on ne manipule donc que des objets métiers qui correspondent au modèle Entity Framework) ;
  • proxy de communication qui utilise Linq pour requêter (ADO.NET DataServices). La requête Linq est transformée en url de requêtage pour interroger le serveur, récupérer les résultats et mapper les résultats en objets métiers ;
  • génération automatique des points de terminaison (WCF) lors du déploiement de l'application (au nombre de 3 : WsHttpBinding, BinaryHttpBinding et BasicHttpBinding).

 

WCF (Windows Communication Fundation) est un mécanisme qui permet aux applications de communiquer facilement ensemble.

Cette technologie présente comme avantage de séparer l'implémentation (code), des aspects techniques utilisés pour négocier la communication entre application (WebService, Binaire, etc).

Cette technologie repose sur un principe : ABC - Address, Binding, Contrat.

  • Address - Tout point de terminaison dispose d'une adresse ;
  • Binding - Tout point de terminaison est exploitable suivant certaines règles (protocole, sécurité, quotas de données, etc) ;
  • Contrat - Tout point de terminaison est lié à un contrat de service ;

 

En résumé, le client va requêter une source de données (DataContext) en utilisant Linq sur un proxy. Le proxy va se charger de traduire la requête en url, de se connecter au serveur pour la lui transmettre et enfin, de récupérer les résultats et effectuer le mapping relationnel objet (côté client).

Il n'est donc plus nécessaire d'implémenter un Web Service (ou autre) pour les opérations de création, mise à jour et de récupération d'objets (dans la majorité des cas).

Grâce à ce mécanisme, le travail des équipes de développement se concentre alors sur les aspects métiers de l'application n-tiers. Cela permet de gagner du temps précieux sur l'implémentation des couches de communication entre composants applicatifs de l'application n-tiers.

En d'autres termes, il n'est plus nécessaire de se préoccuper du moyen utilisé pour effectuer les accès aux données du SI (type Web Service ou autre). RIA se charge de cela en offrant au développeur un proxy à instancier et à interroger (en Linq). RIA peut prendre également en charge les mécanismes de validation, insertion, modification, suppression de données.

(source : http://bdevuyst.developpez.com/tutoriels/dotnet/wcf-ria-services-1/)

2.2. Entity FrameWork

Entity Framework est la solution de mapping objet-relationnel proposée par Microsoft. Son but est de fournir la couche d'abstraction nécessaire aux développeurs pour qu'ils n'accèdent plus directement à la base de données, mais par l'intermédiaire d'entités définies par un modèle appelé EDM (Entity Data Model).

Ce modèle est divisé en 3 parties :

• Le schéma conceptuel : Il regroupe la définition des entités, des ensembles d'entités et des fonctions utilisées. Ces éléments sont définis dans un fichier XML appelé CSDL (Conceptual Schema Definition Language).

 

• Le schéma logique : Celui-ci correspond à la définition des tables, vues et procédures stockées déclarées dans la base de données. Toutes ces informations sont regroupées dans un fichier XML appelé SSDL (Store Schema Definition Language).

 

• Schéma de liaison : Il définit les liaisons entre le schéma conceptuel et le schéma logique. Il associe entre autres les entités déclarées dans le fichier CSDL aux tables définies dans le fichier SSDL. Ce mapping est inscrit dans le fichier XML MSL (Mapping Specification Language).

 

 

Cette architecture particulière permet une totale indépendance entre les objets utilisés dans la couche d'accès aux données et les éléments (tables, vues, procédures stockées) de la base de données. Il est ainsi possible de modifier le schéma logique sans que cela n'ait d'impact sur la définition des objets et inversement.

 

Il est juste nécessaire de mettre à jour le schéma de liaison MSL. Lors du traitement d'opérations CRUD (création, lecture, mise à jour et suppression), le FrameWork utilise le modèle EDM pour construire les requêtes SQL. A partir d'une entité définie dans le fichier CSDL, il est possible de retrouver la ou les tables associées décrites dans le schéma logique grâce au schéma de liaison qui associe les entités aux tables.

2.3.  Développement de l’application

Nous allons utiliser une base de données SQL/SERVER 2008 qui définit  une table « Employees » qui contient toutes les informations liées aux employés d’une entreprise.

 

Le but de l’article : nous avons une base de données contenant une liste d’employés. Nous allons afficher cette liste sous la forme d’une grille de manière relativement riche en ne tapant aucune ligne de code.