Blog du Pôle .NET

Partager pour mieux développer...

Comment « BenchMarker » une application développée avec le .NET Compact Framework ?

clock novembre 11, 2008 00:01 by author lnyffels

Lors d’une mission récente, j’ai été amené à tester les performances d’une application sur Pocket PC développée en C# avec le .NET Compact Framework 2.0.

L’objectif était de mesurer des temps de réponses et de tester la consommation mémoire de l’application.

1-      Mesure de la consommation et visualisation des objets .NET aloués  

Afin de détecter d’éventuels problèmes de fuite mémoire et d’obtenir des données sur la taille des objets alloués pour l’application, j’ai utilisé l’outil .NET CF Remote Performance Monitor, livré avec le package .NET Compact Framework Power Toys 3.5 de Microsoft.Ces outils gratuits sont disponibles en téléchargement à l’adresse suivante :

   http://www.microsoft.com/downloads/details.aspx?familyid=C8174C14-A27D-4148-BF01-86C2E0953EAB&displaylang=en.

L’outil permet de démarrer l’application sur le Pocket PC depuis votre PC sous Windows et de remonter en temps réel les informations suivantes :

ü   La taille de la mémoire allouée pour l’application par la machine virtuelle

ü   Les objets désalloués par le Garbage Collector

ü   Le nombre d’appels natifs « interop » effectués

ü   Les collections génériques allouées

ü   Le nombre de classes chargées à un instant t

ü   Le nombre de méthodes appelées

ü   Le nombre d’exceptions managées relevées.

ü    

L’option GC Heap Viewer permet également d’obtenir une « photo » à un instant donné des objets .NET alloués par l’application, ainsi que leurs consommations en mémoire (estimés en bytes). Vous pouvez également sauvegarder vos relevés et l’outil permet de faire des comparaisons de nombre d’instances entre deux relevés.

L’outil est simple à prendre en main et peut rendre de très bons services...

2 – Tester les performances d’une méthode ou d’une portion de code

Il peut être nécessaire de marquer une ou plusieurs méthodes dans votre code afin de relever des temps en runtime. Ces temps peuvent être stockés dans un fichier sur le Pocket PC afin d’être exploiter ultérieurement.

Je joins à ce post une classe technique que j’ai utilisée à plusieurs reprises qui stocke des temps marqués dans un fichier xml par section.

