1

ASP.NET – Glimpse le débogueur de vos applications ASP.NET

J’ai récemment découvert Glimpse (http://getglimpse.com/), et je regretterai presque de ne pas l’avoir connu plus tôt. Bref, pour ceux qui ne connaissent pas encore Glimpse, il s’agit d’un debugger très pratique et complet pour vos applications ASP.NET (WebForms ou MVC).

Glimpse se présente sous la forme d’un package NuGet : http://www.nuget.org/packages/Glimpse/, et de sous packages selon l’utilisation souhaitée. Pour l’installer sur vos projets rien de plus simple donc, il suffit de faire un clic droit sur votre projet ASP.NET et de sélectionner Manage NuGet Packages… Sélectionnez l’option Online dans le menu de gauche, puis dans la zone de recherche tapez Glimpse.

clip_image001

Comme vous pouvez le voir, il existe plusieurs packages selon le type de votre projet ASP.NET. Sélectionnez celui correspondant à votre type de projet et cliquez sur Install, les dépendances seront automatiquement ajoutées.

clip_image002

L’installation du package Glimpse configure automatiquement votre fichier de configuration Web.config en ajoutant notamment une nouvelle serction Glimpse.

<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd" />

Par défaut Glimpse est activé côté serveur grâce à l’attribut defaultRuntimePolicy. Attention, ici Glimpse n’est activé côté serveur uniquement pour fonctionner en local. Pour activer Glimpse sur un serveur distant, vous devrez ignorer les LocalPolicy en modifiant la configuration comme ceci :

<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd" >
  <runtimePolicies>
    <ignoredTypes>
       <add type="Glimpse.AspNet.Policy.LocalPolicy, Glimpse.AspNet"/>
    </ignoredTypes>
  </runtimePolicies>
</glimpse>

En parcourant le fichier de configuration et les modifications apportées par Glimpse, vous constaterez que celui-ci fonctionnent grâce à des modules et handlers. Voici un exemple complet de configuration Glimpse (tous les autres éléments ont été retirés pour faciliter la lecture) :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
        <section name="glimpse" type="Glimpse.Core.Configuration.Section, Glimpse.Core" />
    </configSections>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <!-- Glimpse: This can be commented in to add additional data to the Trace tab when using WebForms
        <trace writeToDiagnosticsTrace="true" enabled="true" pageOutput="false"/> -->
    <httpModules>
        <add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" />
    </httpModules>
    <httpHandlers>
        <add path="glimpse.axd" verb="GET" type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet" />
    </httpHandlers>
  </system.web>
  <glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
      <!-- If you are having issues with Glimpse, please include this. It will help us figure out whats going on. 
      <logging level="Trace" />-->
      
      <!-- Want to use Glimpse on a remote server? Ignore the LocalPolicy by removing this comment.
      <runtimePolicies>
        <ignoredTypes>
          <add type="Glimpse.AspNet.Policy.LocalPolicy, Glimpse.AspNet"/>
        </ignoredTypes>
      </runtimePolicies>-->
  </glimpse>
  <system.webServer>
      <modules>
          <add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" preCondition="integratedMode" />
      </modules>
      <handlers>
          <add name="Glimpse" path="glimpse.axd" verb="GET" type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet" preCondition="integratedMode" />
      </handlers>
  </system.webServer>
</configuration>

Il ne reste plus qu’à tester. Par défaut, si vous exécutez votre application, vous ne verrez rien de différent. En effet, en installant Glimpse, celui-ci est automatiquement activé côté serveur, mais il reste cependant à l’activer côté client. Pour cela, il faut se rendre sur la page correspondant au handler, c’est-à-dire Glimpse.axd. Par exemple : http://localhost:54589/Glimpse.axd.

clip_image003

Cette page permet de configurer Glimpse et notamment de l’activer via le bouton Turn Glimpse On. Il ne reste plus qu’à retourner ensuite sur votre application et vous verrez apparaître en bas à droite une barre dédié à Glimpse :

clip_image004

Cette barre affiche les informations relatives à la page affichée comme le temps de réponse, les informations sur le serveur, le nombre de requêtes AJAX… Au survol d’une zone, celle-ci s’agrandit pour vous donner plus de détails :

clip_image005

Avec Glimpse vous disposez aussi d’une vue avancée, similaire à ce qu’on retrouve avec Firebug par exemple. Pour l’afficher, il suffit de cliquer sur le logo G en bas à droite sur la barre Glimpse :

clip_image006

Vous disposez alors d’une vue avec plusieurs onglets vous permettant d’analyser très efficacement le comportement de votre application : Timeline, Request, Route, Trace

A noter également, vous l’avez peut-être remarqué dans les captures précédentes, Glimpse supporte des extensions, via également des packages NuGet comme par exemple pour Entity Framework, Log4Net, Nhibernate

Bref si vous ne connaissez pas encore Glimpse, je vous encourage vivement de l’essayer.

Rock’n’Roll.

EDIT : Scott Hanselman avait également publié un post sur ce sujet en juillet dernier. Cf. If you’re not using Glimpse with ASP.NET for debugging and profiling, you’re missing out

gbrout

Architecte, formateur MCT et expert sur la gamme Visual Studio ALM qu'il met en œuvre sur l'ensemble des projets. Il travaille pour la société Itelios, spécialisée dans les technologies Microsoft et le commerce connecté. Il accompagne quotidiennement de nombreuses équipes et projets dans différents domaines et technologies : Windows 8, Windows Phone, ASP.NET MVC, Dynamics CRM... Passionné par le développement, ses domaines de prédilections sont avant tout l'expertise technique, l'industrialisation des développements avec la gamme Visual Studio ALM, l'analyse des performances, les tests et tout ce qui a trait à la qualité. Son expertise sur les  technologies Microsoft sa passion pour les nouvelles technologies et les développements novateurs l'a conduit à l'écriture d'un livre accessible et opérationnel sur le développement pour Windows 8 à l'aide d'HTML5 et JavaScript. Il anime également des conférences et sessions techniques telles que des live meeting en ligne ou lors d’événements comme les Techdays.

Un Commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *