Este artigo foi traduzido por máquina.

Odata prático

Criando Rich Internet Applications com o Open Data Protocol

Shayne Burgess

Em PDC09 a equipe de serviços de dados do Microsoft WCF (anteriormente conhecida como a equipe de serviços de dados ado.net) pela primeira vez divulgou OData, protocolo de dados aberto. O comunicado foi em uma palestra no segundo dia da conferência, mas isso não fosse onde OData começou. As pessoas familiarizadas com serviços de dados ado.net têm usado OData como os dados de protocolo para aplicativos baseados em recursos de transferência, pois o ADO.NET Data Services foi disponibilizado no Microsoft .NET Framework 3. 5 SP1. Neste artigo, explicarei como os desenvolvedores do Rich Internet Applications (RIAs) podem usar OData e também mostrarei as vantagens de fazer isso.

Começarei respondendo o ' não '. 1 pergunta que tenha sido perguntei desde o lançamento de OData em novembro: O que é isto? Em termos bem simples, OData é um protocolo da Web baseadas em recurso para consultar e atualizar dados. OData define as operações de recursos usando verbos HTTP (PUT, POST, UPDATE e DELETE) e identifica os recursos usando uma sintaxe URI padrão. Dados são transferidos via HTTP, usando os padrões AtomPub ou JSON. O protocolo OData define algumas convenções de AtomPub, no padrão para oferecer suporte a troca de informações de esquema e de consulta. Visite odata.org de para obter mais informações sobre OData.

O ecossistema do OData

Neste artigo, apresentarei alguns produtos, estruturas e serviços da Web que consomem ou produzir OData feeds. O protocolo define os recursos e métodos que podem ser operados em e as operações (GET, PUT, POST, MERGE e DELETE, que correspondem ao ler, criar, substituir, mesclar e excluir) que podem ser executadas nesses recursos.

Na prática, isso significa qualquer cliente que pode consumir o protocolo OData pode operar em qualquer um dos produtores. Não é necessário aprender o modelo de programação de um serviço para o programa em relação ao serviço; só é necessário escolher o idioma de destino para programar em.

Se, por exemplo, você é um desenvolvedor do Silverlight que aprende a biblioteca OData para essa plataforma, você pode programar qualquer OData feed. Além da biblioteca de OData para o Silverlight, você encontrará bibliotecas do Microsoft .NET Framework cliente, AJAX, Java, PHP e objetivo-C, com mais informações sobre a forma. Além disso, PowerPivot do Microsoft Excel oferece suporte a um OData feed como uma das opções para importação de dados para seu mecanismo de análise na memória.

E, assim como os clientes capazes de consumir o protocolo OData podem operar em qualquer um dos produtores, um serviço ou aplicativo criado usando OData pode ser consumido por qualquer cliente ativado para OData. Depois de criar um serviço da Web que expõe dados relacionais, como um ponto de extremidade OData (ou expõe os dados em um site do SharePoint, as tabelas no Windows Azure ou o que fazer com que você), você pode criar facilmente um cliente de desktop avançado no .NET Framework ou um rico baseados em AJAX Web site que consome os mesmos dados.

O objetivo a longo prazo para OData é ter uma biblioteca de cliente OData para todas as principais tecnologias, para que todos os aplicativos cliente podem consumir uma grande variedade de OData feeds de programação idioma e plataforma. Combinados, os produtores e consumidores de OData criam um OData “ ecossistema ”.

O que há de novo nos serviços de dados do WCF?

Serviços de dados do WCF, um componente do .NET Framework é uma estrutura que oferece uma solução completa para a criação de serviços da Web de OData e inclui uma biblioteca de cliente com o qual você pode criar os clientes que consomem OData feeds. A equipe de serviços de dados do WCF recentemente lançou uma atualização para o .NET Framework 3. 5 SP1 apresenta uma série de novos recursos, que você também encontrará no .NET Framework 4. Esta é a segunda versão da estrutura de serviços de dados. Visite blogs.msdn.com/astoriateam/archive/2010/01/27/data-services-update-for-net-3-5-sp1-available-for-download.aspx de , onde você encontrará uma descrição e um link para download.

