Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

The Mit's Blog

En plus d'intégrer et skier, il sait même écrire !
(Blog de Renaud Comte)

Actualités

Gestion du Dispose : Best Practices sous SharePoint, la suite

En parcourant un peu mes archives de favoris je suis retombé sur un vieux post qui reste toujours d'actualité.

Il y a quelque temps, j'avais posté sur le problème de "Memory Pressuse" :

Gestion du Dispose : Attention au Memory Pressure sous SharePoint (et donc comment faire mieux)

Bien sur, ce post et ses annexes mettaient en valeurs les Best Practices décrites ici :

Best Practices: Using Disposable Windows SharePoint Services Objects

Cependant, si il est important de bien gérer sa mémoire, il est tout autant de bien utiliser son code objet comme le rappel cet article

 

Best Practices: Common Coding Issues When Using the SharePoint Object Model

 

Voici quelques exemples que je trouve important

Genre :

  • La libération des sous objets SPWeb
public void GetNavigationInfo()
{
   SPWeb oSPWeb = SPContext.Web;

   foreach(SPWeb oSubWeb in oSPWeb.GetSubWebsForCurrentUser()))
   {
      // .. Add subweb information for navigation ..
      oSubWeb.Dispose();
   }
}

>>> Sans le Dispose, bien les conséquences en mémoires sont réelles :

Users Best Case Worst Case
10 100 MB 200 MB
50 500 MB 1000 MB
100 1000 MB 2000 MB
250 2500 MB 5000 MB

Convaincu ?
>>> se repère des que :

  1. l'application pool recycle fréquemment !!!
  2. des performances pauvres sous forte charge
  3. des Time Outs
  4. de nouvelles WP non certifiés arrivent sur votre portail

 

  • Gestion du cache dans une WebPart

>>> Attention au principe de lock avant consultation du cache et ou les objets threads safe (merci le Datatable)

public void CacheData()
{
   DataTable oDataTable;
   SPListItemCollection oListItems;

   lock(this)
   {
      oDataTable = (DataTable)Cache["ListItemCacheName"];
      if(oDataTable == null)
      {
         oListItems = DoQueryToReturnItems();
         oDataTable = oListItems.GetDataTable();
         Cache.Add("ListItemCacheName", oDataTable, ..);
      }
   }
}

>>> n'oubliez pas non plus notre ami l'ObjectDatasource

...

...

...

Bref, bonne lecture à tous ! (une de plus, je sais mais je suis pour favoriser la lecture chez les développeurs donc ... )

 

Renaud Comte aka TheMit (SPJetLaggeur)
Member of WygTeam
http://www.wygwam.com

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mardi 11 mars 2008 11:34 par themit

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [SharePoint] Les sessions TechDays 2012… par Le blog de Patrick [MVP SharePoint] le il y a 6 heures et 29 minutes

- TechDays Paris 2012 : Session pleinière jour 3 par Blog Technique de Romelard Fabrice le 02-09-2012, 11:01

- Mishra Reader : un lecteur RSS très Zune Style en Open Source ! par Cyril Sansus le 02-09-2012, 08:28

- [framework 4] Les Tasks et le Thread UI par Fathi Bellahcene le 02-09-2012, 00:33

- Workflow Foundation 3 a un pied dans la tombe par Blog de Jérémy Jeanson le 02-08-2012, 22:15

- TechDays Paris 2012 : Nouvelles tendances du poste de travail - Bring Your own PC par Blog Technique de Romelard Fabrice le 02-08-2012, 19:42

- TechDays Paris 2012 : System Center Service Manager 2012 Vue d’ensemble par Blog Technique de Romelard Fabrice le 02-08-2012, 17:32

- TechDays Paris 2012 : Pleinière second jour par Blog Technique de Romelard Fabrice le 02-08-2012, 16:23

- TechDays Paris 2012 : Retour d'expérience sur la mise en place d'un Cloud Privé par Blog Technique de Romelard Fabrice le 02-08-2012, 16:04

- TechDays Paris 2012 : Comment SharePoint a sauvé mes TechDays par Blog Technique de Romelard Fabrice le 02-07-2012, 23:59