Este artículo proviene de un motor de traducción automática.

Odata prácticos

Creación de aplicaciones enriquecidas de Internet con el Protocolo de datos abiertos

Shayne Burgess

En PDC09 el equipo de WCF Data Services de Microsoft (anteriormente conocido como equipo de ADO.NET Data Services) en primer lugar dio a conocer OData, el protocolo de datos abierta. El anuncio se encontraba en un discurso de apertura en el segundo día de la conferencia, pero no estaba donde inició OData. Las personas que conoce ADO.NET Data Services han estado utilizando OData como datos de protocolo para las aplicaciones basadas en recursos de transferencia debido a que ADO.NET Data Services está disponible en Microsoft .NET Framework 3.5 SP1. En este artículo, explicaré cómo los programadores de aplicaciones de Internet enriquecidas (RIA) pueden utilizar OData y también le mostraré las ventajas de esta forma.

Empezaré respondiendo a la ventana nos. Me he sido pedido desde el descubrimiento de OData en noviembre de 1 pregunta: ¿Qué es esto? En términos muy sencillos, OData es un protocolo de Web basadas en recursos para consultar y actualizar datos. OData define las operaciones en los recursos mediante verbos HTTP (PUT, POST, UPDATE y DELETE), e identifica los recursos mediante una sintaxis estándar de URI. Datos se transfieren a través de HTTP que utilizan los estándares de AtomPub o JSON. AtomPub, el protocolo OData define algunas convenciones en el estándar para que admita el intercambio de información de consulta y el esquema. Visite OData odata.org para obtener más información.

El ecosistema de OData

En este artículo presentaré algunos productos, marcos de trabajo y servicios Web que utilizan o generan OData fuentes. El protocolo define los recursos y los métodos que pueden ser las operaciones y las operaciones (GET, PUT, POST, MERGE y DELETE, que corresponden a leer, crear, reemplazar, combinar y eliminar) que se pueden realizar en los recursos.

En la práctica, esto significa cualquier cliente que admita el protocolo OData puede funcionar a través de cualquiera de los fabricantes. No es necesario obtener información sobre el modelo de programación de un servicio para programar con el servicio; sólo es necesario seleccionar el idioma de destino a programar en.

Si, por ejemplo, un desarrollador de Silverlight que aprende la biblioteca de OData para esa plataforma, se puede programar cualquier OData de alimentación. Más allá de la biblioteca de OData para Silverlight, encontrará las bibliotecas para el cliente de Microsoft .NET Framework, AJAX, Java, PHP y objetivo-C, con más información sobre la forma. Además, PowerPivot de Microsoft Excel admite un OData fuente como una de las opciones de importación de datos para su motor de análisis de la memoria.

Y como clientes que pueden consumir el protocolo OData pueden funcionar a través de cualquiera de los fabricantes, se puede consumir un servicio o aplicación creada con OData por cualquier cliente compatible con OData. Después de crear un servicio Web que expone los datos relacionales como extremo OData (o expone los datos en un sitio de SharePoint, las tablas de Windows Azure o aquello), puede crear fácilmente un completo cliente de escritorio en .NET Framework o el sitio de Web enriquecido basadas en AJAX que utiliza los mismos datos.

El objetivo a largo plazo para OData es tener una biblioteca de cliente OData para cada tecnología principal de plataforma y lenguaje de programación para que todas las aplicaciones cliente pueden consumir la gran cantidad de fuentes de OData. En combinación, los productores y consumidores de OData crearán un OData “ ecosistema. ”

Novedades en los servicios de datos WCF

Servicios de datos de WCF, un componente de .NET Framework, es un marco de trabajo que ofrece una solución integral para la creación de servicios OData Web y se incluye una biblioteca de cliente con el que se pueden generar a los clientes que consumen OData fuentes. El equipo de servicios de WCF de datos recientemente publicado una actualización para .NET Framework 3.5 SP1 que presentan una gran cantidad de nuevas características que también se encuentra en el 4 de .NET Framework. Se trata de la segunda versión del marco de trabajo de los servicios de datos. Visite blogs.msdn.com/astoriateam/archive/2010/01/27/data-services-update-for-net-3-5-sp1-available-for-download.aspx de , donde encontrará una descripción y un vínculo para descargar.

