Escolher o conjunto de APIs certo no SharePoint

Saiba mais sobre os vários conjuntos de APIs que são fornecidos no SharePoint, incluindo o modelo de objeto de servidor e os diversos modelos de objeto do cliente e o serviço Web REST/OData.

Fatores que determinam qual conjunto de APIs deve ser usado

Você pode escolher dentre vários conjuntos de APIs para acessar a plataforma SharePoint. A opção a ser usada depende dos seguintes fatores:

  • O tipo de aplicativo. As possibilidades incluem, mas não se limitam a, a seguir, que não são categorias mutuamente exclusivas: um Suplemento do SharePoint, uma Web Part em uma página do SharePoint, um aplicativo Silverlight em execução em um computador cliente ou um dispositivo móvel cliente, um aplicativo ASP.NET exposto no SharePoint por um IFrame, JavaScript em execução em uma página do site do SharePoint, uma página de aplicativo do SharePoint, um aplicativo do Microsoft .NET Framework em execução em um computador cliente, um script Windows PowerShell e um trabalho de temporizador em execução em um servidor do SharePoint.
  • Suas habilidades existentes. De forma surpreendente, você pode criar aplicativos no SharePoint sem precisar aprender muito sobre a programação no SharePoint. Você pode iniciar diretamente o desenvolvimento no SharePoint se já tiver experiência com qualquer um dos seguintes modelos de programação:
    • JavaScript
    • ASP.NET
    • REST/OData
    • .NET Framework
    • Windows Phone
    • Silverlight
    • Windows PowerShell
  • O dispositivo em que o código é executado. As possibilidades incluem um servidor no farm do SharePoint, um servidor externo, como um servidor na nuvem, um computador cliente e um dispositivo móvel. Este tópico fornece uma visão geral dos vários conjuntos de API que são fornecidos pelo SharePoint. A Figura 1 mostra quais conjuntos de APIs podem ser usados para desenvolver cada um dos 13 aplicativos comuns relacionados ao SharePoint. Para muitos aplicativos, há mais de uma opção de API.

Figura 1. Tipos de extensão do SharePoint selecionados e conjuntos de APIs do SharePoint

Venn diagram of API sets and SharePoint app types

A tabela a seguir fornece orientação sobre o conjunto de APIs a ser usado para uma lista selecionada de projetos de extensibilidade comuns do SharePoint. As demais seções deste tópico descrevem os diversos conjuntos de APIs.

Se você quiser fazer isto... ... use estas APIs
Criar um aplicativo Web ASP.NET que executa operações CRUD (criação/leitura/atualização/exclusão) em um firewall no SharePoint ou dados externos apresentados no SharePoint por um tipo de conteúdo externo do Microsoft Business Connectivity Services (BCS) Modelo de objeto do cliente JavaScript
Criar um aplicativo Web ASP.NET que execute operações CRUD em dados do SharePoint ou em dados externos apresentados no SharePoint por um tipo de conteúdo externo do BCS, mas que não precise chamar o SharePoint através de um firewall Modelo de objeto cliente .NET Framework, modelo de objeto do cliente Silverlight ou pontos de extremidade REST/OData
Criar um aplicativo Web LAMP que execute operações CRUD em dados do SharePoint ou em dados externos apresentados no SharePoint por um tipo de conteúdo externo do BCS Pontos de extremidade REST/OData
Criar um aplicativo Windows Phone que execute operações CRUD em dados do SharePoint Modelo de objeto do cliente móvel
Criar um aplicativo Windows Phone que use o Serviço de Notificação por Push da Microsoft para alertar o dispositivo móvel de eventos no SharePoint Modelo de objeto do cliente móvel e o modelo de objeto servidor
Criar um aplicativo para iOS ou Android que execute operações CRUD em dados do SharePoint Pontos de extremidade REST/OData
Criar um aplicativo .NET Framework que execute operações CRUD em dados do SharePoint Modelo de objeto do cliente .NET Framework
Criar um aplicativo Silverlight que execute operações CRUD em dados do SharePoint Modelo de objeto do cliente Silverlight
Criar um aplicativo HTML/JavaScript que execute operações CRUD em dados do SharePoint Modelo de objeto do cliente JavaScript
Criar um Suplemento do Office que funcione com o SharePoint Modelo de objeto do cliente JavaScript
Criar um comando personalizado do Windows PowerShell Modelo de objeto de servidor
Criar um trabalho de temporizador Modelo de objeto de servidor
Criar uma extensão da Administração Central Modelo de objeto de servidor
Criar uma identidade visual consistente em um farm do SharePoint inteiro Modelo de objeto de servidor
Criar uma web part, uma página de aplicativo ou um controle de usuário do ASP.NET personalizado Modelo de objeto de servidor
Importante: se a funcionalidade que você deseja oferecer aos clientes não estiver voltada para a administração do SharePoint em um escopo mais amplo do que o conjunto de sites, recomendamos que, em vez de usar o modelo de objeto de servidor, você crie um Suplemento do SharePoint que inclua um aplicativo Web ASP.NET remoto com controles de usuário e web parts personalizados, conforme necessário. Confira as duas linhas superiores da tabela.

