Comment développer des applications d’entreprises orientées données avec Silverlight 3 : introduction à .NET RIA Services (1/4)


Article mis à jour : juillet 2009 pour la sortie de Silverlight 3 RTW et .NET RIA Services Juillet 2009

Selon une étude Gartner de Mai 2005, environ 60% des nouvelles applications utiliseront une technologie RIA d’ici 2010. Aujourd’hui, nous pouvons utiliser différentes technologies pour construire une application RIA comme par exemple AJAX, Flash et Silverlight. Coté AJAX, on atteints déjà en grande partie le maximum de ce que l’on peut faire en terme d’expérience utilisateur à cause des limitations du HTML et des langages de scripts client. En attendant de voir ce que nous fournira HTML5 et CSS3 d’ici quelques années, cela positionne Silverlight comme particulièrement intéressants avec le bon goût d’être disponible de suite. Ainsi, nous allons nous pencher ici sur les nouveautés de Silverlight 3 et plus spécifiquement autour de la simplification de l’écriture d’applications n-tiers orientées données.

Silverlight est une technologie particulièrement intéressante pour rendre la couche cliente d’une application Web efficace et attrayante mais je rencontre malgré tout souvent des développeurs sceptiques sur sa capacité à représenter la couche de présentation d’une application d’entreprise. Pourtant, elle permet de se soustraire de problématiques agaçantes et récurrentes comme la gestion des CSS, du rendu multi-navigateurs, de l’adaptation à la résolution de l’écran, d’animations… sans compter la présence d’un environnement .NET dans le navigateur !

Bref, je ne reviendrais pas sur les avantages d’une technologie comme Silverlight dans un scénario RIA. Cependant, bien que Silverlight 2 constitue un sous-ensemble de WPF (Windows Presentation Foundation) et du .NET Framework 3.5, une grande partie des fonctionnalités de WPF permettant de créer des applications orientées données n’ont pas été portées. En conséquence, certains développeurs ont fait l’impasse sur Silverlight 2 car l’implémentation de l’infrastructure centrée sur les données dans une solution Web leur semblait trop compliquée à mettre en œuvre.

Revenons d’ailleurs rapidement sur la problématique du flux de données dans une application n-tiers sur le Web. Analysons le diagramme suivant récupéré du document Microsoft .NET RIA Services May 2009 Preview :

3573504021

C’est un schéma relativement classique. Nos données sont stockées dans une base de données (Database) comme SQL Server, Oracle, MySQL. Ce serveur pouvant être stocké ou non sur la même machine où se trouve hébergée notre application Web. Pour accéder à nos données depuis notre application, on met en place une couche d’accès aux données (Data Access Layer). Ce travail peut aujourd’hui être simplifié par l’utilisation de technologies comme LINQ to SQL ou Entity Framework. Il faut ensuite implémenter les règles métiers et la logique globale de notre application.

Une fois l’ensemble des ces tâches effectuées, on peut considérer avoir terminé la partie serveur de notre application Web. Si l’on décide de partir sur un frontal client en technologie Silverlight, comment allons-nous exposer cette partie serveur au client ? Jusqu’à présent, cela consistait à l’exposer sous la forme d’un WebService ou d’un service WCF avec l’aide ou non de technologies type REST/ADO.NET Data Services. Ensuite, si l’on souhaitait éviter un aller/retour serveur sur la validation de certaines contraintes (valeurs autorisées dans un formulaire de saisie par exemple), il fallait répliquer une partie du code de validation serveur dans le code du client.

Vous aurez donc compris que ce que l’on gagne à mieux tirer partie de la puissance du poste client avec des technologies RIA comme Silverlight ou même AJAX, on le perds d’un autre coté en complexité avec la plomberie à mettre en place pour faire communiquer le client et le serveur Web.

L’idéal serait donc de faire appel à une technologie ou un framework nous permettant de simplifier ces concepts. En tant que développeur, on ne veut ainsi pas perdre de temps à implémenter la plomberie de communication entre le client et le serveur, de validation coté client (voir réplication) des règles métiers définies coté serveur mais comme d’habitude se concentrer sur l’essentiel.

