MSDN SharePoint : Mike Ammerlaan continue sa suite de Best Practices.
Si le premier article de Mike est devenue un incontournable des mes Favoris "How to begin well with SP", je crois bien que le second vas le rejoindre immédiatement.

Rappel pour ceux qui ont une mémoire courte :
>>> A lire et à relire de temps à autre
Si quand vous lisez ce sample de code pour WebPart, rien ne vous choque :
SPSite oSPSite = SPControl.GetContextSite(..);
///... additional processing ...
oSPSite.Dispose();
>>> Alors il est grand temps de le relire croyez moi car ceci est bien meilleur
SPSite oSPSite = SPControl.GetContextSite(..);
using(SPWeb oSPWeb = oSPsite.OpenWeb())
{
///... additional processing ...
}
Maintenant, il s'agit surtout d'une analyse encore plus critique du code d'un point de vue performance, cache et montée en charge
Voici l'index, il est trés clair non?
A noter les remarques suivantes :
- Libérer les objets SPWeb créés dynamiquement
public void GetNavigationInfo()
{
SPWeb oSPWeb = SPContext.Web;
foreach(SPWeb oSubWeb in oSPWeb.GetSubWebsForCurrentUser()))
{
// .. Add subweb information for navigation ..
oSubWeb.Dispose();
}
}
- Cache : attention à la synchronisation des threads
>>> préférez l'utilisation du lock et du Datatablepublic void CacheData()
{
DataTable oDataTable;
SPListItemCollection oListItems;
lock(this)
{
oDataTable = (DataTable)Cache["ListItemCacheName"];
if(oDataTable == null)
{
oListItems = DoQueryToReturnItems();
oDataTable = oListItems.GetDataTable();
Cache.Add("ListItemCacheName", oDataTable, ..);
}
}
}
- Les veilles astuces ne sont pas toutes à jeter !! : Tips and Tricks for Developing with Windows SharePoint Services
>>> Using the DataTable Object to Work with List Items in Memory
Bonne lecture à tous (si si j'insiste, lisez ces 2 articles !!!)
Renaud Comte aka TheMit (MikeAm for SPresident)
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 :