Modelo de objeto de servidor

O maior conjunto de APIs está no modelo de objeto servidor de classes gerenciadas. No nível do SharePoint Foundation 2013, esse modelo de objeto inclui classes e membros que habilitam o controle programático de site básico e estrutura de lista do SharePoint Foundation. A maioria dessas classes está no namespace Microsoft.SharePoint . Além disso, você pode estender quase todos os componentes do SharePoint Foundation usando o modelo de objeto do servidor, incluindo fluxos de trabalho, alertas, web parts, pesquisa básica e BCS (Microsoft Business Connectivity Services). O modelo de objeto servidor também inclui um conjunto abrangente de APIs para habilitar extensões do sistema de administração e segurança do SharePoint Foundation, incluindo backup, integridade e diagnóstico de farm, logs, gerenciamento de farms e aplicativos Web, atualização, implantação, armazenamento em cache e personalização do Windows PowerShell.

No nível do SharePoint, muito mais classes são adicionadas para habilitar a programação de ECM (Gerenciamento de Conteúdo Corporativo), perfis de usuário, taxonomia, pesquisa avançada e outros recursos do SharePoint.

Você pode usar LINQ to Objects para consultar qualquer coleção IEnumerable na memória, mas um provedor LINQ to SharePoint permite a consulta direta das listas nos bancos de dados de conteúdo do SharePoint. Estritamente falando, esse provedor não está disponível com nenhum outro conjunto de APIs discutidas neste tópico; no entanto, há maneiras de usar a sintaxe LINQ na maioria das outras.

Os assemblies que definem as classes internas do servidor são instalados no cache global de assemblies de cada servidor quando o SharePoint é instalado. Quando você programa em relação ao modelo de objeto de servidor, os assemblies são instalados como soluções de farm no cache global de assemblies.

Observação

O desenvolvimento de novas soluções de área restrita em relação ao SharePoint foi preterido em razão do desenvolvimento de suplementos do SharePoint. No entanto, ainda é possível instalar as soluções de área restrita em conjuntos de sites no SharePoint. Os assemblies dessas soluções permanecem no pacote, exceto quando realmente estão em uso. Nesse momento, são instalados temporariamente em uma pasta no servidor. Para obter mais informações, confira Onde estão os assemblies em soluções sandboxed implantadas?.

Limitações para quando você pode usar o modelo de objeto de servidor

A lógica personalizada em Suplementos do SharePoint é sempre distribuída "para baixo" até o cliente ou "para cima" até a nuvem (ou "para cima" até algum servidor fora do farm do SharePoint). Em todos esses modelos de distribuição, um dos modelos de objeto do cliente ou os pontos de extremidade REST/OData devem ser usados. (Você não pode usar o modelo de objeto de servidor em um Suplemento do SharePoint.) Por exemplo, se o aplicativo contém páginas hospedadas do SharePoint, essas páginas podem acessar dados do SharePoint usando o modelo de objeto do cliente JavaScript. As páginas também podem expor aplicativos do Silverlight que usam o modelo de objeto do cliente SharePoint Silverlight. Para obter mais informações sobre suplementos do SharePoint, confira Aspectos importantes da arquitetura e do desenvolvimento do Suplemento do SharePoint.