El marco de trabajo de servicios de WCF de datos no es sólo un protocolo para aplicaciones RIA. También se ha diseñado para los desarrolladores de servicios de alto nivel y tiene muchas características de ese recurso, como, por ejemplo, los límites de paginación del servidor, almacenamiento en caché de soporte técnico, servicios sin estado, HTTP soporte técnico y un modelo de proveedor conectable de transmisión por secuencias. Observe las nuevas características que suelen ser de más importantes para los desarrolladores de RIA Let’s.

Una de las características principales desea expresados después la versión inicial de la capacidad de solicitar el número de entidades en un conjunto de clientes. La nueva característica de recuento de “ ” resuelve esas necesidades con dos partes. En primer lugar, le permite solicitar únicamente el recuento, es decir, el número de valores que se devolverá una consulta. En segundo lugar, agrega una opción de consulta que le indica al servicio que incluyen un recuento del número total de las entidades en un conjunto cuando el resultado de consulta es una parcial establecido (por ejemplo, cuando está habilitada la paginación del servidor).

Para mejorar la experiencia al enlazar datos desde un servicio OData, un nuevo tipo, DataServiceCollection, se ha agregado a la biblioteca de cliente de servicios de WCF de datos. Implican en los elementos que contiene (mediante el uso de las interfaces de INotifyPropertyChanged y INotifyCollectionChanged) el seguimiento de cambios. Cuando se enlaza a un control, un control DataGrid en Silverlight, por ejemplo, realizará el seguimiento de los cambios realizados a los objetos y a la propia colección. Esta nueva colección simplifica en gran medida el proceso de creación de los clientes de OData con un componente de interfaz.

Otra característica solicitado con frecuencia era la capacidad para proyectar un subconjunto de las propiedades de una entidad que se ha devuelto un resultado de consulta. Soporte técnico LINQ se ha agregado a través de la instrucción Select de LINQ para este. Esto tiene dos ventajas: Reduce el tamaño de las respuestas HTTP a las consultas y reduce el consumo de memoria de los objetos de cliente. Esto puede resultar especialmente útil cuando está desarrollando una aplicación de cliente con respecto a un servicio no es el propietario y en el que cada entidad puede tener muchas propiedades de ningún interés para el cliente. En este artículo, mostraré cómo trabajar con un servicio disponible públicamente grande con muchas entidades con numerosas propiedades de cada entidad. Las proyecciones será útiles en el ejemplo porque incluye sólo una pocas propiedades necesarias en una sola entidad.

Para ayudarle a comprender el valor del ecosistema OData, vamos a crear una aplicación Web que permite a los visitantes a explorar el sitio de mi espacio ficticio de la compañía, Contoso, Ltd. para ver los listados de las propiedades que administra.

Datos relacionales

El origen de datos principal de la aplicación del selector para contoso.com principal es una base de datos de SQL Server que contiene información acerca de todas las propiedades que es la administración de la empresa y todos los anuncios (actuales y vendidos previamente) que se publicó para esas propiedades.

Desde la publicación de servicios de WCF de datos y ADO.NET Entity Framework en el Service Pack 1 de .NET Framework 3.5, ha sido fácil exponer una base de datos relacional como un OData de alimentación. Todo lo que se necesita es un modelo de Entity Framework que se crean a través de los datos relacionales. Un suministro de OData está basado en HTTP, por lo que necesita un sitio Web o servicio Web para alojar el servicio.

Para crear el OData avance a través de los datos relacionales, el primer paso es crear una aplicación ASP.NET Web en Visual Studio de 2010 para alojar el servicio de OData. En Visual Studio, seleccione archivo | nuevo | proyecto | aplicación Web ASP.NET. Se creará el esqueleto de un servicio Web que se puede utilizar para alojar el suministro de OData.

