Monday, November 29, 2010

Come leggere da una lista Sharepoint 2010

Questo è il primo post di una serie dove capiremo come ottenere gli item dalle nostre liste Sharepoint 2010 e vedremo come migliorare il codice per ottenere risultati prestazionali soddisfacenti.

Storia – Sharepoint 2007

Innanzitutto bisogna scrivere due righe di storia.
Con Sharepoint 2007 se volevamo ottenere i dati fuori dal contensto stesso del prodotto le soluzioni architetturali erano queste:
sharepoint2010_com_primo_post_1

Web ui + Browser

la classica visualizzazione tramite Internet Explorer

Web Service + Custom App

Utilizzare i Web Services di Sharepoint purtroppo significa lavorare con xml sia nei risultati ottenuti sia nel passare i parametri (come qualsiasi altro Web Service!!!).
Ed è tanto lavoro e anche poco smart alle soglie del 2011

WCF Custom

Sviluppare servizi wcf è la cosa più furba da fare, ma costa. Tutto lo sviluppo è nelle nostre mani … enjoy Open-mouthed smile

Oggi – Sharepoint 2010


Con Sharepoint 2010 abbiamo un cambio architetturale:
sharepoint2010_com_primo_post_2
l’ultima colonna è quella di cui parleremo in questo e nei prossimi post.
Tramite alcune librerie:
Win32 (:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI)
• Microsoft.SharePoint.Client.dll (281 kb)
• Microsoft.SharePoint.Client.Runtime.dll (145 kb)
Javascript
• SP.js
• SP.Core.js
• SP. …
Silverlight (:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin)
• Microsoft.SharePoint.Client.Silverlight.dll (266 kb)
• Microsoft.SharePoint.Client.Silverlight.Runtime.dll (142 kb)

Possiamo sviluppare sia applicazioni Silverlight, Win32 e ASP.NET utilizzando metodi asincroni tutto in maniera trasparente.

Un primo esempio

Prima di lasciarvi vi scrivo un esempio di Console Application che ottiene tutti gli item presenti in una lista.
Per poter funzionare dovete creare un applicazione di tipo Console e dovete referenziare le dll:

Win32 (:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI)
• Microsoft.SharePoint.Client.dll (281 kb)
• Microsoft.SharePoint.Client.Runtime.dll (145 kb)

Nel mio caso la lista usata si chiama MyContactsList
   1:  string webUrl = "http://win-040f0ba75i9";
   2:   
   3:  using (ClientContext ctx = new ClientContext(webUrl))
   4:  {
   5:      List list = ctx.Web.Lists.GetByTitle("MyContactsList");
   6:   
   7:      ListItemCollection items = list.GetItems(CamlQuery.CreateAllItemsQuery());
   8:      ctx.Load(items);
   9:   
  10:      ctx.ExecuteQuery();
  11:   
  12:      foreach (var item in items)
  13:         Console.WriteLine(item["FullName"].ToString() + "\t\t" + item["Email"].ToString());
  14:  }
  15:   
  16:  Console.ReadLine();

Il codice è alquanto semplice:
  • Il ClientContext sarà il nostro mezzo per accedere agli elementi del webUrl specificato.
  • Trammite il metodo GetByTitle riusciamo ad ottenere i riferimenti alla nostra lista.
  • CamlQuery.CreateAllItemsQuery è un metodo statico utile nel caso in qui dobbiamo ottenere la lista di tutti gli item (nei prossimi post vedremo che non è sempre, anzi quasi mai, la scelta migliore).
  • Passiamo le nostre richieste al context tramite il metodo Load e facciamo eseguire la query tramite il metodo ExecuteQuery
A questo punto la nostra ListItemCollection sarà popolata.
enjoy

No comments:

Post a Comment