Modelos de objeto do cliente para código gerenciado

O SharePoint tem três modelos de objeto do cliente para código gerenciado: .NET, Silverlight e móvel.

Modelo de objeto do cliente .NET

O modelo de objeto SharePoint para .NET Framework é usado em aplicativos .NET Framework executados em um cliente Windows que não seja para telefone. Qualquer um dos seguintes itens conta como um cliente:

  • O computador de um usuário
  • Um servidor externo ao farm do SharePoint
  • Uma função Web ou de trabalho no Microsoft Azure

Quase todas as classes no modelo de objeto de servidor de lista e site principal têm uma classe correspondente no modelo de objeto do cliente do .NET Framework. Além disso, o modelo de objeto do cliente do .NET Framework expõe um conjunto completo de APIs para estender outros recursos, incluindo alguns recursos do SharePoint como ECM, taxonomia, perfis de usuário, pesquisa avançada, análise, BCS e outros.

Para melhorar o desempenho, linhas de código escritas em relação ao modelo de objeto cliente .NET Framework são enviadas ao servidor SharePoint em lotes, sendo convertidas em código do servidor e executadas. Os resultados consultados e o novo estado de todas as variáveis são então retornados ao cliente. Como desenvolvedor, você determina se um lote é executado de maneira síncrona ou assíncrona. Em um lote síncrono, o aplicativo .NET Framework aguarda os resultados retornados do servidor antes de continuar; em um lote assíncrono, o processamento no cliente continua imediatamente, e a IU (interface do usuário) continua a responder.

Você pode usar a sintaxe de consulta LINQ no código de cliente para consultar qualquer objeto IEnumerable, inclusive objetos SharePoint que implementam IEnumerable. No entanto, quando você faz isso, você está usando LINQ to Objects, não o provedor LINQ to SharePoint, portanto, a documentação deste último não é relevante para o código do lado do cliente.

Os assemblies para o modelo de objeto cliente .NET Framework devem ser instalados no cliente. Eles são incluídos em um pacote de redistribuição que você pode obter nos Componentes do Cliente do SharePoint.

Para obter exemplos de como usar o modelo de objeto .NET Framework, confira Concluir operações básicas usando o código da biblioteca de clientes do SharePoint.

Observação

Você também pode usar os pontos de extremidade REST/OData do SharePoint em um aplicativo .NET Framework. Para obter uma comparação do modelo de objeto cliente .NET Framework com os pontos de extremidade REST/OData do SharePoint, consulte a seção PONTOS de extremidade REST/OData mais adiante neste artigo.

Modelo de objeto do cliente Silverlight

O modelo de objeto SharePoint para Silverlight é usado em aplicativos do Silverlight, independentemente de onde o arquivo .xap compilado é mantido. Pode ser em uma biblioteca de ativos em um site do SharePoint, em um computador cliente, no armazenamento na nuvem ou em um servidor externo. Normalmente, um aplicativo Silverlight é exibido no SharePoint em um objeto SilverlightWebPart . O modelo de objeto do cliente Silverlight no SharePoint é quase idêntico ao modelo de objeto do cliente .NET Framework e inclui suporte para as mesmas áreas de extensibilidade. A principal diferença é que, na versão Silverlight, todos os lotes de comandos são enviados ao servidor de forma assíncrona para que a interface do usuário do aplicativo permaneça ativa.

Os assemblies para o modelo de objeto cliente Silverlight são persistentes em todos os servidores do SharePoint em %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\TEMPLATE\LAYOUTS\ClientBin. Eles não precisam ser instalados no computador que está executando o aplicativo do Silverlight, embora você tenha a opção de fazer isso. Além disso, você pode empacotá-los no arquivo .xap do aplicativo.