A estrutura de serviços de dados do WCF não é apenas um protocolo para aplicativos RIA. Ele também foi projetado para desenvolvedores do serviço de grande escala e possui muitos recursos que apelo para eles, como limites de paginação do servidor HTTP, suporte a serviços sem monitoração de estado, o cache de fluxo de suporte e um modelo de provedor conectável. Examine os novos recursos que são geralmente de maior interesse para desenvolvedores de RIA Let’s.

Dentre os principais recursos deseja expressos após o lançamento inicial foi a capacidade de solicitar o número de entidades em um conjunto de clientes. O novo recurso de contagem de “ ” aborda essa necessidade com duas partes. Em primeiro lugar, ele permite que você solicite apenas o número — ou seja, o número de valores de uma consulta retornaria. Em segundo lugar, ele adiciona uma opção de consulta que informa o serviço para incluir uma contagem do número total de entidades em um conjunto quando o resultado da consulta é um parcialmente definidas (por exemplo, quando o servidor de paginação está habilitada).

Para aprimorar a experiência ao ligar dados a partir de um serviço OData, um novo tipo de DataServiceCollection, foi adicionado à biblioteca de cliente de serviços de dados do WCF. Ele implementa os itens que ela contém (através do uso de interfaces INotifyCollectionChanged e de INotifyPropertyChanged) de controle de alterações. Quando ele está vinculado a um controle — um DataGrid do Silverlight, por exemplo — ele controlará as alterações feitas para os objetos e a coleção em si. Esta nova coleção simplifica bastante o processo de criação OData clientes com um componente de interface.

Outro recurso solicitado com freqüência foi a capacidade de um subconjunto das propriedades de uma entidade retornada no resultado de uma consulta de projeto. Suporte a LINQ foi adicionado para que isso por meio da instrução Select do LINQ. Isso tem dois benefícios: Ele reduz o tamanho das respostas às consultas HTTP e reduz a superfície de memória de objetos do lado do cliente. Isso pode ser especialmente útil quando você está desenvolvendo um aplicativo de cliente em relação a um serviço Don possuir e em que cada entidade pode ter muitas propriedades de sem juros ao cliente. Neste artigo, demonstrarei a trabalhar com um serviço grande, disponível ao público que tenha muitas entidades com várias propriedades em cada entidade. As projeções serão úteis no exemplo porque ele inclui apenas algumas propriedades necessárias em uma entidade.

Para ajudá-lo a entender o valor do ecossistema OData, criaremos um aplicativo da Web que permite aos visitantes navegar no site da minha imóveis fictício da empresa, a Contoso Ltd., para ver as listas de propriedades que ele gerencia.

Dados relacionais

A fonte de dados principal para o aplicativo do localizador Home de contoso.com é um banco de dados do SQL Server que contém informações sobre todas as propriedades de que gerenciamento de empresa e todas as listagens (atuais e vendidas anteriormente) que foi publicado para essas propriedades.

Desde o lançamento dos serviços de dados do WCF e o ADO.NET Estrutura de Entidade no .NET Framework 3. 5 SP1, foi fácil expor um banco de dados relacional como um OData feed. Tudo o que for necessário é um modelo de Estrutura de Entidade criado sobre os dados relacionais. Um feed de OData é baseado em HTTP, portanto, você precisa de um serviço da Web ou site da Web para hospedar o serviço.

Para criar OData de alimentação de dados relacional, a primeira etapa é criar um aplicativo da Web do asp.net no Visual Studio 2010 para hospedar o serviço OData. No Visual Studio, selecione File | New | Project | ASP.NET Web Application. Isso cria o esqueleto de um serviço da Web que pode ser usado para hospedar OData feed.

Depois que o serviço da Web é criado e configurado, vamos criar o modelo de dados de Estrutura de Entidade no feed OData irá expor. O Visual Studio torna isso fácil usando o assistente Adicionar novo item, que permite a geração automática de um modelo a partir de um banco de dados existente. A Figura 1 mostra um modelo de dados simples criado usando o assistente Add New Item de dados do SQL Server que contém as propriedades e as listagens gerenciadas pela Contoso.

image: The Entity Framework Data Model for the Relational Data
Figura 1 do modelo de estrutura de dados de entidade para os dados relacionais

