Ce jour s’est déroulé la session traitant de RIA Services, elle fut l’occasion d’aborder les bases de RIA Services, la sécurisation ainsi que quelques autres perspectives que peut offrir ce nouveau framework. Cela fait une petite année qu’on entend parler de cette technologie, mais pour certains cela reste encore assez vague. Durant la plénière du lundi nous avons eu l’occasion de voir un peu de « magie » avec les RIA Services grâce à David Rousset. Mais revenons sur ce fameux framework...

  • Qu’est ce que c’est ? A quoi ça sert réellement ?

Le but de RIA services est de simplifier le développement RIA, en optimisant la productivité du développeur, en se concentrant sur le métier tout en cachant la communication client / serveur inhérente à toute application RIA basée sur des services.

  • Comment permettre ce gain de productivité ?

En tant que bons développeurs, nous essayons de respecter une architecture logicielle, généralement une architecture n-tier, permettant de pouvoir tester unitairement chaque couche. Les concepteurs de RIA services sont partis du principe que créer toutes ces couches prenait énormément de temps. De ce fait RIA services permet de gérer l’ensemble de celles-ci de façon transparente, et rend donc notre application n-tier aussi simple à développer que si nous étions sur une application 1-tier. Le framework gère pour nous l’ensemble de ces couches, cependant il laisse la possibilité de les retravailler selon nos besoins. La série de démonstrations réalisée par les 2 speakers a eu pour but de nous montrer la facilité de réaliser un projet RIA pour les entreprises en seulement quelques minutes, en respectant ces étapes : - Création d’une couche de données via Entity Framework (on a vu par la suite que l’on n’était pas obligé de passer par l’ORM de Microsoft) - Après une petite compilation nous pouvons rajouter les Domain Services (un des éléments centraux des RIA Services) - La compilation de cet ensemble à pour but de créer du code dans la partie Silverlight. C’est cette phase qui supprime la partie communication client / serveur, car nous n’avons plus besoin de rajouter de service reference pour faire communiquer notre partie cliente Silverlight avec la couche métier sur notre serveur. Un des avantages de cette méthode est de permettre la mise à jour des définitions automatiquement dès qu’une signature de fonction est changée coté serveur. Ceci est aussi un gain de temps par rapport aux services traditionnels qui eux ont besoins d’une mise à jour manuelle. Cette première partie de démonstration nous montre qu’effectivement toute la tuyauterie de communication est totalement transparente pour nous.

La deuxième partie de la démonstration nous a permis de nous concentrer sur la partie interface. Une recommandation est apparue cependant, afin de profiter au maximum des RIA services, il faut disposer de Visual Studio 2010 qui intègre de nouveaux designers. Visual studio 2008 permet l’utilisation des RIA Services mais le développement de certaines parties reste fastidieux. Effectivement nous avons pu voir sous VS 2010 qu’un onglet du designer permet de visualiser les entités de notre base et de configurer les informations que nous voulons afficher par simple menu d’option. Ensuite grâce à un drag & drop sur l’interface nous avons la génération de l’interface permettant de visualiser les informations soit par liste ou soit par détail d’un item de cette liste. L’ajout d’un pager pour la liste se fait également par simple drag & drop et configuration dans les propriétés du composant. L’ensemble de cette démonstration n’a nécessité quasiment aucune ligne de code. De la même manière, le fait de mettre à jour un ensemble d’éléments binder dans une liste se traduit par une seule ligne de code d’où le gain de productivité. L’ensemble des requêtes réseaux est optimisé pour ne faire appel au serveur uniquement que pour afficher les éléments. Ces requêtes sont faites de manière asynchrone pour ne pas géner l’ergonomie de l’application. Certains composants ont d’ailleurs été rajoutés à ce but tel que le BusyIndicator.

RIA Services intègre également les bases de la sécurité pour une application web, en poussant jusqu’au client les contraintes de la base de données. Par exemple une limite de champs en base de données se traduira sur l’interface par une règle de validation de champs affichant un message d’erreur avant de lancer la communication avec le serveur. Ces règles peuvent également être rajoutées de manière manuelle sur les entités du serveur via des expressions régulières par exemple, et remonter de la même manière jusqu’au client. Quant à la partie sécurité utilisateur, RIA Services se base sur les Membership Provider de .NET, et donc avec l’ensemble des composants que l’on pourrait retrouver comme le role provider, … De la même manière cette sécurité peut se voir sur l’interface Silverlight par une gestion par contexte. Ceci permet de n’afficher à l’utilisateur que les onglets qu’il peut accéder. Cela est rendu possible grâce au pilotage du framework de navigation présent depuis Silverlight 3. La dernière démo a été celle de l’intégration de certains de ces concepts pour Sharepoint 2010. Nous avons pu voir David se servir des webservices REST de Sharepoint pour récupérer une liste, effectuer un traitement dessus et de l’afficher dans un formulaire Silverlight, ce qui montre la polyvalence de ce framework.

En conclusion, bien que les RIA Services ne sont pas encore sortis en version officielle, ces démonstrations ont permis de voir que le produit sera prêt pour rentrer dans le monde de l’entreprise de part sa simplicité de prise en main, le gain de productivité qu’il peut apporter, ainsi que part sa souplesse d’utilisation. Je vous invite à visiter le blog de David traitant de ce sujet : http://blogs.msdn.com/davrous