SharePoint - Modelo de Objeto Cliente
Neste capítulo, daremos uma olhada no Client Object Model ou CSOM. Esta foi uma das duas APIs, para construir aplicativos remotos que foram adicionados ao SharePoint 2010.
Um dos objetivos de design do Client Object Model era imitar o Server Object Model o máximo possível, para que houvesse uma curva de aprendizado mais curta para desenvolvedores já familiarizados com o desenvolvimento no lado do servidor.
O coração do Client Object Model é um serviço web chamado Client.svc, que reside no _vti_bindiretório virtual. Não devemos nos comunicar diretamente com Client.svc, mas recebemos três proxies ou pontos de entrada, que podemos usar. Eles são -
- Código gerenciado .NET.
- JavaScript.
- JavaScript.
O código se comunica com esses proxies e, em seguida, esses proxies eventualmente se comunicam com o serviço da web.
Como esta é uma API remota e a comunicação é feita com o SharePoint por meio de chamadas de serviço da web, o Client Object Model foi projetado para nos permitir agrupar comandos e solicitações de informações.
Código gerenciado .NET
Os dois conjuntos principais para a implementação .NET Manage são -
Microsoft.SharePoint.Client.dll e Microsoft.SharePoint.Client.Runtime.dll.
Código Silverlight
Os assemblies para a implementação do Silverlight vivem em TEMPLATE\LAYOUTS\ClientBin. Os nomes dos conjuntos também começam comMicrosoft.SharePoint.Client. Para todas as montagens, exceto uma, o nome da montagem termina em Silverlight.
Os dois conjuntos principais para a implementação do Silverlight são -
- Microsoft.SharePoint.Client.Silverlight.dll
- Microsoft.SharePoint.Client.Silverlight.Runtime.dll
JavaScript
A implementação de JavaScript no Client Object Model reside na pasta TEMPLATE \ LAYOUTS abaixo da raiz do sistema do SharePoint. Todos os nomes da biblioteca JavaScript começam com SP. As três bibliotecas principais sãoSP.js, Sp.Runtime.js, e SP.Core.js.
O Client Object Model foi expandido no SharePoint 2013.
Recuperar recursos com carga usando .NET
Vejamos um exemplo simples no qual usaremos a implementação gerenciada do Client Object Model usando o aplicativo Windows Forms. Portanto, primeiro precisamos criar um novo projeto.
Step 1 - Selecione Windows Forms Applicationno painel do meio e digite o nome no campo Nome. Clique OK.
Step 2- Uma vez que o projeto é criado, vamos adicionar uma caixa de listagem e um botão como mostrado abaixo. Para usar o Client Object Model, precisamos adicionar algumas referências de montagem. Clique com o botão direito do mouse em References e escolha Add Reference.
Step 3 - Selecione Extensions no painel esquerdo sob Assemblies.
Os dois conjuntos principais para a implementação gerenciada do Client Object Model são Microsoft.SharePoint.Client e Microsoft.SharePoint.Client.Runtime. Verifique essas duas opções e clique em OK.
Agora clique duas vezes no botão Carregar para adicionar o manipulador de eventos conforme mostrado abaixo.
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);
}
}
}
}
O ponto de entrada no Client Object Model é o contexto do cliente. É a versão remota do cliente doSPContextobjeto. Este é um tipo descartável, por isso é embalado em umusingdeclaração. Passamos a URL do site do SharePoint emClientContext.
Então, agora, temos nosso contexto. Precisamos de um objeto para representar o site atual para que sejavar web = context.web.
Note- Lembre-se de que este objeto é apenas um shell vazio, portanto, precisamos carregar os objetos da web usando context.load e passar o objeto da web. Isso indica que queremos que as propriedades dos objetos da web sejam preenchidas na próxima recuperação de lote.
Em seguida, precisamos ligar context.ExecuteQuerye isso realmente inicia a recuperação do lote. Recuperamos os valores das propriedades do servidor e os adicionamos à caixa de listagem.
Quando o código acima for compilado e executado, você verá a seguinte saída -
Clique no botão Carregar e você verá que obtemos ambos, o título e a contagem das listas.
Ele permite que a configuração do nosso projeto use o Client Object Model para verificar os recursos de carregamento usando o método de carregamento.