Agora crie let’s um serviço de dados do WCF expõe esse modelo de dados como um feed OData. O Visual Studio também torna isso simples com a opção de serviço de dados do WCF no assistente Add New Item. Quando você seleciona essa opção, o Visual Studio fornece um arquivo de código (neste exemplo de arquivo é chamado Listings.svc.cs) que é usado para configurar o serviço de dados.

O código no do Figura 2 demonstra como definir um serviço de dados do WCF. A classe de programação é a classe de serviço é expor o serviço de dados e ele implementa o DataService genérico <T>. O tipo usado para definir o DataService <T> do Figura 2 é o tipo de ListingsEntities, que é o contexto de Estrutura de Entidade criado no do Figura 1. Como essa classe aceitará um contexto de Estrutura de Entidade, isso é uma maneira rápida e fácil de obter um serviço de dados do WCF expõe dados relacionais em funcionamento. A classe DataService não é restrita a apenas trabalhando em contextos do Estrutura de Entidade, no entanto; classe 
the aceitará qualquer coleção de objetos CLR, que implementa a interface IQueryable. No .NET Framework 4, um novo modelo de provedor personalizado para os serviços WCF de dados foi adicionado que permite que um serviço a ser criado sobre praticamente qualquer fonte de dados.

De definição de serviço de dados do WCF, a Figura 2

// The ListingsEntities is the Entity Framework Context that the Service exposes
public class Listings : DataService< ListingsEntities >
{
  public static void InitializeService(DataServiceConfiguration config)
  {
    // These lines set the access rights to "Read Only" for both entity sets
    config.SetEntitySetAccessRule("Listings", EntitySetRights.AllRead);
    config.SetEntitySetAccessRule("Properties", EntitySetRights.AllRead);

    // There are currently no service operations in the service
    config.SetServiceOperationAccessRule("MyServiceOperation",
      ServiceOperationRights.All);

    config.DataServiceBehavior.MaxProtocolVersion = 
      DataServiceProtocolVersion.V2;
  }
}

Let’s parecer um pouco mais de perto com o que mais está fazendo o método InitalizeService do Figura 2.O método é chamar o SetEntitySetAccessRule para ambos os conjuntos de entidades que o serviço irá expor e definindo os direitos de acesso para AllRead.Isso indica que o serviço para fazer com que ambos os conjuntos de entidades totalmente legíveis, mas não permitir inserções, atualizações ou exclusões.Esta é uma ótima maneira de controlar o acesso ao serviço.Os serviços de dados do WCF também suportam métodos chamados interceptores de consulta que permitem que o autor de serviço configurar o controle de acesso mais refinados do serviço em cada conjunto por entidade.Definir o arquivo de Listings.svc como a página de início do projeto e execute o projecto.Uma janela do navegador será aberto e exibir o documento de serviço, conforme mostrado no do Figura 3.

image: Service Document for the SharePoint SiteA Figura 3 do documento de serviço para o site do SharePoint

Convenções de URI OData

O documento de serviço de lista os conjuntos de entidades que são expostos pelo serviço.Lembre-se, você pode acessar recursos neste serviço usando a sintaxe URI poderosa definida como uma parte opcional do protocolo OData.Let’s dar uma olhada rápida na sintaxe de URI para este serviço.Para acessar um feed para cada conjunto de entidades, acrescentar o nome de entidade definido para o URI de base para o serviço; por exemplo, http://myhost/Listings.svc/Properties deve tratar o conjunto de entidades no conjunto de propriedades de entidade.

Também é possível tratar de uma entidade particular individualmente usando o valor da chave; o URI http://myhost/ Listings.svc/Properties(0) seria tratar a propriedade com identificação = 0.Você pode endereçar uma relação dessa entidade para outra entidade ou conjunto de entidades pelo acréscimo do nome do relacionamento para o final do URI, então, http://myhost/ Listings.svc/Properties (0) / programação acessaria o conjunto de listagens associadas a entidade de propriedade com identificação = 0.Usando esta sintaxe, é possível navegar através de vários níveis de relações.

A sintaxe URI também define várias opções de consulta que podem ser anexados a um URI para modificar a consulta base, de alguma forma, e cada opção de consulta é definida como um par nome/valor.Por exemplo, acrescentando-se na parte superior $ de opção de consulta = 10, restringir a consulta apenas os 10 primeiros entradas no resultado.Figura 4 lista todas as opções de consulta disponíveis na sintaxe de URI.

