samedi 7 décembre 2013

Mesurer les performances de vos pages Web ASP NET MVC 4 avec Glimpse

Un collègue m'a fait découvrir un outil (open source) assez sympa qui permet de mesurer les perfs de votre application web .NET : il s'agit de GLIMPSE.



Pour ma part je l'ai testé sur un projet Asp net mvc4; il fonctionne également pour d'autres types de projet tels que ASP.NET, etc

Pour les codeurs VISUAL STUDIO, Il suffit de télécharger la package Nuget correspondant dans votre Visual Studio:



Un fois le package installé, il suffit de lancer votre site, d'ouvrir un autre onglet dans votre navigateur ou vous copierez l'url de votre adresse suivi de /glimpse.axd (par exemple http://localhost:62s23/glimpse.axd), et vous pourrez ainsi activez la console d'analyse Glimpse comme l'indique l'image ci-dessous :


Vous devriez arrêter l'analyse via cette même page en cliquant sur "turn Glimps Off". Une fois Glimpse activé sur cette page, il suffit de rafraîchir votre page, et vous verrez apparaître la console d'analyse Glimpse au niveau de votre debugger du navigateur (en bas de navigateur).


Sur l'onglet ci-dessus, vous avez par exemple le temps d'exécution de chaque méthode appelé lors du chargement de votre page. Un certain nombre d'informations supplémentaires peuvent être consultées sur les autres onglets, notamment le temps d'exécution des requêtes LINK que j'ai trouvé super sympa.

Je découvre l'outil pour l'instant mais je le trouve assez sympa, simple d'utilisation et il semble regorger de pleins de fonctionnalités utiles que je ne manquerez pas de partager.

vendredi 6 décembre 2013

Error javascript Uncaught TypeError: Cannot use 'in' operator to search for...

J'ai récemment rencontré cette erreur javascript lors d'appels AJAX avec Jquery sur une application ASP.NET MVC 4. Je me rendu compte que la plupart du temps, cette erreur était dû au fomat du "data" retournée par le serveur, notamment la confusion entre le type "string" et "json".

Ci-dessous le code serveur qui me retourne la liste d'éléments :
public JsonResult ListItems()
{
      var response = itemService.ListItems(new ItemRequest());
      return Json(response.Items, JsonRequestBehavior.AllowGet);
}

voici mon code javascript qui plantait au départ :
var maList = new Array();
  $.ajax({
            url: '/Home/ListItems',
            type: 'GET',
            cache: false,
            success: function (data) {
              AlarmsList = data;
              ...

En changeant l'affectation directe de ma liste json en retour, puis en précisant le type de retour en plus, le problème a été résolu.

var AlarmsList = new Array();
  $.ajax({
            url: '/Home/ListItems',
            type: 'GET',
            cache: false,
            dataType: 'json',
            success: function (data) {
              $.each(data, function(i, alarm){
                AlarmsList.push(alarm);
              ...
 });

Ce ticket jquery suivant mentionne cette erreur 'type'; Mais ce message d'erreur Javascipt est assez générique et peut apparaître dans d'autres contextes que celui de mon exemple d'appel ajax. Cependant, Il fera très souvent référence à un problème de manipulation/parcours d'éléments dans un tableau Javascript.