Le premier site francophone dédié au développement Pocket PC

.NET, la route vers des développements unifiés
Août 2002
 
   


Téléchargez le code ici (36 Ko)

Qui n’a jamais rêvé de cibler de nombreuses plates-formes en ne faisant qu’un seul développement. Un seul programme qui fonctionne sous forme d’application Windows classique (winform), de page web (webform) ou encore sur PocketPC (Compact Framework). Est-ce que Microsoft .NET permet ce type de développement ?

Nous allons essayer de répondre à cette question dans le cadre d’un exemple concret, une application d’aide mémoire pour les anniversaires. Nous allons faire une version Winform, Webform et Compact Framework avec comme objectif d’avoir une très grande partie du code en commun. Comme vous le constatez nous allons élargir le carde habituel des PocketPC.

Pour obtenir le Smart Device Extension pour Visual Studio .NET, qui ajoute les fonctions PocketPC à Visual Studio, regardez la page : http://msdn.microsoft.com/vstudio/device/sdebeta.asp

Petite introduction sur .NET

Microsoft .NET est le nouvel environnement de développement que propose Microsoft. Avant l'arrivé de .NET le choix d'une technologie de développement était complexe. En effet, les solutions étaient vastes et impliquaient surtout des technologies assez différentes telles que Visual Basic 6.0, C++, VBScript, MFC, ASP, ActiveX, DCOM...

Désormais .NET rationalise tout cela et propose un environnement 100% objet.

Les programmes .NET fonctionnent dans une machine virtuelle qui nous offre des services de hauts niveaux, comme un garbage collector (ou ramasse miettes) qui évite les fuites mémoire, un contrôle des dépassements mémoire et beaucoup beaucoup d’autres choses.

Avec .NET Microsoft à introduit C# (Csharp) un nouveau langage avec une syntaxe efficace et une utilisation facile des nouveaux concepts de .NET. Si vous connaissez C++ ou Java vous apprendrez C# en deux jours.

Le framework correspond aux classes qu’offre Microsoft, on y trouve ce qu’il faut pour la gestion des dates, des tableaux, du XML… et de tout ce qu’il faut pour écrire une application. Chaque famille de projet .NET (Winform, Webform, Compact Framework) offre un ensemble de classe différentes mais une grande partie est commune aux trois familles.

Unification

Faire un seul code source ciblant win32 ou winCE cela on savait déjà faire en C++, mais ajouter une version Webform c’est déjà moins naturel, comment est-ce possible ?

ASP.NET, le moteur d’exécution des Webform offre une fonctionnalité vraiment intéressante qui est la séparation totale entre le code et la présentation. Vous avez par exemple un fichier index.aspx qui contient la présentation HTML et un fichier index.aspx.cs qui contient le code correspondant. Les objets du fichiers aspx sont exposés dans le fichier aspx.cs. Donc en mettant de coté le design de la page aspx, si les contrôles portent le même nom entre la version Winform et la version Webform nous devrions avoir un code presque identique.

Le projet anniversaire.net

Notre petite application proposera un service assez simple. Consulter les anniversaires qui arrivent d’ici n jours, modifier, supprimer et ajouter un profil. Pour stocker ces informations nous allons utiliser un fichier XML. Pourquoi ne pas utiliser ADO.NET ? Et bien tout simplement car ADO.NET sur PocketPC n’existe que dans la version SQL, ce qui oblige l’installation de SQLCE sur la machine, chose que je ne désire pas faire dans cette présentation.


Version PocketPC


Version win32


Version HTML

Qui peut le plus peut le moins

La bonne stratégie sur les développements multi-cibles comme nous allons faire est de mettre au point le premier programme sur la plate-forme qui supporte le moins de fonctionnalité. Ici c’est le Compact Framework qui nous offre le moins de classes, c’est par la version PocketPC que nous allons donc commencer.

Je crée tout de suite les trois projets, que je nome winform, compact et anniversaire. Les trois projets sont en C#.

L’application est composée de deux boites de dialogue, la première affiche les anniversaires à venir et propose d’ajouter, supprimer ou modifier des profils.

La seconde boite de dialogue permet la modification d’un profil.

Les projets compact et winform sont composés de trois fichiers, Form1.cs qui contient le code de la boite 1, Edit.cs le code de la boite 2 et Data.cs la classe de gestion des données au format XML. Je fais le design dans le projet compact, j’ajoute la gestion des événements. Téléchargez le projet pour regarder ce code de plus près.

Une fois le projet compact terminé je peux le convertir en version winform.
Pour cela rien de plus simple, je vais tout simplement copier les fichiers Form1.cs, Edit.cs et Data.cs du projet compact vers le projet winform. Je ne change aucune ligne de code et cela fonctionne du premier coup. Cette copie est obligatoire car Visual Studio.NET ne permet pas de partager un fichier entre deux projets, les fichiers doivent être présents dans le dossier du projet. Sur des projets plus gros il peut être intéressant de faire votre propre makefile (= directives de compilation) pour gérer des fichiers en communs.

Si vous observez le code source vous remarquerez que Form1.cs et Edit.cs ne contiennent aucun traitement, ils ne gèrent que l’aspect présentation. Ce découpage permet de faire la version ASP très rapidement car j’ai déjà toutes les méthodes de recherche, ajout, suppression…

Et bien attaquons le troisième projet, la version ASP.NET.

Pas de mystère, il faut refaire le design complet car nous avons un mode de fonctionnement bien différent. Il commence à apparaître sur le marché des produits qui font la conversion winform vers ASP.NET mais ce n’est que le début.

Les pages ASP.NET fonctionnent en mode « stateless » c’est à dire tous les objets sont recrées à chaque action utilisateur. Donc le mode de fonctionnement est un peu différent mais nous gardons exactement la même classe métier Data.cs. Dans le projet web je crée les nouveaux fichiers Form1.aspx et Edit.apsx et j’ajoute le fichier existant Data.cs.

Le code derrière les pages Form1 et Edit est relativement simple et encore une fois ne met en œuvre que l’aspect présentation. 

Conclusion

Voilà, nous venons de créer une application qui fonctionne sur 3 plates-formes différentes. Pour passer de la version PocketPC à la version Win32 c’est très rapide. La version ASP.NET est un peu plus longue à mettre en œuvre. Bien prévoir le projet et clairement découper présentation et code métier est essentiel. Sur de gros projets ce type de portage est moins évidant car ont désire souvent tirer parti du maximum des possibilités de chaque plate-forme, rendant le code de présentation moins universel.

Rémi THOMAS

 
       
   
 
   
Copyright 2001-2004 - Tous droits réservés
 
   

iPAQ est un produit de COMPAQ.
Visual Tools est un produit de Microsoft Corporation.
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.