Os arquivos .xap do Silverlight podem ser incluídos em Suplementos do SharePoint, inclusive aplicativos hospedados do SharePoint. Neste último caso, o arquivo .xap é implantado em uma biblioteca no aplicativo Web. (Para obter mais informações sobre webs de aplicativo, consulte Webs host, webs de suplemento e componentes do SharePoint no SharePoint.) Isso torna um aplicativo Silverlight uma maneira útil de incluir o código personalizado do SharePoint em um aplicativo, pois o código personalizado do lado do servidor não é permitido em Suplementos do SharePoint. Ele também permite que os desenvolvedores do Silverlight usem suas habilidades existentes para criar aplicativos do SharePoint com uma curva de aprendizado mínima.

Observação

Você também pode usar os pontos de extremidade REST/OData do SharePoint em um aplicativo Silverlight. Para obter uma comparação do modelo de objeto cliente Silverlight com os pontos de extremidade REST/OData do SharePoint, consulte a seção PONTOS de extremidade REST/OData mais adiante neste artigo.

Modelo de objeto cliente

Uma versão especial do modelo de objeto do cliente do Silverlight está disponível para dispositivos Windows Phone. Ele inclui algumas APIs adicionais que são relevantes somente para telefones, como APIs que habilitam um aplicativo de telefone a se registrar para receber notificações do Serviço de Notificação por Push da Microsoft. Ele dá suporte a toda a funcionalidade principal do SharePoint. No entanto, não dá suporte a nenhuma das áreas de extensibilidade não principais que têm suporte nos outros dois modelos de objeto do cliente para código gerenciado. Para acessar essas áreas adicionais, use os pontos de extremidade REST/OData do SharePoint no aplicativo móvel. Confira a seção Pontos de extremidade REST/OData mais adiante neste artigo.

Os assemblies para o modelo de objeto móvel são persistentes em todos os servidores do SharePoint em %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\TEMPLATE\LAYOUTS\ClientBin. Você os empacota no arquivo .xap do aplicativo do Windows Phone.

Modelo de objeto do JavaScript

O SharePoint fornece um modelo de objeto do JavaScript para uso em script embutido ou arquivos .js separados. Ele possui todas as mesmas funções dos modelos de objeto do cliente .NET Framework e Silverlight. Assim como o modelo de objeto do cliente Silverlight, o modelo de objeto do JavaScript é uma maneira útil de incluir código personalizado do SharePoint em um aplicativo, pois código personalizado no servidor não é permitido em Suplementos do SharePoint. Ele também habilita desenvolvedores da Web a usar suas habilidades de JavaScript existentes para criar aplicativos do SharePoint com curva de aprendizado mínima.

Assim como os modelos de objeto do cliente de código gerenciado, a infraestrutura do JavaScript para SharePoint interage com os servidores de farm em lotes. Os lotes sempre são executados de forma assíncrona. Além disso, agora é possível acessar dados do SharePoint em todos os domínios no JavaScript (mas apenas os dados que estão no mesmo conjunto de sites pai), o que não era permitido em versões anteriores do SharePoint. Para saber mais, confira Acessar dados do SharePoint a partir de suplementos usando a biblioteca de domínio cruzado. Os dados são retornados do servidor em JSON (JavaScript Object Notation).

O modelo de objeto JavaScript é definido em um conjunto de arquivos *.js localizados em %ProgramFiles%\Common Files\Microsoft Shared\Web server extensions\15\TEMPLATE\LAYOUTS em cada servidor.

Para obter exemplos de como usar o modelo de objeto .NET Framework, confira Concluir operações básicas usando o código da biblioteca JavaScript no SharePoint.

Observação

Você também pode usar os pontos de extremidade REST/OData do SharePoint em um aplicativo JavaScript. Para obter uma comparação do modelo de objeto cliente JavaScript com os pontos de extremidade REST/OData do SharePoint, consulte a seção a seguir, pontos de extremidade REST/OData.

