Partager via


Hébergement du service de données (WCF Data Services)

En utilisant Services de données WCF, vous pouvez créer un service qui expose des données sous forme de flux Protocole OData (Open Data). Ce service de données est défini comme une classe qui hérite de DataService<T>. Cette classe fournit les fonctionnalités requises pour traiter les messages de demande, exécuter des mises à jour par rapport à la source de données, et générer des messages de réponses, comme demandé par OData. Toutefois, un service de données ne peut pas effectuer la liaison et écouter des requêtes HTTP entrantes sur un socket de réseau. Pour ces fonctionnalités requises, le service de données s'appuie sur un composant d'hébergement.

L'hôte du service de données effectue les tâches suivantes pour le compte du service de données :

  • Écoute les demandes et les transmet au service de données.

  • Crée une instance du service de données pour chaque demande.

  • Demande au service de données de traiter la requête entrante.

  • Envoie la réponse de la part du service de données.

Pour simplifier l'hébergement d'un service de données, Services de données WCF est conçu pour s'intégrer avec Windows Communication Foundation (WCF). Le service de données fournit une implémentation WCF par défaut qui fait office d'hôte de service de données dans une application ASP.NET. Vous pouvez donc héberger un service de données de l'une des façons suivantes :

  • Dans une application ASP.NET.

  • Dans une application managée qui prend en charge des services WCF auto-hébergés.

  • Dans un autre hôte de service de données personnalisé.

Hébergement de services de données dans une application ASP.NET

Lorsque vous utilisez la boîte de dialogue Ajouter un nouvel élément de Visual Studio pour définir un service de données dans une application ASP.NET, l'outil génère deux nouveaux fichiers dans le projet. Le premier fichier a une extension .svc et indique à l'exécution WCF comment instancier le service de données. Voici un exemple de ce fichier pour le service de données d'exemple Northwind créé lorsque vous effectuez le démarrage rapide :

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

Cette directive dit à l'application de créer l'hôte de service pour la classe de service de données nommée en utilisant la classe DataServiceHostFactory.

La page code-behind du fichier .svc contient la classe constituant l'implémentation du service de données lui-même, défini comme suit dans le cas de l'exemple de service de données Northwind :

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

Puisqu'un service de données se comporte comme un service WCF, le service de données s'intègre avec ASP.NET et suit le modèle de programmation Web WCF. Pour plus d'informations, consultez WCF Services and ASP.NET et Web Programming Model.

Services WCF auto-hébergés

Puisqu'il intègre une implémentation WCF, Services de données WCF peut auto-héberger un service de données sous forme de service WCF. Un service peut être auto-hébergé dans une application .NET Framework, par exemple une application console. La classe DataServiceHost, qui hérite de WebServiceHost, est utilisée pour instancier le service de données à une adresse spécifique.

L'auto-hébergement peut être utilisé pour le développement et les tests parce qu'elle permet de simplifier le déploiement et le dépannage du service. Toutefois, ce type d'hébergement ne comporte pas les fonctionnalités d'hébergement et de gestion avancées fournies par ASP.NET ou Internet Information Services (IIS). Pour plus d'informations, consultez Hosting in a Managed Application.

Définition d'un hôte de service de données personnalisé

Dans les cas où l'implémentation hôte de WCF est trop restrictive, vous pouvez également définir un hôte personnalisé pour un service de données. Toute classe qui implémente l'interface IDataServiceHost peut être utilisée comme hôte de réseau pour un service de données. Un hôte personnalisé doit implémenter l'interface IDataServiceHost et pouvoir gérer les responsabilités de base suivantes de l'hôte de service de données :

  • Fournir le service de données avec le chemin d'accès racine du service.

  • Traiter les informations d'en-tête de demande et de réponse à l'implémentation appropriée du membre IDataServiceHost.

  • Gérer les exceptions déclenchées par le service de données.

  • Valider les paramètres de la chaîne de requête.

Voir aussi

Concepts

Exposition de vos données comme un service OData (WCF Data Services)

Configuration du service de données (WCF Data Services)

Autres ressources

Services de données (WCF Data Services)