Hôte de Data Service (ADO.NET Data Services Framework)

Les services ADO.NET Data Services ne sont pas des services réseau autonomes . ADO.NET Data Service n'est pas lié à et n'écoute pas sur un socket réseau pour les demandes entrantes vers ses points d'entrée REST (representational state transfer). Au lieu de cela, ADO.NET Data Service est un composant hébergé dans un environnement tel que WCF (Windows Communication Foundation) qui fournit des fonctions réseau du serveur de base. L'hôte gère les interactions directes avec le réseau et prend en charge la mise en cache, l'évolutivité et les modules d'authentification.

ADO.NET Data Services définit une interface d'hébergement générique IDataServiceHost qui extrait son implémentation à partir d'un hôte spécifique. Cela permet à ADO.NET Data Services de s'exécuter dans une plage d'environnements hôtes, à partir des implémentations HTTP personnalisées côté serveur telles que WCF, ASP.NET et IIS.

Remarque   Lors de l'utilisation d'un hôte ASP.NET, les caractères (:) et (/) sont bloqués et provoquent l'envoi d'un code de réponse 400 (Demande incorrecte) si utilisé. L'installation de Fix résout le problème pour les deux points (:).

Les exemples dans les sections suivantes supposent qu'un service ADO.NET Data Service est défini de la façon suivante :

namespace MyDataService 
{
    public class MyAstoriaDataService :
              DataService<NorthwindModel.NorthwindEntities> 
    { // service implementation } 
}

Hébergement d'un service ADO.NET Data Service en utilisant Windows Communication Foundation (WCF) et ASP.NET

ADO.NET Data Services peut être hébergé comme un point de terminaison de WCF dans une application ASP.NET. Dans cette implémentation, WCF et ASP.NET gèrent l'interaction réseau pour un ADO.NET Data Service.

Pour héberger un service ADO.NET Data Service dans WCF dans une application ASP.NET, définissez un nouveau point de terminaison de WCF de la façon suivante :

  1. Créez un nouveau point de terminaison du service WCF ; il s'agit du fichier .svc.

  2. Dans la déclaration ServiceHost :

    • La valeur de l'attribut Factory doit être System.Data.Services.DataServiceHostFactory.

    • La valeur de l'attribut Service doit être le nom de classe de l'espace de noms complet du service de données à exposer.

MyAstoriaDataService.svc:
<%@ ServiceHost Language="C#"
 Factory="System.Data.Services.DataServiceHostFactory"
 Service="MyAstoriaDataService.MyAstoriaDataService"%> 

Hébergement d'un service ADO.NET Data Service en utilisant Windows Communication Foundation (WCF)

ADO.NET Data Services peut être hébergé en utilisant WCF ServiceHost ou les classes de WebServiceHost. L'exemple ci-dessous montre un service de données utilisant la classe de WebServiceHost.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel.Web;
using System.Data.Services;

namespace SelfHost
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri baseAddress =
                  new Uri("https://localhost:8000/dataservice");
            HostWithWebServiceHost(baseAddress);

            Console.WriteLine(
                 "Host running - https://localhost:8000/dataservice");
            Console.WriteLine("Press any key to shut down service...");

            Console.ReadKey();
            host.Close();
        }

        private static void HostWithWebServiceHost(Uri baseAddress)
        {

            WebServiceHost host = new WebServiceHost(typeof(MyAstoriaDataService), 
                                      baseAddress);
            WebHttpBinding binding = new WebHttpBinding();
            host.AddServiceEndpoint(
               typeof(System.Data.Services.IRequestHandler), binding, 
               "WebServiceHost");
            host.Open();
        }
    }
}

Voir aussi

Concepts

Modèle de données (ADO.NET Data Services Framework)
Démarrage rapide de Data Service (ADO.NET Data Services Framework)