Do OData Query Options, a Figura 4

parte superior de $ = n Restringe as entidades n primeira a consulta.
$ skip = n Ignora as entidades n primeira no conjunto.
$ inlinecount = allpages Inclui a contagem de todas as entidades do conjunto de resultado.
$ filter = <expression> Uma expressão pode ser fornecida para restringir os resultados retornados pela consulta (exemplo: $ filter = status eq ‘ disponível ’ restringe os resultados para entidades que têm uma propriedade de status com o valor “ disponível ”).
$ orderby = <expression> Ordena os resultados por um conjunto de propriedades da entidade
Selecione $ = <expression> Especifica um subconjunto das propriedades da entidade a ser retornado.
formato $ Especifica o formato do feed a ser retornado (ATOM ou JSON).Esta opção não é suportada em serviços de dados do WCF.

Exposição de dados do SharePoint

Na seção anterior mostrei como expor os dados armazenados em meu banco de dados relacional, as informações de listagem para o site de imóveis e propriedade.Let’s, digamos que eu tenho também informações sobre os agentes de espaço livre real que está sendo vendido as propriedades, mas que os dados são armazenados em um site do SharePoint.Microsoft SharePoint 2010 tem a capacidade de expor todas as listas e documentos dentro dessas listas como um feed OData.Isso é ótimo para o site de imóveis, porque significa que as informações de agente que inseriram os funcionários da empresa estão disponíveis como um OData de alimentação que pode ser incluída no aplicativo de programação que estou criando.Os usuários que possuem processos usando a interface do SharePoint para inserir e atualizar esses dados Don precisam alterar o seu fluxo de trabalho de acordo com o meu aplicativo.Os dados inseridos no site do SharePoint da empresa estão disponíveis em tempo real para o aplicativo de programação que está sendo criado.

A Figura 5 mostra o portal do SharePoint simples, que os agentes imobiliários usam para registrar e atualizar suas informações de contato.

image: SharePoint Site for Agent InformationDo Site do SharePoint para informações sobre o agente, a Figura 5

Quando a atualização de serviços de dados ado.net para o .NET Framework 3. 5 SP1 estiver instalada no sistema SharePoint, um novo ponto de extremidade HTTP fica disponível para cada site que expõe os dados da lista como um OData feed.Porque um feed OData é acessado por meio de HTTP, podem ser examinado usando apenas o Internet Explorer.Figura 6 mostra a alimentação para a lista de agentes do SharePoint.

image: Agents Feed from the SharePoint Agent ServiceFigura 6 de alimentação de agentes do serviço de agente do SharePoint

Consome dados de referência de OGDI

Por padrão, um feed OData retornará uma representação ATOM feed e, quando acessada de um navegador da Web o resultado será um ATOM feed.Se o cabeçalho de aceitação da solicitação é alterado para a “ application/json ”, o resultado irá ser os mesmos dados de um feed de JSON.

O feed em do Figura 6 começa com um elemento de <feed> representa um conjunto de entidades.Contido dentro de cada feed é um conjunto de elementos <entry>, cada uma delas representando uma única entidade no feed (os primeiros três entrada elementos estão recolhidos para tornar todo o feed visível em uma única tela).

Neste exemplo, a entidade tem um token de simultaneidade definido nela; como resultado, a cada entidade na alimentação tem uma propriedade etag nele.O etag é o token usado pelo serviço de dados para impor uma verificação de simultaneidade, quando uma alteração é feita para a entidade solicitada.Cada entidade, formatada usando uma marca de <entry> consiste em um conjunto de links que contêm o link a ser usado ao editar as entidades e relações da entidade.Cada link de relação aponta a outra entidade ou um conjunto de entidades (elas são chamadas propriedades de referência e de navegação, respectivamente).Cada elemento <entry> 
includes também um elemento <m:properties> que contém as propriedades de tipo primitivo e complexa para a entidade; os valores de propriedade consistem no nome da propriedade da entidade e o valor dessa propriedade.

