Passons au code !
Tout ce dont vous avez besoin se situe dans ces namespaces Microsoft.SharePoint.DistributedCaching (https://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.distributedcaching.aspx ), Microsoft.SharePoint.DistributedCaching.Utilities, Microsoft.ApplicationServer.Caching (https://msdn.microsoft.com/en-us/library/microsoft.applicationserver.caching(v=azure.10).aspx ), interdit de référencer quoi que ce soit d’autre venant d’appfabric.
Autre information, il est possible que selon la version de visual studio installée et celle de sharepoint vous n’ayez pas les dll dans l’ISAPI de SharePoint (les dossiers que va regarder Visual Studio pour savoir quels sont les assemblies à disposition). Dans ce cas il faudra aller référencer les dlls directement depuis l’emplacement dans le GAC. Vous pouvez utiliser ILSPY ou équivalent pour connaitre l’emplacement exact. (ou bien demandez moi dans les commentaires si vous en avez besoin).
Comme je suis gentil, vous trouverez en pièce jointe de cet article un fichier cs qui vous aidera à manipuler le cache. Ce n’est pas très compliqué, le modèle de connexion au cluster de cache repose sur un pattern factory. D’ailleurs à ce propos, pour faire proprement les choses, il faudra à la fin de la requête (via le global.asax par exemple) et/ou à la fin des traitements (cas d’un timerjob par exemple) s’assurer que les factories sont bien disposées proprement.
Une fois la factory instanciée, on obtient le cache qui correspond à la partition ciblée (même chose, DataCache n’est pas disposable, mais si vous disposez les factories, pensez à déréférencer ces objets aussi). Dès lors il n’y a plus qu’à utiliser le cache via les méthodes fournies par Microsoft.
A noter que je me suis fait une petite méthode PutAndCheckRegion. En effet, les régions disparaissent quand elles ne contiennent plus d’éléments, il faut donc s’assurer de leur présence à chaque fois qu’on veut y stocker quelque chose.
Conclusion
J’espère que vous avez appris plein de choses sur cette solution de mise en cache offerte par SharePoint. Encore une fois c’est une solution parmi d’autres, elle peut s’avérer utile ou inutile en fonction de vos besoins. Je me suis efforcé de vous donner un maximum d’informations afin que vous soyez en capacité de comprendre les implications de son utilisation.
Plus d’excuses pour avoir une solution qui est lente maintenant ! Si vous avez des questions/remarques/plaintes, n’hésitez pas à commenter.