Compartir a través de


Hospedar el servicio de datos (WCF Data Services)

Mediante Servicios de datos de Microsoft WCF, puede crear un servicio que exponga datos como una fuente de Open Data Protocol (OData). Este servicio de datos se define como una clase que hereda de DataService<T>. Esta clase proporciona la funcionalidad necesaria para procesar mensajes de solicitud, realizar actualizaciones en el origen de datos y generar mensajes de respuestas, como requiere OData. Sin embargo, un servicio de datos no puede enlazar con un socket de red y realizar escuchas en él para solicitudes HTTP de entrada. Para esta funcionalidad necesaria, el servicio de datos se basa en un componente de hospedaje.

El host del servicio de datos realiza las siguientes tareas en nombre del servicio de datos:

  • Realiza escuchas de las solicitudes y las enruta al servicio de datos.

  • Crea una instancia del servicio de datos para cada solicitud.

  • Solicita al servicio de datos que procese la solicitud entrante.

  • Envía la respuesta en nombre del servicio de datos.

Para simplificar el hospedaje de un servicio de datos, Servicios de datos de Microsoft WCF está diseñado para integrarse con Windows Communication Foundation (WCF). El servicio de datos proporciona una implementación WCF predeterminada que actúa como host del servicio de datos en una aplicación ASP.NET. Por consiguiente, un servicio de datos se puede hospedar de una de las siguientes maneras:

  • En una aplicación ASP.NET.

  • En una aplicación administrada que admita servicios WCF autohospedados.

  • En algún otro host del servicio de datos personalizado.

Hospedar un servicio de datos en una aplicación ASP.NET

Cuando se usa el cuadro de diálogo Agregar nuevo elemento en Visual Studio para definir un servicio de datos en una aplicación ASP.NET, la herramienta genera dos nuevos archivos en el proyecto. El primer archivo tiene una extensión .svc e indica al tiempo de ejecución de WCF cómo crear instancias del servicio de datos. A continuación, se muestra un ejemplo de este archivo para el servicio de datos de ejemplo Northwind que se creó al completar el tutorial rápido:

<%@ ServiceHost Language="C#" 
    Factory="System.Data.Services.DataServiceHostFactory, 
            System.Data.Services, Version=4.0.0.0, 
            Culture=neutral, PublicKeyToken=b77a5c561934e089" 
    Service="NorthwindService.Northwind" %> 

Esta directiva indica a la aplicación que debe crear el host del servicio para la clase del servicio de datos con nombre utilizando la clase DataServiceHostFactory.

La página de codigos subyacente del archivo .svc contiene la clase que es la implementación del propio servicio de datos, el cual se define para el servicio de datos de ejemplo Northwind del siguiente modo:

Public Class Northwind
    Inherits DataService(Of NorthwindEntities)
public class Northwind : DataService<NorthwindEntities>

Dado que un servicio de datos se comporta como un servicio WCF, el servicio de datos se integra con ASP.NET y sigue el modelo de programación web de WCF. Para obtener más información, vea WCF Services and ASP.NET y Web Programming Model.

Servicios WCF autohospedados

Dado que incorpora una implementación WCF, Servicios de datos de Microsoft WCF admite el servicio de datos autohospedado como un servicio WCF. Un servicio puede hospedarse a sí mismo en cualquier aplicación .NET Framework, como una aplicación de consola. La clase DataServiceHost, que hereda de WebServiceHost, se utiliza para crear instancias del servicio de datos en una dirección concreta.

El autohospedaje se puede utilizar para el desarrollo y las pruebas porque facilita el despliegue y la solución de problemas del servicio. Sin embargo, este tipo de hospedaje no ofrece las características de administración y hospedaje avanzadas que proporciona ASP.NET o Internet Information Services (IIS). Para obtener más información, vea Hosting in a Managed Application.

Definir un host de servicio de datos personalizado

Para los casos en los que la implementación de un host de WCF sea demasiado restrictiva, se puede definir también un host personalizado para un servicio de datos. Cualquier clase que implemente la interfaz IDataServiceHost se puede utilizar como el host de red de un servicio de datos. Un host personalizado debe implementar la interfaz IDataServiceHost y ser capaz de controlar las siguientes responsabilidades básicas del host del servicio de datos:

  • Proporcionar la ruta de acceso raíz del servicio al servicio de datos.

  • Procesar la información de encabezados de respuesta y solicitud en la implementación de miembro de IDataServiceHost adecuada.

  • Controlar las excepciones iniciadas por el servicio de datos.

  • Validar parámetros en la cadena de consulta.

Vea también

Conceptos

Exponer los datos como un servicio de OData (WCF Data Services)

Configurar el servicio de datos (WCF Data Services)

Otros recursos

Servicio de datos (WCF Data Services)