.NET RIA Services : développez des applications n-tiers sans vous en rendre compte !

.NET RIA Services a exactement pour but de simplifier et de masquer toute cette plomberie nécessaire à la création d’une application Web dite RIA (Rich Internet Application) orientée données. Pour cela, cette technologie fournit un jeu de composants et d’extensions d’ASP.NET facilitant le processus de développement d’une application n-tiers, rendant votre application presque aussi simple à développer que si vous étiez sur un seul tiers (ou 2 tiers si la base de données n’est pas sur le serveur Web). De plus, certains services tels que l’authentification ou la gestion des rôles sont également fournis.

De son coté, Silverlight 3 apporte de nouveaux contrôles et de nouvelles fonctionnalités voués également à simplifier le développement d’applications orientées données comme les nouveaux contrôles de données type DataGrid, de navigation, de validation et de gestion de fenêtres.

La combinaison de ces apports coté serveur à ASP.NET et coté client à Silverlight 3 va donc nous permettre de développer des applications d’entreprise de manière extrêmement simplifiée. Ses concepteurs considèrent ainsi que .NET RIA Services apporte une expérience RAD (Rapid Application Development) au monde RIA. Une productivité bienvenue en ces périodes sombres de fortes contraintes économiques…

Si l’on reprend le diagramme précédent, .NET RIA Services va donc jouer le rôle de glue entre notre serveur (sa couche d’accès aux données et ses règles métiers) et le client Silverlight. Elle va nous permettre de développer dans notre projet Silverlight en nous donnant l’impression d’être physiquement sur le serveur Web. Une expérience de développement particulièrement agréable vous allez voir !

Note : .NET RIA Services va être démontré dans cet article sous l’aspect Silverlight avec l’utilisation d’Entity Framework en tant qu’ORM. Cependant, il est important de noter que .NET RIA Services n’est pas exclusivement lié à Silverlight 3 ou à Entity Framework comme le montre le schéma suivant :

3573504107

Il a donc pour but final de simplifier les problématiques n-tiers dans de multiples scenarios. Aujourd’hui sont supportés de manière native Linq to SQL et Linq to Entity. Vous pouvez déjà vous connecter à des tables de Windows Azure par exemple mais cela nécessitera un peu plus de travail de votre part.

Préparation du poste de développement

Voici les pré-requis pour pouvoir développer une application Silverlight 3 / .NET RIA Services :

<

p style="margin: 0cm 0cm 10pt" class="MsoNormal">1 – Visual Studio 2008 SP1 ou sa déclinaison gratuite Visual Web Developer Express 2008 SP1
2 – Silverlight 3 RTW : le SDK et les outils pour Visual Studio 2008.
3 - .NET RIA Services : c’est la version de Juillet 2009 allant bien avec Silverlight 3 RTW

Un clavier, une souris et vos doigts. :)

Note : Visual Studio 2010 Beta 1 supporte bien les projets de type Silverlight 3 Beta mais pas encore .NET RIA Services. Il faudra attendre Visual Studio 2010 Beta 2 pour avoir un support parfait de Silverlight 3 RTW et .NET RIA Services avec un nouveau designer de surface bien plus évolué que celui de VS 2008 pour Silverlight 2. Dans cet article, nous resterons donc sur Visual Studio 2008 SP1.

Un aperçu rapide de .NET RIA Services en vidéo

Avant toute chose, voici un bref aperçu des nouvelles possibilités offertes par .NET RIA Services et Silverlight 3. Un teasing en mode Hello World de .NET RIA en quelques sortes. :) – Double-cliquez sur la vidéo pour la mettre en plein écran –

Get Microsoft Silverlight

Rendez-vous maintenant dans le 2ème billet pour découvrir étape par étape comment écrire une petite application RIA de gestion de clients et comprendre un peu mieux comment .NET RIA Services fonctionne.