Después de crear y configurar el servicio Web, vamos a crear el modelo de datos de Entity Framework que expondrá el suministro de OData. Visual Studio ofrece esta sencilla mediante el Asistente para agregar nuevo elemento, que le permite generar automáticamente un modelo de una base de datos. La figura 1, se muestra un modelo de datos sencillo creado con el Asistente para agregar nuevo elemento a través de los datos de SQL Server que contiene las propiedades y los programas administrados por Contoso.

image: The Entity Framework Data Model for the Relational Data
Figura 1 del modelo de Entity Framework Data para los datos relacionales

Ahora let’s crear un servicio de datos de WCF que exponga este modelo de datos como una fuente OData. Visual Studio también facilita esta sencilla con la opción de servicio de WCF de datos en el Asistente para agregar nuevo elemento. Cuando se selecciona esta opción, Visual Studio proporciona un archivo de código (en este ejemplo el archivo se denomina Listings.svc.cs) que se utiliza para configurar el servicio de datos.

El código de de figura 2 muestra cómo definir un servicio de WCF de datos. La clase de la lista de programas es la clase de servicio que expone el servicio de datos, e implementa la DataService genérico <T>. El tipo utilizado para definir la DataService <T> en de figura 2 es el tipo de ListingsEntities, que es el contexto de Entity Framework que se creó en de figura 1. Como esta clase aceptará un contexto de Entity Framework, se trata de una forma rápida y sencilla para obtener un servicio de datos de WCF que expone los datos relacionales de funcionamiento. La clase DataService no está limita a sólo trabajan a través de los contextos de Entity Framework, sin embargo, clase 
the aceptará cualquier colección de objetos CLR que implementa la interfaz IQueryable. En el 4 de .NET Framework, se ha agregado un nuevo modelo de proveedor personalizado para los servicios de datos de WCF que permite a un servicio que se va a crear a través de prácticamente cualquier origen de datos.

La figura 2 de definición del servicio de datos WCF

// 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;
  }
}

Busque Let’s más de cerca qué más hace el método InitalizeService en de figura 2.El método es una llamada a la SetEntitySetAccessRule para usar cualquiera de los conjuntos de entidades que se expondrá el servicio y la configuración de los derechos de acceso a AllRead.Esto indica que el servicio para que ambos conjuntos de entidades completamente legibles, pero no permitir que las inserciones, eliminaciones o actualizaciones.Se trata de una excelente manera de controlar el acceso al servicio.Servicios de WCF de datos también son compatibles con los métodos llamados interceptores de consultas que permitir que el autor del servicio configurar el control de acceso concreto para el servicio en función del conjunto por entidad.Establecer el archivo Listings.svc como la página de inicio del proyecto y ejecutar el proyecto.Se abrirá una ventana del explorador y se muestre el documento de servicio, como se muestra en de figura 3.

image: Service Document for the SharePoint SiteLa figura 3 del documento de servicio para el sitio de SharePoint

Convenciones de URI OData

El documento de servicio enumera los conjuntos de entidades que exponen el servicio.Recuerde que puede tener acceso a los recursos de este servicio mediante la sintaxis URI eficaz definida como parte del protocolo OData opcional.Let’s, eche un vistazo rápido a la sintaxis de URI para este servicio.Para obtener acceso a una fuente para cada conjunto de entidades, anexa el nombre de la entidad que se establece el URI base para el servicio; por ejemplo, http://myhost/Listings.svc/Properties tendría el conjunto de direcciones de entidades en el conjunto de propiedades de entidades.

También es posible tratar una entidad determinada por separado, utilizando el valor de la clave; el identificador URI http://myhost/ Listings.svc/Properties(0) debería tratar la propiedad con el identificador = 0.Dirección una relación de este tipo de entidad a otra entidad o conjunto de entidades, si el nombre de la relación se agrega al final de la dirección URI, por lo que http://myhost/ Listings.svc/Properties(0)/Listings se obtiene acceso a la del conjunto de anuncios asociados con la entidad de la propiedad con el identificador = 0.Con esta sintaxis, es posible desplazarse por todos los niveles de las relaciones.

