Partilhar via


Criar um serviço de dados OData para uso como um sistema externo do BCS

Saiba como criar um serviço WCF Internet endereçável que usa OData para enviar notificações aos SharePoint, quando os dados subjacentes é alterada. Essas notificações são usadas para disparar eventos que estejam anexados a listas externas.

Este artigo descreve como criar um ASP.NET Windows Communication Foundation (WCF) o serviço de dados para expor o banco de dados de amostra do AdventureWorks 2012 LT. Isso permite que você acesse os dados através do protocolo do Open Data (OData). Quando o acesso é estabelecido por meio do OData, você pode configurar um tipo de conteúdo externo Serviços Corporativos de Conectividade (BCS) que permitirá SharePoint consumir os dados do banco de dados externo. Para aprimorar posteriormente essa fonte OData, você pode adicionar contratos de serviço para o serviço WCF que habilitará a BCS assinar notificações que indicam que os dados externos foi alterado.

Pré-requisitos para criar o serviço OData

A seguir é necessárias para criar o serviço OData neste artigo:

Para obter informações sobre como configurar seu ambiente de desenvolvimento, consulte Configurar um ambiente de desenvolvimento geral paraSharePoint .

Principais conceitos para a criação de um serviço OData

A tabela 1 lista artigos que ajudarão você a entender os conceitos principais da criação de um serviço de WCF via OData e conteúdo externo.

Tabela 1. Principais conceitos para a criação de um serviço OData

Recurso Descrição
Como usar fontes de OData com Serviços Corporativos de Conectividade do SharePoint
Fornece informações para ajudá-lo a começar a criar tipos de conteúdo externos com base em fontes OData e usando esses dados em componentes SharePoint ou Office 2013.
Como: Criar um tipo de conteúdo externo a partir de uma fonte OData no Microsoft Office SharePoint Online
Saiba como usar o Visual Studio 2012 para descobrir uma fonte OData publicada e criar um tipo de conteúdo externo reutilizável a ser usado no BCS em SharePoint.
Protocolo do Open Data
Fornece informações sobre o protocolo aberto de dados, incluindo definições de protocolo, arquiteturais informações e exemplos de uso.
Visão geral dos serviços de dados WCF
WCF Serviços de dados permite a criação e consumo de serviços de dados para a web ou em uma intranet usando OData. OData permite que você exponha os dados como os recursos que podem ser solucionados pela URIs.
Desenvolvendo e implantando o WCF Data Services
Fornece informações sobre o desenvolvimento e implantação de WCF serviços de dados.

Etapas envolvidas na criação do sistema externo

As etapas a seguir precisam ser concluídas

  • Instalar o banco de dados de amostra do AdventureWorks 2012 LT

  • Criar o serviço OData

  • Definir permissões de acesso

  • Testar o serviço

  • Adicionar recursos para a funcionalidade adicional do BCS

Instalando o banco de dados de amostra

Normalmente, um sistema externo é um banco de dados e por esse motivo, este exemplo mostra como usar o banco de dados de amostra do AdventureWorks 2012 LT para representar uma fonte de dados proprietário.

As etapas a seguir serão

Como criar WCF serviço OData

Criando um serviço Windows Communication Foundation (WCF) que pode ser acessado por meio do protocolo OData é relativamente simples. Visual Studio 2012 fornece várias ferramentas para descobrir automaticamente e modelagem de dados de várias fontes de dados. Isso permite que você crie conexões e interfaces aos dados em bancos de dados do SQL Server e outros tipos de repositórios de dados, em seguida, podem ser trabalhou com programaticamente usando um modelo de objeto abrangente.

No entanto, para SharePoint permitir que o BCS receba notificações de sistemas remotos quando os dados subjacentes foram alterados, você deve modificar o serviço WCF para responder a essas alterações.

Para criar um novo projeto do WCF

  1. No Visual Studio, no menu arquivo, escolha novo projeto.

  2. Na caixa de diálogo Novo projeto, escolha o modelo da Web e, em seguida, escolha o Aplicativo Web ASP.NET.

  3. Digite AdventureWorksService para o nome do projeto e escolha OK.

  4. No Solution Explorer, abra o menu de atalho para o projeto ASP.NET que você acabou de criar e escolha Propriedades.

  5. Selecione a guia Web e defina o valor da caixa de texto porta específica para8008.

Para definir o modelo de dados

  1. No Solution Explorer, abra o menu de atalho para o projeto ASP.NET e escolha Adicionar Novo Item.

  2. Na caixa de diálogo Adicionar Novo Item, escolha o modelo de dados e, em seguida, escolha o Modelo de dados do ADO.NET Entity.

  3. O nome do modelo de dados, digite AdventureWorks.edmx.

  4. No Assistente de modelo de dados de entidade, escolha a geração do banco de dados e escolha Avançar.

  5. Conecte o modelo de dados no banco de dados, executando um dos seguintes passos e escolha Avançar.

  • Se você não tiver uma conexão de banco de dados já configurada, escolha Nova conexão e criar uma nova conexão.

  • Se você tiver uma conexão de banco de dados já configurada para se conectar ao banco de dados Northwind, escolha essa conexão na lista de conexões.

  • Na página final do assistente, marque as caixas de seleção para todas as tabelas no banco de dados e desmarque as caixas de seleção dos modos de exibição e procedimentos armazenados.

  1. Escolha Concluir para fechar o assistente.

