Il y a peu, nous avons décidé au sein de notre équipe de faire migrer un projet en cours de développement de Silverlight 2 vers Silverlight 3, ce dernier étant sorti en release officielle au courant de l'été. Contrairement à ce que nous craignions, l'opération s'est bien passée, notamment grâce à cette petite checklist bien utile. Une fois les tools Silverlight 3 installés, l'assistant de conversion de Visual Studio s'occupe d'à peu près tout, sauf quelques mises à jour à faire si vous utilisez des services WCF.

Silverlight

Mais une autre question s'est posée à nous : fallait-il transformer nos services WCF Silverlight 2 (assez lourds à manipuler et à mettre à jour) en RIA Services ? En effet ce nouveau framework applicatif paraissait contenir plein de bonnes surprises pour nous faciliter la vie. Utilisant pour prendre la décision une méthode un peu débile mais qui marche, à savoir un tableau avec une colonne + et une colonne -, voici ce que nous avons obtenu :

Du côté des avantages :

+ Un découpage clair des couches et un système de DomainContext qui peut se marier avec du MVVM, du MVC ou même du MVP (solution que nous avions retenue).

+ Les classes clientes des services côté Silverlight sont automatiquement générées lors du build des services, pas de référence de service à ajouter ou mettre à jour contrairement à du WCF classique. Lors du passage sur un serveur d'intégration continue ou de recette, on s'ôte aussi un gros poids puisque la mise à jour des références vers le nouvel emplacement des services n'a pas lieu d'être.

+ Tout un tas de facilités introduites aussi bien au niveau de l'interrogation des services que de la mise à jour des entités.

+ Exceptions de services WCF mieux gérées qu'avec Silverlight 2 (le retour d'exceptions du service vers le client Silverlight n'était tout simplement pas géré) et Silverlight 3 (où il faut surcharger un comportement pour générer le bon code d'erreur à renvoyer au client).

+ Meilleure prise en charge des rôles et droits utilisateur...

Les inconvénients :

- RIA Services est encore en CTP, pour une sortie pas prévue avant 2010 (!)

- Il faut une petite bidouille pour installer RIA Services sur un Visual Studio français.

- Une testabilité ... à tester. Le mocking des DomainServices n'a pas l'air évident même si Nikhil Kothari a proposé une solution sur son blog.

- Mauvaise intégration avec ReSharper : il faut inclure les classes clientes générées par RIA Services dans le projet Visual Studio sinon ReSharper ne retrouve pas ses petits.

Tout compte fait, ça a beau ne pas être une version finale, les avantages et les gains de temps induits sont tels qu'on ne voit pas comment trouver le courage de s'en passer ! Reste le problème de la stabilité d'une CTP et de la nécessité de repenser les services, qui peut, on le comprend, en rebuter certains. Toutefois, dans un projet très peu critique comme le nôtre, le risque semble en valoir la chandelle.