La sintaxis de URI también define una serie de opciones de consulta que se pueden anexar a un identificador URI para modificar la consulta de base de alguna manera, y cada opción de consulta se define como un par nombre/valor.Por ejemplo, si se anexa a la parte superior de consulta de opción $ = 10, restringir la consulta sólo los 10 primeros las entradas en el resultado.La figura 4 enumera todas las opciones de consulta disponibles en la sintaxis de URI.

La figura 4 de Opciones de consulta OData

parte superior de $ = n Restringe la consulta a las entidades de n primeros.
$ skip = n Omite las entidades de n primeros en el conjunto.
$ inlinecount = allpages El recuento de todas las entidades del conjunto se incluye en el resultado.
$ filter = <expression> Se puede suministrar una expresión para restringir los resultados devueltos por la consulta (ejemplo: $ filter = eq estado ‘ disponible ’ restringe los resultados a las entidades que tienen una propiedad de estado con el valor “ disponible ”).
$ orderby = <expression> Ordena los resultados por un conjunto de propiedades de la entidad
Seleccione $ = <expression> Especifica un subconjunto de las propiedades de la entidad que se va a devolver.
formato de $ Especifica el formato de la fuente que se va a devolver (ATOM o JSON).Esta opción no se admite en los servicios de datos de WCF.

Exponer datos de SharePoint

En la sección anterior he mostrado cómo exponer los datos almacenados en la base de datos relacional, la propiedad y la información de anuncio para el sitio Web de bienes raíces.Let’s que también hay información acerca de los agentes de la propiedad real que se venden las propiedades, pero que los datos se almacenan en un sitio de SharePoint.Microsoft SharePoint 2010 tiene la posibilidad de exponer todas las listas y documentos incluidos en estas listas como una fuente OData.Esto es ideal para los sitios de inmobiliarias, porque significa que la información del agente que han introducido los empleados de la compañía está disponible como un OData salto que se pueden incluir en la aplicación de anuncios que estoy construyendo.Los usuarios que tienen los procesos mediante la interfaz de SharePoint para insertar y actualizar estos datos no deben cambiar su flujo de trabajo para adaptarse a la aplicación.Los datos introducidos en el sitio de SharePoint de la compañía están disponibles en tiempo real para la aplicación de la lista de programas que se va a crear.

La figura 5 muestra el portal de SharePoint simple los agentes de espacio que se utilizan para registrar y actualizar su información de contacto.

image: SharePoint Site for Agent InformationLa figura 5 del Sitio de SharePoint para la información del agente

Cuando se instala la actualización de servicios de datos de ADO.NET para el Service Pack 1 de .NET Framework 3.5 en el sistema de SharePoint, un nuevo extremo HTTP se convierte en disponible para cada sitio que expone los datos de lista como una fuente de OData.Debido a que se tiene acceso a una fuente OData mediante HTTP, se puede examinar utilizando sólo Internet Explorer.La figura 6, se muestra la fuente de la lista de agentes en SharePoint.

image: Agents Feed from the SharePoint Agent ServiceLa figura 6 de fuente de los agentes del servicio de agente de SharePoint

Consume datos de referencia de OGDI

De forma predeterminada, un suministro de OData devuelve una representación de ATOM en la fuente y, cuando se tiene acceso desde un explorador Web, el resultado será una fuente de ATOM.Si se cambia el encabezado de aceptación de la solicitud en “ application/json ”, los resultados serán los mismos datos como una fuente de JSON.

La fuente en del 6 de la figura se inicia con un elemento de <feed> que representa un conjunto de entidades.Dentro de cada fuente es un conjunto de elementos de <entry>, cada uno de los cuales representa una sola entidad en la fuente (los primeros elementos de tres entrada se contraen para que todo el suministro esté visible en una pantalla).

En este ejemplo, la entidad tiene un símbolo (token) de simultaneidad definido en él; por tanto, cada entidad de la fuente tiene una propiedad de etag en él.El etag es el símbolo (token) utilizado por el servicio de datos para exigir una comprobación de concurrencia cuando se realiza un cambio en la entidad solicitada.Cada entidad, con una etiqueta de <entry> consta de un conjunto de vínculos que contienen ambos el vínculo que se utilizará cuando se edita la entidad y las relaciones de la entidad.Cada vínculo de relación apunta en otra o a un conjunto de entidades (se denominan propiedades de referencia y exploración, respectivamente).Cada elemento <entry> también 
includes un elemento <m:properties> que contiene las propiedades de tipos primitivos y complejo de la entidad; los valores de propiedades compuestos por el nombre de la propiedad de la entidad y el valor para dicha propiedad.

