Partilhar via


Obter uma visão geral do modelo de objeto do SharePoint

Este é o quarto de uma série de artigos sobre noções básicas de desenvolvimento de Suplementos do SharePoint hospedados pelo provedor. Primeiro você deve se familiarizar com os Suplementos do SharePoint e os artigos anteriores desta série, que você pode encontrar em Introdução à criação de Suplementos do SharePoint hospedados pelo provedor.

Observação

Se você trabalhou com esta série sobre suplementos hospedados pelo provedor, você terá uma solução do Visual Studio que pode ser usada para continuar com este tópico. Você também pode baixar o repositório em SharePoint_Provider-hosted_Add-Ins_Tutorials e abrir o arquivo BeforeSharePointWriteOps.sln.

Neste artigo, você terá uma breve pausa na codificação para obter uma visão geral do CSOM (Modelo de Objeto do Lado do Cliente) do SharePoint. Esse modelo é grande e bem documentado no MSDN com tópicos de referência, "instruções" e exemplos de código. Neste artigo, só podemos dar uma pequena demonstração. Mas até mesmo uma pequena introdução fará com que grande parte do código que você vê nesta série seja menos estranho.

Hierarquia de conteúdo

A tabela a seguir mostra a hierarquia de conteúdo no SharePoint e as classes de CSOM que os representam. Cada uma dessas entidades tem filhos do tipo logo abaixo dela.

Entidade Classe Comentários
Farm local do SharePoint ou assinatura do SharePoint Online (também chamado de locatário) Há apenas acesso programático limitado a esse nível no CSOM. Não há nenhuma classe Farm ou Assinatura ou Locatário, por exemplo. (O modelo de objeto do lado do servidor do SharePoint, que não pode ser usado em suplementos, permite o acesso programático a essas entidades.)
conjunto de sites Site Uma coleção de sites que são agrupados por motivos principalmente administrativos e para abrigar componentes do SharePoint, como páginas mestras de marca ou grupos de segurança personalizados, que podem ser aplicados a todos os sites filho. Todos os sites pertencem a alguma coleção de sites.
site Web Um conjunto de páginas e componentes do SharePoint. Pode ter subwebsites.
lista List Bibliotecas de documentos e outros tipos de bibliotecas de arquivos também estão nesse nível. Uma biblioteca de documentos é um tipo especial de lista na qual cada linha inclui um documento anexado e as outras colunas são dados sobre o documento, como seu autor, quando foi editado pela última vez e quem o tem verificado.
item de lista ListItem Uma linha em uma lista, ou seja, um item de lista, com valores específicos nos campos da linha. Também tem um tipo. Confira a próxima linha.
item de lista Content Type O tipo de item de lista. Elas são representadas pela classe ContentType . Cada um é basicamente um conjunto de colunas e metadados. O mais simples é o tipo de conteúdo de item interno. Todos os outros tipos de conteúdo são derivados do Item. O SharePoint inclui muitos tipos de conteúdo internos, como Evento e Anúncio.
coluna Field Um objeto Field inclui não apenas informações sobre o tipo de dados subjacente, mas também informações sobre como os dados são formatados e renderizados em formulários, como os formulários para criar, exibir e editar itens de lista específicos.

Você pode criar listas, tipos de conteúdo, tipos de colunas e itens de lista personalizados por programação.

Além do conteúdo, o CSOM oferece acesso a usuários, grupos, funções, permissões, taxonomia, pesquisa e muito mais.

Tempo de execução do lado do cliente e envio em lote

O CSOM usa um sistema de envio em lote. Partes do código gerenciado são convertidas em XML e enviadas ao servidor em uma única solicitação HTTP. Para cada comando, é feita uma chamada de modelo de objeto de servidor correspondente e o servidor retorna uma resposta ao cliente no formato de JSON (JavaScript Object Notation).

O código do SharePoint em um cliente começa recuperando um objeto de contexto de cliente, que representa o contexto de solicitação atual, incluindo a identidade do site do SharePoint (e seu conjunto de sites pai) e, através deste contexto, você pode obter acesso a objetos CSOM. Veja a seguir a estrutura básica que você verá repetidamente.

  using (var clientContext = spContext.CreateUserClientContextForSPHost())
  {
      // CRUD operation or query code goes here.

      clientContext.ExecuteQuery();
  }

Observe o seguinte sobre este código:

  • O objeto spContext é do tipo SharePointContext e é definido no arquivo SharePointContext.cs (ou .vb) gerado pelo Office Developer Tools para Visual Studio. Esse arquivo pode ser modificado, mas geralmente não é necessário fazer isso. Para a maioria dos projetos de Suplemento do SharePoint, esse arquivo e o arquivo TokenHelper.cs (ou .vb), que também é gerado pelas ferramentas, funcionam efetivamente como extensões do próprio CSOM.

  • O objeto clientContext é do tipo CSOM ClientContext.

  • O método ExecuteQuery agrupa o código de operação CRUD em uma mensagem XML que ele envia para o servidor do SharePoint. Lá, ele é convertido em código equivalente de modelo de objeto do lado do servidor e executado.

Houve um exemplo desse padrão no artigo anterior desta série, no método GetLocalEmployeeName mostrado aqui.

private string GetLocalEmployeeName()
{
    ListItem localEmployee;

    using (var clientContext = spContext.CreateUserClientContextForSPHost())
    {
        List localEmployeesList = clientContext.Web.Lists.GetByTitle("Local Employees");
        localEmployee = localEmployeesList.GetItemById(listItemID);
        clientContext.Load(localEmployee);
        clientContext.ExecuteQuery();
    }
    return localEmployee["Title"].ToString();
}

Observe o seguinte sobre esse método:

  • As duas primeiras linhas no bloco de uso aparecem para obter referências à lista e ao objeto item de lista. Mas, na verdade, quando essas linhas são executadas no runtime do lado do cliente do SharePoint, elas são simplesmente convertidas em um formato XML. O método ExecuteQuery envia esse XML para o servidor.

  • O método Load adiciona algo extra à mensagem: ele informa ao servidor para enviar o objeto especificado ao cliente. O método ExecuteQuery recebe esse objeto (como JSON) e o usa para inicializar a variável localEmployee do lado do cliente. Em seguida, o código do lado do cliente faz referência ao objeto ListItem e a seus membros. Como você pode ver, a próxima linha faz referência ao valor do campo "Title" do item. Essa linha geraria uma exceção se o método Load não fosse chamado, pois, na verdade, o objeto não existe no lado do cliente até que seja carregado.

Próximas etapas

No próximo artigo, vamos voltar à codificação e aprender como: adicionar operações de gravação do SharePoint ao suplemento hospedado pelo provedor.