29 mars 2016

Article

Technologies de l'information

Les meilleures pratiques d'accès aux données avec le modèle objet SharePoint

Introduction au langage CAML (Collaborative Application Markup Language)

Le CAML est un langage XML utilisé dans SharePoint pour définir les champs et les affichages des sites et des listes. On peut aussi effectuer une requête en CAML pour accéder à du contenu SharePoint avec l’aide de l’objet SPQuery.

  CAML    Le CAML est sensible à la case

Objectif

Optimiser l’accès au contenu SharePoint afin d’améliorer les performances et de respecter les bonnes pratiques de développement.

L’objet SPQuery

  • Exécute des requêtes sur les données efficacement;
  • Utilise le langage CAML pour spécifier le SELECT, le WHERE, le ORDER BY et le GROUP BY de l'instruction SELECT SQL sous-jacente;
  • S'adresse à un objet SPList précis;
  • Est la bonne pratique à utiliser lorsqu’on effectue une requête sur une liste.

Utilisation de l’objet SPQuery

Les objets SPQuery peuvent causer des problèmes de performance quand ils retournent un grand nombre de résultats.

Les recommandations suivantes vous aideront à optimiser votre code de manière à limiter l’impact sur la performance quand vos requêtes retournent un trop grand nombre de résultats :

  • Ne pas utiliser un objet SPQuery illimité (unbounded);
  • L’utilisation d’un objet SPQuery sans spécifier une valeur à la propriété RowLimit ne fonctionnera pas de manière efficace et va échouer sur de grandes listes. Il est recommandé de spécifier un RowLimit entre 1 et 2000;
  • Utilisez des champs indexés.

Si vous effectuez une requête sur un champ non indexé, la requête sera bloquée chaque fois que celle-ci retourne plus d'éléments que le seuil de requête (dès qu’il y aura plus d’éléments dans la liste que dans le seuil de requête). Il est recommandé de spécifier un RowLimit à une valeur qui est plus petite que le seuil de requête.

Mauvaise pratique

L’utilisation d’une boucle ForEach afin de boucler dans tous les éléments de la liste pour trouver un élément.

Bonne pratique

L’utilisation d’une requête CAML avec l’objet SPQuery pour retourner uniquement un élément.

SPQuery-bonne-pratique

Historique

Le CAML existe depuis les premières versions de SharePoint et il continue d’être utilisé de nos jours.

Si vous effectuez une recherche sur le site OfficePnP (qui est une référence pour les bonnes pratiques de développement SharePoint), vous verrez que plusieurs des exemples contiennent encore des requêtes CAML autant dans du code C# (SSOM) que dans du JavaScript (JSOM) :

requetes-CAML-C-JS

LINQ

Certaines personnes seront tentées d’utiliser des requêtes LINQ plutôt que d’utiliser le CAML. Ceci permet entre autres de simplifier le code et d’ajouter l’IntelliSense. Cependant, les requêtes LINQ peuvent occasionner de sérieux problèmes de performance (jusqu’à 10 fois plus lentes avec LINQ que le CAML). Consultez ce lien pour plus d’information à ce sujet.

Outils

Le langage CAML n’est pas très intuitif, car il est dépourvu d’IntelliSense, mais sachez qu’il existe un outil pour tester et générer vos requêtes.

Pour conclure

Que vous utilisiez le modèle objet serveur (SSOM) ou un modèle de programmation client (CSOM/JSOM), le CAML est indispensable pour réaliser des requêtes performantes en plus de respecter les bonnes pratiques de développement.

Dans le cours Introduction au développement SharePoint (MS539) offert chez Technologia, vous pourrez voir plus en détail les meilleures pratiques d'accès aux données en plus de réaliser des exercices portant sur des situations réelles, vécues en entreprise.

Retrouvez-moi également en tant que conférencier lors de SharePoint Saturday le 2 avril 2016 au Collège de Maisonneuve de Montréal.

bouton-cours-introduction-developpement-SharePoint

Samuel Lévesque est conseiller SharePoint chez Victrix depuis 2014. Il développe avec la plateforme SharePoint depuis 2010 et avec Microsoft.Net depuis ses tout débuts en 2006.Que ce soit dans les secteurs privés, gouvernementaux, municipaux, bancaires ou du marketing Internet, il a participé à plusieurs grands projets SharePoint au Québec. Parmi ceux-ci, la refonte de l’intranet municipal de Ville de Québec, projet dont il était le développeur principal, a reçu le prix de meilleure solution en 2012, lors du Gala d’excellence SharePoint.