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

SharePoint et l'appel des Web Service : pourquoi pas un peu de Generics/Serialization ?

L'origine de ce post est une remarque très pragmatique de ce cher Sebastien Warin. Travaillant à une des petites fonctionnalités de notre framework interne et du portail Wygwam, il trouvait le call des services SharePoint un peu spartiate.

N'est il pas ???

Du bon vieux flux XML par ci et par la, dans le pur style de SPS 2003

Mais au moins, XML reste la passerelle la plus ouverte non, pas forcement la plus pratique à manipuler.

Surtout en ces périodes PRO objets typés

>>> Ces 2 articles quoi que similaire (1 en VB, l'autre en C#) sont très intéressant. L'idée est de déclarer 3 classes de base qui vont nous permettre via les generics et la serialization de charger directement le flux de sortie du Web Service SharePoint dans de jolies collection de classes bien typées.

Soit :

  • ListItems qui gère les données du noeud de liste ainsi que la sérialisation final
  • Rowdata qui gère les données du noeud enfant
  • BaseListitem qui sert de classe de base à vos propres items

Une fois cette base de code compilé, il vous suffit simplement de faire une classe qui mappe les champs spécifiques de votre liste héritant de la BaseListItem et de la passer en paramètre à votre fonction de sérialisation smile_regular. Du genre (avec la classe MACLASSEListItems)

   spslab.Lists listSvc = new spslab.Lists();
   listSvc.Credentials = new System.Net.NetworkCredential("Administrator", "---------");

   ListItems<MACLASSEListItem> results = null;
   XmlNode resultItems = listSvc.GetListItems(listGuid, string.Empty, null, null, string.Empty, null);
   Console.WriteLine(resultItems.OuterXml);
     
   results = ListItems<MACLASSEListItem>.FromXml(resultItems.OuterXml);
   foreach MACLASSEListItem MAC in results.RowData.ListItems)
   {
            Console.WriteLine(string.Format("Student {0} received a score of {1:##}% on {2} for test '{3}'",
                 ListItems<MACLASSEListItem>.GetDescriptionFromLookupValue( MAC.Student ),
                 MAC.Score * 100, 
                 MAC.TestDate.ToShortDateString(),
                 MAC.Title));
    }

On est déja& un peu plus loin du bon vieux parsing XML non ? Bye bye attribut et xpath
>>>> J'étais sur que ca vous plairait bien !!!

A noter qu'il est toujours bon de se rappeler au souvenir de ce bon ami qu'est le XSD.EXE

Il peut vous faire gagner bien du temps sur la phase de mapping, vraiment.

Mais allons un poil plus loin

Enchaînons donc avec un peu de LINQ for XML

http://weblogs.asp.net/scottgu/archive/2007/08/07/using-linq-to-xml-and-how-to-build-a-custom-rss-feed-reader-with-it.aspx

Voir surtout avec les type anonymes ou vos propres types non ?

Genre

Je vous laisse creuser l'article de Mr Scott, il est parfait comme il est

Que de nouvelle possibilités ...

Que de bonheur en perspective smile_regular

Renaud Comte aka TheMit (J'aime bien les nouveautés des languages .Net)
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 25 mars 2008 15:07 par themit

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- SharePoint 2013: Préparation de la migration - Création des site Templates dans 2010 et 2013 par Blog Technique de Romelard Fabrice le 08-20-2014, 16:31

- [ #Yammer ] How to change interface language ? Comment changer la langue de l’interface ? par Le blog de Patrick [MVP SharePoint] le 08-20-2014, 14:21

- Onedrive Sync Engine Host : CPU à 100% par Le petit blog de Pierre / Pierre's little blog le 08-06-2014, 22:22

- SharePoint : Bug sur la gestion des permissions et la synchronisation Office par Blog Technique de Romelard Fabrice le 07-10-2014, 11:35

- SharePoint 2007 : La gestion des permissions pour les Workflows par Blog Technique de Romelard Fabrice le 07-08-2014, 11:27

- TypeMock: mock everything! par Fathi Bellahcene le 07-07-2014, 17:06

- Coding is like Read par Aurélien GALTIER le 07-01-2014, 15:30

- Mes vidéos autour des nouveautés VS 2013 par Fathi Bellahcene le 06-30-2014, 20:52

- Recherche un passionné .NET par Tkfé le 06-16-2014, 12:22

- [CodePlex] Projet KISS Workflow Foundation lancé par Blog de Jérémy Jeanson le 06-08-2014, 22:25