La iniciativa de datos de gobierno abrir (OGDI) es un servicio basado en la plataforma de Microsoft Windows Azure que facilita las agencias gubernamentales publicar una amplia variedad de datos públicos.El proyecto OGDI proporciona un starter kit que se puede utilizar por organismos gubernamentales para exponer sus datos.Por ejemplo, la ciudad de Edmonton ha adoptado el starter kit para exponer sus datos de gobierno, y un servicio en ogdisdk.cloudapp.net de tiene un conjunto de datos con una gran variedad de datos sobre el área de Washington, D.C..Otro ejemplo es el nombre de código de Microsoft “ Dallas ” proyecto que tiene como objetivo para que sea sencillo para cualquiera que disponga de un conjunto de datos para exponer los datos como un servicio Web.Este proyecto también se basa en la plataforma Windows Azure y expone los datos mediante OData.Éstos son algunos ejemplos de servicios de alto nivel que exponen conjuntos de datos de referencia de gran tamaño que pueden consumir aún más las aplicaciones Web.Tal como explicaré, cuando estos servicios exponen sus datos mediante OData, resulta sencillo consumir datos desde una gran variedad de aplicaciones.

Como se explicó, el sitio Web de OGDI presenta datos públicamente disponibles sobre el área de Washington, D.C..Aplicación de bienes inmuebles de Contoso se utiliza para examinar los anuncios en esa zona y sería útil para los usuarios tengan disponible parte de esta referencia datos sobre el área alrededor de una propiedad determinada cuando se muestra.Al crear el cliente de la aplicación de ejemplo, mostraré cómo puede incluir el OData alimentación desde el sitio Web de OGDI como uno de los orígenes de datos de la aplicación.

Productores de otros OData

Hasta ahora he mostrado algunos ejemplos de consumo de datos de SQL Server, SharePoint y un servicio de OData genérico en el Web, pero existen más opciones.La plataforma de Windows Azure basada en la nube que hay un servicio de la tabla que expone datos almacenan en las tablas de Azure de Windows y la API para que esto se ha creado mediante OData.Como se ha mencionado, el proyecto de Microsoft de Dallas es un mercado de datos para buscar y consultar los datos expuestos por el servicio de Dallas, y este servicio expone sus datos mediante el protocolo OData.Los productores de OData no sólo se limita a productos de Microsoft o bien; IBM ha anunciado que su producto 7.0 de escala de la extrema WebSphere ahora admite el protocolo OData recientemente.

Cliente de Silverlight

Inmobiliaria Buscador de aplicación Contoso tiene ahora un servicio ASP.NET Web que expone los datos relacionales en SQL Server acerca de los anuncios de bienes inmuebles y propiedades que administra la compañía, un sitio de SharePoint que se utiliza para administrar los datos acerca de los agentes de la compañía; y un servicio Web que expone los datos acerca de la región que rodea a las propiedades del gobierno que la empresa está anunciando.Es necesario reunir todos estos orígenes en una aplicación de Silverlight que puede trabajar con estos datos de forma significativa.

En el 3 de Silverlight, una biblioteca de cliente de servicios de WCF de datos se incluye en el SDK de Silverlight que facilita a las aplicaciones de Silverlight para comunicarse con un servicio que sea compatible con OData.Para ello, en Visual Studio en un proyecto de Silverlight, haga clic en el proyecto y seleccione Agregar referencia de servicio.Esto le guiará a través del proceso de creación de una referencia de servicio.La entrada principal para una referencia de servicio es el identificador URI del servicio que se hace referencia de la aplicación de Silverlight.La figura 7, se muestra un ejemplo de agregar una referencia de servicio para el servicio de ejemplo OGDI.

image: Add Service Reference for the OGDI Sample ServiceLa figura 7 de agrega una referencia de servicio para el servicio de ejemplo OGDI