Pontos de extremidade REST/OData

Para cenários em que você precisa acessar entidades do SharePoint de tecnologias cliente que não usam JavaScript e não são criadas nas plataformas .NET Framework ou Silverlight, o SharePoint fornece uma implementação de um serviço Web REST (Transferência de Estado Representacional) que usa o protocolo OData para executar operações CRUD nos dados da lista do SharePoint. Além disso, quase todas as APIs nos modelos de objeto do cliente têm um ponto de extremidade REST correspondente. Isso habilita o código a interagir diretamente com artefatos do SharePoint usando qualquer tecnologia que dê suporte a solicitações e respostas HTTP padrão. Para usar os recursos REST internos do SharePoint, o código cria uma solicitação HTTP RESTful para um ponto de extremidade que corresponde à API do modelo de objeto do cliente desejado. O serviço Web client.svc manipula a solicitação HTTP e fornece uma resposta no formato Atom ou JSON.

Para obter mais informações sobre como usar o serviço Web REST/OData, consulte o nó Usar operações de consulta OData em solicitações REST do SharePoint; para obter exemplos, confira o tópico Concluir operações básicas usando pontos de extremidade REST do SharePoint.

Comparação da programação REST/OData à programação de modelo de objeto do cliente

Em algumas situações, pode ser preferível usar os pontos de extremidade REST até mesmo em aplicativos para os quais um modelo de objeto SharePoint está disponível, especialmente para desenvolvedores que não têm experiência com desenvolvimento no Windows. A tabela a seguir fornece uma comparação dos principais recursos dessas opções de programação para um desenvolvedor que esteja criando um aplicativo em uma plataforma Windows ou com uma plataforma que dê suporte a JavaScript.

Recurso Modelos de objeto .NET Framework ou Silverlight Modelo de objeto do JavaScript Pontos de extremidade REST/OData chamados de uma plataforma Windows ou JavaScript
Programação orientada a objeto Sim Sim Não
Processamento em lotes Sim Sim Sim
APIs para processamento condicional e manipulação de exceções Sim Não Não
Disponibilidade da sintaxe LINQ Sim Não Não
Combinação de dados de lista de diferentes aplicativos Web do SharePoint Sim Não Sim
Familiaridade para desenvolvedores experientes de REST/OData Não Não Sim
Semelhança à programação não Windows ou à programação em JavaScript Não Sim Sim
Tipos fortes para campos de item de lista Não (exceto com LINQ) Não Sim, da plataforma Windows; Não, do JavaScript
Aproveitamento de jQuery, Knockout e outras bibliotecas JavaScript Não Sim Não, da plataforma Windows; Sim, do JavaScript

Estrutura WCF Data Services

Se preferir usar a sintaxe LINQ em aplicativos cliente .NET Framework ou Silverlight, o SharePoint dá suporte a WCF Data Services como um provedor LINQ. Você pode direcionar o listdata.svc (somente para dados de lista), como nas versões anteriores do SharePoint Foundation ou pode direcionar o mesmo client.svc que dá suporte à interface de OData para obter acesso a todas as entidades do SharePoint, além de dados de lista. Para saber mais, confira Consultar o SharePoint Foundation com Serviços de Dados ADO.NET.

A Figura 2 ilustra a relação entre as várias APIs de cliente, os diversos tipos de aplicativos cliente e o SharePoint. As várias URLs _api são as URLs relativas ao farm para os pontos de extremidade REST. Para obter mais informações, confira o tópico Como saber mais sobre o serviço REST do SharePoint 15.

Figura 2. Aplicativos cliente e APIs no SharePoint

Programming model for apps for SharePoint

Conjuntos de APIs preteridos

Dois conjuntos de API ainda têm suporte na estrutura do SharePoint para compatibilidade com versões anteriores, mas recomendamos que você não os use para novos projetos: os serviços Web ASP.NET (asmx) e chamadas diretas de RPC (Chamadas de Procedimento Remoto) para o arquivo owssvr.dll .

Confira também