O Open governo dados Initiative (OGDI) é um serviço baseado na plataforma Microsoft Windows Azure que torna mais fácil para os órgãos do governo publicar uma ampla variedade de dados públicos.O projeto OGDI fornece um starter kit, que pode ser usado pelas agências do governo para expor seus dados.Por exemplo, a cidade de Edmonton adotou o starter kit para expor seus dados do governo e um serviço com de ogdisdk.cloudapp.net tem um conjunto de dados com uma variedade de dados sobre a área de Washington, D.C..Outro exemplo é o codinome da Microsoft “ Dallas ” projeto tem como objetivo fazer simples para qualquer pessoa com um conjunto de dados para expor os dados como um serviço da Web.Este projeto também é criado na plataforma Windows Azure e expõe dados usando OData.Estes são exemplos de serviços de grande escala que expõem a referência de grandes conjuntos de dados que podem ser ainda mais consumidos por aplicativos da Web.Como vou mostrar, quando esses serviços expõem seus dados usando OData, é fácil de consumir dados de uma variedade de aplicativos.

Como explicado, o site OGDI apresenta dados publicamente disponíveis sobre a área de Washington, D.C..Aplicativo de imóveis da Contoso é usado para pesquisa na área de programação e poderia ser útil para os usuários tenham disponíveis parte dessa referência dados sobre a área ao redor de uma propriedade específica ao exibi-la.Ao criar o cliente para o aplicativo de exemplo, eu demonstrarei como incluir OData feed do site OGDI como uma das fontes de dados do aplicativo.

Outros produtores OData

Até agora, mostrei exemplos de consumo de dados do SQL Server, SharePoint e um serviço OData genérico na Web, mas há mais opções.A plataforma do Windows Azure cloud-based tem um serviço de tabela que expõe dados armazenados nas tabelas de Azure do Windows e a API é construída usando-OData.Como mencionado, o projeto do Microsoft escritório de Dallas é um mercado de dados de localização e consultar dados expostos pelo serviço de escritório de Dallas, e esse serviço expõe seus dados usando o protocolo OData.OData produtores não são limitados apenas para produtos da Microsoft ou; IBM anunciou recentemente que seu produto do WebSphere eXtreme escala 7. 0 agora oferece suporte ao protocolo de OData.

Cliente Silverlight

Aplicativo do localizador de imóveis da Contoso agora tem um serviço da Web do asp.net que expõe os dados relacionais no SQL Server sobre as listagens de imóveis e as propriedades gerenciadas pela empresa, um site do SharePoint que está sendo usado para gerenciar os dados sobre os agentes da empresa; e um serviço da Web que expõe dados sobre a região em torno de propriedades do governo que a empresa está divulgando.Eu quero juntar todas essas fontes em um aplicativo do Silverlight pode trabalhar com esses dados de uma maneira significativa.

No Silverlight 3, a biblioteca de cliente de serviços de dados do WCF é incluída no SDK do Silverlight, o que torna muito fácil para os aplicativos do Silverlight para se comunicar com um serviço que está habilitada para OData.Para fazer isso, no Visual Studio a partir de um projeto do Silverlight, o projeto com o botão direito e selecione Add Service Reference.Isso o conduz pelo processo de criação de uma referência de serviço.A entrada principal para uma referência de serviço é o URI do serviço que está sendo referenciado do aplicativo do Silverlight.A Figura 7 mostra um exemplo de como adicionar uma referência de serviço para o serviço de exemplo OGDI.

image: Add Service Reference for the OGDI Sample ServiceDe Add Service Reference para o serviço de OGDI de exemplo, a Figura 7

O Assistente de referência de serviço cria uma classe de contexto de cliente é usada para interagir com o serviço de dados.O contexto de cliente abstrai os detalhes de como trabalhar com HTTP e os URIs longe, por exemplo, o modelo de programação do cliente e permite que o desenvolvedor cliente pensar apenas classes c# e XAML.O contexto de cliente também inclui uma implementação de provedor LINQ e, como resultado, há suporte para consultas do LINQ no proxy.O assistente Add Service Reference também irá gerar um conjunto de classes de proxy do cliente que espelham os tipos que são expostos pelo serviço de referência.Depois de criar a referência de serviço OGDI, criarei também uma referência de serviço para serviços do SharePoint e o de programação que criei.Este código mostra como criar os contextos são usados para interagir com os três serviços OData:

