SharePoint: modello a oggetti client
In questo capitolo daremo uno sguardo al Client Object Model o CSOM. Questa era una delle due API per la creazione di applicazioni remote aggiunte a SharePoint 2010.
Uno degli obiettivi di progettazione del Client Object Model era quello di imitare il più possibile il Server Object Model, quindi ci sarebbe stata una curva di apprendimento più breve per gli sviluppatori che avevano già familiarità con lo sviluppo sul lato Server.
Il cuore del Client Object Model è un servizio web chiamato Client.svc, che risiede in _vti_bindirectory virtuale. Non dovremmo comunicare direttamente con Client.svc, ma ci vengono forniti tre proxy o punti di ingresso, che possiamo utilizzare. Sono -
- Codice gestito .NET.
- JavaScript.
- JavaScript.
Il codice comunica con questi proxy e quindi questi proxy comunicano eventualmente con il servizio web.
Poiché si tratta di un'API remota e la comunicazione viene eseguita con SharePoint tramite chiamate al servizio Web, il modello a oggetti client è progettato per consentirci di raggruppare comandi e richieste di informazioni.
Codice gestito .NET
I due assembly principali per l'implementazione di .NET Manage sono:
Microsoft.SharePoint.Client.dll e Microsoft.SharePoint.Client.Runtime.dll.
Codice Silverlight
Gli assembly per l'implementazione di Silverlight risiedono in TEMPLATE\LAYOUTS\ClientBin. Anche i nomi degli assembly iniziano conMicrosoft.SharePoint.Client. Per tutti gli assembly tranne uno, il nome dell'assembly termina con Silverlight.
I due assembly principali per l'implementazione di Silverlight sono:
- Microsoft.SharePoint.Client.Silverlight.dll
- Microsoft.SharePoint.Client.Silverlight.Runtime.dll
JavaScript
L'implementazione JavaScript sul modello a oggetti client risiede nella cartella TEMPLATE \ LAYOUTS sotto la radice del sistema SharePoint. I nomi della libreria JavaScript iniziano tutti con SP. Le tre librerie principali sonoSP.js, Sp.Runtime.js, e SP.Core.js.
Il modello a oggetti client viene espanso in SharePoint 2013.
Recupera risorse con carico utilizzando .NET
Vediamo un semplice esempio in cui useremo l'implementazione gestita del Client Object Model utilizzando l'applicazione Windows Form. Pertanto, prima dobbiamo creare un nuovo progetto.
Step 1 - Seleziona Windows Forms Applicationnel riquadro centrale e inserisci il nome nel campo Nome. Fare clic su OK.
Step 2- Una volta creato il progetto, aggiungiamo una casella di riepilogo e un pulsante come mostrato di seguito. Per utilizzare il modello a oggetti client, è necessario aggiungere un paio di riferimenti all'assembly. Fare clic con il tasto destro sui riferimenti e scegliere Aggiungi riferimento.
Step 3 - Seleziona Extensions nel riquadro di sinistra sotto Assemblies.
I due assembly principali per l'implementazione gestita del modello a oggetti client sono Microsoft.SharePoint.Client e Microsoft.SharePoint.Client.Runtime. Controlla queste due opzioni e fai clic su OK.
Ora fai doppio clic sul pulsante Carica per aggiungere il gestore eventi come indicato di seguito.
using Microsoft.SharePoint.Client;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ClientObjectModel {
public partial class Form1 : Microsoft.SharePoint.Client.Form {
public Form1() {
InitializeComponent();
}
private void loadBtn_Click(object sender, EventArgs e) {
using (var context = new ClientContext("http://waqasserver/sites/demo")) {
var web = context.Web;
context.Load(web);
context.Load(web.Lists);
context.ExecuteQuery();
ResultListBox.Items.Add(web.Title);
ResultListBox.Items.Add(web.Lists.Count);
}
}
}
}
Il punto di ingresso nel Client Object Model è il contesto client. È la versione remota del client diSPContextoggetto. Questo è un tipo usa e getta, quindi è avvolto in un fileusingdichiarazione. Passiamo l'URL del sito di SharePoint inClientContext.
Quindi ora abbiamo il nostro contesto. Abbiamo bisogno di un oggetto per rappresentare il sito corrente in modo che siavar web = context.web.
Note- Ricorda, questo oggetto è solo una shell vuota, quindi dobbiamo caricare gli oggetti web usando context.load e passare l'oggetto web. Ciò indica che vogliamo che le proprietà degli oggetti Web vengano popolate nel successivo recupero batch.
Successivamente, dobbiamo chiamare context.ExecuteQuerye questo in realtà dà il via al recupero batch. Recuperiamo i valori delle proprietà dal server e li aggiungiamo alla casella di riepilogo.
Quando il codice precedente viene compilato ed eseguito, vedrai il seguente output:
Fai clic sul pulsante Carica e vedrai che otteniamo entrambi, il titolo e il conteggio degli elenchi.
Consente alla configurazione del nostro progetto di utilizzare il modello a oggetti client per controllare le risorse di caricamento utilizzando il metodo di caricamento.