public void EcritureFichier() {            BenchMark oBench = new BenchMark("Ecriture_Flash", "FCT_EcritureFichier");            oBench.Begin();            //ON MEMORISE LES INFORMATIONS FLASHE             StringBuilder MyStringBuilder = new StringBuilder();            MyStringBuilder.Append(tabReleve[compteurReleve - 1].CodeIlot.ToString());            MyStringBuilder.Append(";");            MyStringBuilder.Append(tabReleve[compteurReleve - 1].CodeArticle.ToString());                                        oBench.End(); } 

  

L’écriture des temps se fait en mémoire et la sauvegarde physique sur fichier est réalisée via la méthode : BenchMark.SaveBenchDocument(). (Cf. Fichier joint)

Laurent Nyffels 

BenchMark.cs (4,16 kb)

Soyez le premier à noter ce billet

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


MSDN Technet Tour 2008

clock septembre 2, 2008 19:27 by author aequoy

Juste un petit billet pour vous signaler que le Technet Tour 2008 passera sur Lille les 13 et 14 octobre 2008.

Inscrivez vous en cliquant sur l'image

Inscrivez vous.

Alexandre Equoy

Actuellement noté 5.0 par 1 personne(s)

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Des classes utiles pour vos développements avec .NET Compact Framework

clock juin 29, 2008 23:22 by author lnyffels

Il n’est pas rare lorsque l’on développe une application sur Pocket PC ou Smartphone avec le .NET Compact Framework d’avoir besoin de faire appel à l’API de Windows CE  pour réaliser certaines tâches. En effet, certaines méthodes ne sont pas encapsulées au sein du Compact Framework  :

-          Connecter le modem GPRS du mobile pour initier une communication

-          Modifier l’horloge interne du PDA pour la synchroniser avec celle du serveur

-          Récupérer l’identifiant unique du PDA (le Device ID)

-          Indiquer l’état de la batterie et la mémoire restante (Présent dans le NET CF 3.5)  

-          Lancer, supprimer ou lister des processus (Présent dans le NET CF 3.5)

Je joins à ce post un ensemble de classes utilitaires que j’ai eu l’occasion d’utiliser au cours de développements sur des plateformes Windows CE et qui je l’espère vous serons utiles.

Laurent Nyffels

ClassesUtiles.zip (6,45 kb)

Actuellement noté 5.0 par 1 personne(s)

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Créer une classe AppSettings sur le .NET CF 3.5 avec Linq to XML

clock juin 26, 2008 17:11 by author lnyffels

Il y a quelques années j’ai écrit un article sur « codeppc », un site dédié au développement sur plate-forme WinCE. A l’époque, je déplorai l’absence de l’assembly System.Configuration et du fichier de configuration App.config sur le .NET Compact Framework 1.0.

Force est de constater que 6 ans après sa sortie, le Compact Framework 3.5 n’apporte toujours pas cette fonctionnalité pourtant bien pratique qui consiste à pouvoir externaliser des variables dans un fichier XML et de pouvoir les récupérer simplement dans une application sur Pocket PC ou smartphone simplement via une classe technique .NET. Heureusement, il en fournit bien d’autres…

Le Compact Framework de l’époque offrait toutefois la possibilité de manipuler une source XML à travers l’assembly System.Xml et nous pouvions assez facilement recréer une classe technique pour manipuler un fichier de type App.Config   (cf. http://www.codeppc.com/articles/sde2/sde2.htm ).

Aujourd’hui, le .NET CF 3.5 permet d’utiliser la technologie  Linq to Object et Linq to XML pour construire, lire et modifier une source XML.

Je me suis donc amusé avec les classes XDocument et XElement de Linq to Xml pour simuler le comportement  de la classe ConfigurationSettings du framework .NET et de la propriété AppSettings.   

Pour se faire, je propose d’externaliser cette classe dans une assembly ConfigurationManager.dll en créant un projet SmartDevice de type Class Library dans Visual Studio 2008.

Créons au sein de cette classe une propriété statique permettant de récupérer le chemin de l’app.config déployer sur le PPC.

 

 

Remarquer l’utilisation de la « réflexion » pour récupérer le répertoire de l’assembly en cours d’éxécution. Bon OK, la lignede code est un peu longue… mais bon, elle est fun, non ? Nous allons ensuite créer une méthode statique AppSettings permettant de récupérer la valeur de l’attribut value de l’élément <add> en passant le nom de la clé (attribut key) en paramètre  de la méthode 

<?xml version="1.0" encoding="utf-8" ?><configuration>  <appSettings>    <add key="dossier_exercices" value="C:\exo\questions"/>    <add key="dossier_corrections" value="C:\exo\corrections"/>  </appSettings></configuration>

La première étape consiste à charger le fichier App.Config avec la classe XDocument. Ensuite, on applique une simple requête Linq pour récupérer l’ensemble des éléments <add> comportant la clé choisie. Il suffit ensuite de récupérer l’attribut value qui est le dernier de l’élement add à travers un foreach.

 

Ajouter à cela quelques vérifications d’usages des valeurs passées en paramètre et un try – catch pour générer les éventuelles erreurs et le tour est joué ! Exemple de l’appel à la méthode au sein de l’application est le suivant :

String valeur = ConfigurationSettings.AppSettings("dossier_exercices")

Pour obtenir plus d’informations sur Linq je vous engage à parcourir le site msdn sur le sujet et à suivre le maître inconstesté : Anders Hejlsberg.

http://msdn.microsoft.com/en-us/netframework/aa904594.aspx

Laurent Nyffels

SmartTestLinqXML.zip (49,81 kb)

Soyez le premier à noter ce billet

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Security Configuration Manager Powertoy for Windows Mobile

clock mai 20, 2008 16:15 by author friccelli

Lors de la tentative de connexion ou de déploiement de notre application, il arrive d'avoir ce message :

 

Comment génére-t-on ce certificat dont il a besoin?

Aprés moults recherches dans le msdn,j'ai bien essayé de modifier la base de registre de mon smartphone ...sans succés , sécurité quand tu nous tiens...!!

Et puis en persévérant , voici la solution :

 

Cet outil est fourni avec le  Windows Mobile  SDK, il se présente sous la forme d'un .msi qu'il suffit d'installer sur son poste.

Ensuite, il suffit de modifier la configuration de sécurité,de cliquer sur  et nous permet de pouvoir afin tester notre application sur un vrai smartphone (C'est quand même mieux que l'émulateur non ?).

Pour plus d'info : http://msdn.microsoft.com/en-us/library/bb158490.aspx

François RICCELLI

Soyez le premier à noter ce billet

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5