// OGDI service context
OGDIService.dcDataService OGDIService = 
  new dcDataService(new Uri(OGDIServiceURI));

// SharePoint service context
AgentsReference.AgentsDataContext agentsService = 
  new AgentsReference.AgentsDataContext(new Uri(sharepointServiceURI));

// Listings Service context
ListingReference.ListingsEntities listingsService =
  new ListingReference.ListingsEntities(new Uri(listingsServiceURI));

A Figura 8 mostra a estrutura de tópicos de imóveis Silverlight aplicativo do localizador de home. O aplicativo será hospedado no SharePoint para que seja facilmente disponível para os usuários existentes que estão acostumados a trabalhar no ambiente do SharePoint.

image: The Contoso Home Finder
Figura 8 O localizador de home page de Contoso

A Figura 9 contém o código para consultar o serviço de programação e o resultado de ligação para a grade na parte superior do aplicativo do Silverlight de localização de home.

A Figura 9 de criação de contextos de proxy do cliente

private void getListings()
{
  DataServiceCollection<Listing> listings = new 
    DataServiceCollection<Listing>();

  listingsGrid.ItemsSource = listings;
  
  var query = from listing in
              listingsService.Listings.Expand("Property")
              select listing;
  listings.LoadAsync(query);
}

O código no do Figura 9 cria um DataServiceCollection que é uma coleção controlada e vincula-se a coleção para a propriedade ItemsSource da grade de programação principal. Como essa coleção implementa o controle de alterações, quaisquer alterações feitas nos itens na grade é automaticamente refletidas em entidades na coleção de programação. As alterações na grade podem ser mantidas para o serviço chamando o método BeginSaveChanges no contexto do banco de dados para o serviço de programação.

No Silverlight, todas as chamadas de rede são feitas assincronicamente, portanto, todas as operações em relação a um serviço que usa a biblioteca de cliente de serviços de dados do WCF em execução envolve fazer a chamada inicial para a operação e, em seguida, escrever um método de retorno de chamada separada é passado para o método para manipular o resultado da chamada assíncrona. Para melhorar essa experiência assíncrona, um método foi adicionado à classe DataServiceCollection, LoadAsync, que faz todo o trabalho de lidar com a função de retorno de chamada assíncrono e carregar os resultados na coleção.

No Figura 9 código, a coleção é acoplada a uma grade antes da chamada LoadAsync é feita e os valores de não ser carregados na coleção até após a chamada assíncrona for concluída. A coleção irá disparar eventos coleção alterada quando os resultados são retornados do serviço e a grade irá capturar esses eventos e exibir os resultados quando a chamada assíncrona for concluída.

Quando uma listagem está selecionada na grade de dados, o site do SharePoint deve ser consultado para obter informações sobre o agente de gerenciamento dessa lista. Nessa arquitetura do aplicativo, uma segunda consulta é necessária porque as fontes de dados para o tipo de lista e o tipo de agente são separadas e há nenhuma relação explícita entre os dois (se você é uma pessoa que pensa em termos de modelos, este exemplo envolve dois modelos completamente separados e a relação entre os modelos é um artificial uma criada e aplicada pelo cliente).

A Figura 10 mostra como consultar o serviço do SharePoint para a entidade do agente, dado o nome do agente. Uma seqüência de código semelhante é usada para consultar os dados OGDI para as estatísticas do bairro do gráfico na parte inferior da página Home localizador. O código até este ponto demonstra somente os recursos de consulta do cliente do Silverlight, mas o cliente não está limitado às consultas somente; ele tem recursos avançados gravar de volta as alterações para o serviço do cliente.

A Figura 10 de executar uma consulta assíncrona

private void GetAgentData(string agentName)
{
    var query = agentsService.Agents.Where(a => a.FullName == agentName) as 
        DataServiceQuery;

    query.BeginExecute(
        AgentQueryCallBack, query);
}

private void AgentQueryCallBack(IAsyncResult result)
{
    Dispatcher.BeginInvoke(() =>
    {
        var queryResult = result.AsyncState as DataServiceQuery<AgentsItem>;
        if (queryResult != null)
        {
            var agents = queryResult.EndExecute(result);
            this.grdAgent.DataContext = agents.First();
        }
    });
}