El Asistente para la referencia de servicio, crea una clase de contexto de cliente que se utiliza para interactuar con el servicio de datos.El contexto de cliente abstrae de los detalles del trabajo con HTTP y los identificadores URI del modelo de programación de cliente y permite al desarrollador cliente piense sólo en las clases de C# y XAML.El contexto de cliente también incluye una implementación del proveedor LINQ y, por tanto, se admiten las consultas LINQ en el servidor proxy.El Asistente para agregar una referencia de servicio también generará un conjunto de clases de proxy de cliente que reflejan los tipos expuestos por el servicio de referencia.Después de crear la referencia de servicio OGDI, crearé también una referencia de servicio para servicios de SharePoint y los anuncios que se ha creado.Este código muestra cómo crear los contextos que se utilizan para interactuar con los tres servicios 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));

La figura 8, se muestra el esquema de Silverlight inmobiliaria Buscador de inicio de aplicación. La aplicación se alojará en SharePoint para que esté fácilmente disponible para los usuarios existentes que están acostumbrados a trabajar en el entorno de SharePoint.

image: The Contoso Home Finder
Figura 8 el selector de la página principal de Contoso

La figura 9 contiene el código para consultar el servicio de anuncios y enlaza el resultado a la cuadrícula en la parte superior de la aplicación de inicio del selector de Silverlight.

La figura 9 de la creación de los contextos de proxy de 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);
}

El código de de figura 9 crea un DataServiceCollection que es un conjunto de cambios y se enlaza la colección a la propiedad ItemsSource de la cuadrícula principal de programas. Debido a esta colección implementa el control de cambios, los cambios realizados en los elementos de la cuadrícula se reflejarán automáticamente en las entidades de la colección de listas. Pueden conservar los cambios en la cuadrícula para el servicio llamando al método BeginSaveChanges en el contexto del servicio de anuncios.

En Silverlight, todas las llamadas de red se realizan de forma asincrónica, por lo que las operaciones con respecto a un servicio mediante la biblioteca de cliente de servicios de datos de WCF implica que realiza la llamada inicial a la operación y, a continuación, escribir un método de devolución de llamada independiente a la que se pasa al método para controlar el resultado de la llamada asincrónica. Para mejorar este asincrónico, se agrega un método a la clase DataServiceCollection, LoadAsync, que realiza todas las tareas de control de la función de devolución de llamada asincrónica y cargar los resultados de la colección.

En la figura 9 código, la colección está enlazada a una cuadrícula antes de que se realiza la llamada LoadAsync, y no se cargan los valores en la colección hasta que finalice la llamada asincrónica. La colección provoca los eventos de cambio de colección cuando los resultados se devuelven desde el servicio y la cuadrícula se capturar los eventos y mostrar los resultados de una vez finalizada la llamada asincrónica.

Cuando se selecciona un anuncio de la cuadrícula de datos, el sitio de SharePoint debe consultarse para obtener la información acerca del agente de administración de esa lista. En esta arquitectura de aplicación, una segunda consulta es necesario porque los orígenes de datos para el tipo de anuncio y el tipo de agente son independientes y no hay ninguna relación explícita entre los dos (si es una persona que piensa en lo que respecta a modelos, en este ejemplo incluye dos modelos totalmente independientes y la relación entre los modelos es un artificial uno creado y exigido por el cliente).

La figura 10, se muestra cómo se consulta el servicio SharePoint de la entidad de agente, recibe el nombre del agente. Una secuencia de código se utiliza para consultar los datos OGDI para las estadísticas del entorno en el gráfico en la parte inferior de la página de inicio Finder. El código hasta este punto, muestra sólo las funciones de consulta de cliente de Silverlight, pero el cliente no se limita sólo a las consultas, que tiene el amplio conjunto de funciones de escritura los cambios en el servicio del cliente.

La figura 10 de ejecución de una consulta así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 en PowerPivot