Para criar o serviço de dados

  1. No Solution Explorer, abra o menu de atalho para o seu projeto ASP.NET e escolha Adicionar Novo Item.

  2. Na caixa de diálogo Adicionar Novo Item, escolha WCF Data Service.

  3. O nome do serviço, digite AdventureWorks.

    Visual Studio cria os arquivos de marcação e código XML para o novo serviço. Por padrão, a janela editor de código abre. No Solution Explorer, o serviço terá o nome, AdventureWorks, com a extensão. svc.cs ou. svc.vb.

  4. Substitua o comentário /* TODO: put your data source class name here */ na definição da classe que define o serviço de dados com o tipo de contêiner da entidade do modelo de dados, nesse caso é AdventureWorksEntities. A definição da classe deve se parecer com o seguinte:

  
public class AdventureWorks : DataService<AdventureWorksEntities>

Por padrão, quando um serviço WCF é criado, ele não pode ser acessado devido à sua configuração de segurança. O próximo permite etapa que especificar quem pode acessá-lo e quais são os direitos que eles têm.

Para habilitar o acesso aos recursos do serviço de dados

  • No código para o serviço de dados, substitua o código de espaço reservado na função InitializeService com os seguintes itens.
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);

Isso permite que os clientes autorizados leu e acesso de gravação aos recursos para os conjuntos de entidade especificada.

Observação

[!OBSERVAçãO] Qualquer cliente que pode acessar o aplicativo de ASP.NET também pode acessar os recursos que são expostos pelo serviço de dados. Em um serviço de dados de produção, para impedir o acesso não autorizado aos recursos, você deve também proteger o próprio aplicativo. Para obter mais informações, consulte Protegendo o WCF Data Services.

Para BCS receber notificações, deve haver um mecanismo na fonte de dados back-end que aceitará uma solicitação para ser adicionadas e removidas da inscrições de notificação.

Criando o serviço a última etapa é adicionar operações de serviço para os estereótipos Subscribe e Unsubscribe que são definidos no modelo BDC.

Para adicionar as operações de serviço para inscrever-se e Cancelar estereótipos

  • Na página AdventureWorks.cs, adicione a seguinte declaração de variável de cadeia de caracteres.
public string subscriptionStorePath = @"\\\\[SHARE_NAME]\\SubscriptionStore\\SubscriptionStore.xml";

Observação

[!OBSERVAçãO] Este arquivo é um arquivo XML que foi atualizado com novas inscrições. Acesso a este arquivo será feito pelo processo do servidor, portanto, verifique se você concedeu direitos suficientes para este acesso a arquivos.> Convém também criar uma solução de banco de dados para armazenar informações de inscrição.

Em seguida, adicione os seguintes dois métodos de WebGet para lidar com as assinaturas.

[WebGet]
public string Subscribe(string deliveryUrl, string eventType)
{
    string subscriptionId = Guid.NewGuid().ToString();

    XmlDocument subscriptionStore = new XmlDocument();

    subscriptionStore.Load(subscriptionStorePath);

    // Add a new subscription element.
    XmlNode newSubNode = subscriptionStore.CreateElement("Subscription");

    // Add subscription ID element to the subscription element.
    XmlNode subscriptionIdStart = subscriptionStore.CreateElement("SubscriptionID");
    subscriptionIdStart.InnerText = subscriptionId;
    newSubNode.AppendChild(subscriptionIdStart);

    // Add delivery URL element to the subscription element.
    XmlNode deliveryAddressStart = subscriptionStore.CreateElement("DeliveryAddress");
    deliveryAddressStart.InnerText = deliveryUrl;
    newSubNode.AppendChild(deliveryAddressStart);

    // Add event type element to the subscription element.
    XmlNode eventTypeStart = subscriptionStore.CreateElement("EventType");
    eventTypeStart.InnerText = eventType;
    newSubNode.AppendChild(eventTypeStart);

    // Add the subscription element to the root element. 
    subscriptionStore.AppendChild(newSubNode);

    subscriptionStore.Save(subscriptionStorePath);

    return subscriptionId;
}

[WebGet]
public void Unsubscribe(string subscriptionId)
{
    XmlDocument subscriptionStore = new XmlDocument();
    subscriptionStore.Load(subscriptionStorePath);

    XmlNodeList subscriptions = subscriptionStore.DocumentElement.ChildNodes;
    foreach (XmlNode subscription in subscriptions)
    {
        XmlNodeList subscriptionList = subscription.ChildNodes;
        if (subscriptionList.Item(0).InnerText == subscriptionId)
        {
            subscriptionStore.DocumentElement.RemoveChild(subscription);
            break;
        }
    }

    subscriptionStore.Save(subscriptionStorePath);
}

Próximas etapas

Para notificar SharePoint que foram feitas alterações, você também precisará criar um serviço que consulta a fonte de dados para que as alterações e envia notificações para todos aqueles inscrito para notificações.

Confira também