OData em PowerPivot

PowerPivot é uma nova ferramenta de inteligência de negócios na memória que é fornecida como um suplemento para o Microsoft Excel 2010 — visite powerpivot.com de para obter mais informações.A ferramenta fornece suporte para importação de grandes conjuntos de dados de uma fonte de dados e fazer análises de dados complexos e relatórios.PowerPivot pode importar dados de um número de diferentes fontes de dados, incluindo diretamente a partir de um feed de OData.De dados feeds opção da PowerPivot (mostrada em do Figura 11), aceita um ponto de extremidade de serviço OData como a localização do feed para importar.

image: PowerPivot Imports from an OData Feed
A Figura 11 importações de PowerPivot de um feed OData

A Figura 12 mostra um gráfico feito a partir do resumo de estatísticas de crime na alimentação de dados de Washington, D.C. do OGDI.

image: PowerPivot Chart from OData Feed
A Figura 12 do Gráfico PowerPivot do feed OData

Do Figura 12, feita usando o mesmo conjunto de dados como o aplicativo de imóveis no exemplo anterior, o gráfico mostra um resumo de todos os dados para cada região.Eu recomendo que você faça o download de PowerPivot para o Excel 2010 e importar dados do site OGDI em ogdi.cloudapp.net/v1/dc de e veja você mesmo a rapidez você realizará a análise de dados rich sobre esses dados.

O Visualizador de protocolo de dados abertos

O serviço de dados OGDI é essencialmente uma “ caixa preta ” para um desenvolvedor externo que cria um aplicativo que consome os dados expostos pelo serviço.Felizmente, o serviço OGDI expõe seus dados usando o protocolo OData, portanto, não é necessário conhecer os detalhes internos do serviço para interagir com ele.O modelo de programação para o serviço é o protocolo de OData.O ponto de extremidade de serviço descreve a forma dos dados e, como mostrei na seção anterior, que é tudo o que precisa para interagir com o serviço.No entanto, muitas vezes é útil ver a forma dos dados no serviço e obter uma melhor compreensão das relações entre as partes do serviço.O Visualizador de protocolo Open Data foi criado apenas para essa finalidade.Está disponível a partir de Tools | item de menu do Gerenciador de extensões no Visual Studio 2010.A Figura 13 mostra dois modos de exibição do Visualizador de exibir a estrutura do serviço OGDI.

O modo de exibição superior do Figura 13 mostra todo o serviço; o modo de exibição inferior é ampliado para mostrar apenas quatro das caixas na exibição.O visualizador que representa a conjuntos de entidades como caixas e as relações entre entidades como linhas que conectam as caixas.É claro da exibição superior em do Figura 13 que o serviço OGDI é completamente plano e não contém quaisquer relacionamentos, pois há linhas de conexão entre todas as caixas.Isso é apenas as características do serviço OGDI e não seja típico da maioria dos serviços de OData.O modo de exibição inferior mostra que um Close de quatro da entidade define no serviço.Acabou de examinar o modo de exibição, você pode determinar que o serviço expõe dados sobre estações de incêndio, participação da escola fundamental, dialysis clínicas e governamentais locais, bem como as propriedades e chaves para cada um desses tipos.

image: Open Data Visualizer Views of the OGDI Sample Service
A Figura 13 do Open exibições de visualizador de dados do serviço de exemplo OGDI

Aprendendo mais

Este artigo apresenta o protocolo de dados aberto e o ecossistema que foi criado em torno dele, incluindo a estrutura de serviços de dados do WCF.Para obter mais informações, visite o site de Open Data Protocol, protocolo na Web em odata.org de .Para obter mais informações sobre os serviços de dados do WCF, consulte msdn.microsoft.com/data/bb931106 de ou o blog de serviços de dados do WCF em blogs.msdn.com/astoriateam de .

Shayne Burgess* é gerente de programa em que os dados e o grupo de modelagem na Microsoft, trabalhando especificamente os serviços de dados do WCF e o protocolo Open Data. Burgess regularmente blogs sobre os serviços de dados do WCF team blog em blogs.msdn.com/b/astoriateam de.*

Graças aos seguintes especialistas técnicos para revisar este artigo: Elisa Flasko e Mike Flasko