PowerPivot es una nueva herramienta de inteligencia de negocio de la memoria que se entrega como un complemento para Microsoft Excel 2010, visite powerpivot.com para obtener más información. La herramienta proporciona compatibilidad para la importación de grandes conjuntos de datos de un origen de datos y realizar análisis de datos complejos y generación de informes. PowerPivot puede importar datos de un número de diferentes orígenes de datos, incluidos directamente desde una fuente de OData. Desde fuentes de datos de opción del PowerPivot (que se muestra en de figura 11), se acepta un extremo de servicio OData como la ubicación de la fuente para importar.

image: PowerPivot Imports from an OData Feed
La figura 11 Imports de PowerPivot desde una fuente OData

La figura 12 muestra un gráfico de resumen de estadísticas de delitos de suministro de datos de Washington, D.C., de los OGDI.

image: PowerPivot Chart from OData Feed
La figura 12 del Gráfico de PowerPivot de alimentación OData

El gráfico de de figura 12, realizadas con el mismo conjunto de datos que la aplicación de espacio en el ejemplo anterior, muestra un resumen de todos los datos para cada distrito. He animo a descargar PowerPivot para Excel 2010 e importar datos desde el sitio OGDI en ogdi.cloudapp.net/v1/dc de y véalo por sí mismo la rapidez con que se va a realizar el análisis de datos enriquecidos a través de este tipo de datos.

El visualizador de protocolo de datos abierta

El servicio de datos OGDI es esencialmente una “ caja negra ” para un desarrollador externo que se crea una aplicación que consume los datos expuestos por el servicio. Por suerte, el servicio OGDI expone sus datos mediante el protocolo de OData, de modo que no es necesario saber nada acerca de los detalles internos del servicio para interactuar con él. El modelo de programación para el servicio es el protocolo OData. El extremo de servicio describe la forma de los datos y, tal como he mostrado en la sección anterior, eso es todo lo que necesita para interactuar con el servicio. Sin embargo, con frecuencia resulta útil ver la forma de los datos en el servicio y obtener una mejor comprensión de las relaciones entre las partes del servicio. Se creó el visualizador de protocolo abierto de datos sólo a tal efecto. Está disponible desde las herramientas | Administrador de la extensión de elemento de menú en Visual Studio de 2010. La figura 13 muestra dos vistas desde el visualizador que muestran la estructura del servicio OGDI.

La vista de planta en de figura 13 muestra todo el servicio, la vista de la parte inferior se aplica el zoom para mostrar sólo cuatro de las casillas en la pantalla. El visualizador representa los conjuntos de entidades como cuadros y las relaciones entre entidades, como las líneas que conectan los cuadros. No está claro de la vista de planta en de figura 13 que el servicio OGDI es totalmente plano y no contiene relaciones, ya que hay líneas de conexión entre los cuadros. Esto es sólo una características del servicio OGDI y no es habitual en la mayoría de los servicios de OData. La vista de la parte inferior muestra una vista en primer plano de los cuatro de la entidad que se establece en el servicio. Acaba de examinar la vista, puede determinar que el servicio expone datos acerca de las estaciones de incendios, asistencia de escuelas primarias, diálisis clínicas y ubicaciones de gobierno, así como las propiedades y las claves para cada uno de esos tipos.

image: Open Data Visualizer Views of the OGDI Sample Service
La figura 13 de abrir las vistas del visualizador de datos del servicio de ejemplo OGDI

Más información

En este artículo se presenta el protocolo de datos abierto y el ecosistema de que se ha generado alrededor de él, incluidos el marco de trabajo de servicios de datos de WCF. Para obtener más información, visite el sitio Web de protocolo de datos abierta en odata.org de . Para obtener más información sobre los servicios de datos de WCF, consulte msdn.microsoft.com/data/bb931106 de o en el blog de servicios de datos de WCF en blogs.msdn.com/astoriateam de .

Shayne Burgess es un administrador de programas en los datos y el grupo de definición de modelos de Microsoft, específicamente en los servicios de WCF de datos y el protocolo abiertos de datos. Burgess regularmente de blogs acerca de los servicios de datos de WCF team blog en blogs.msdn.com/b/astoriateamde .

Gracias a los siguientes expertos técnicos por su ayuda en la revisión de este artículo: Elisa Flasko y Mike Flasko