Sdílet prostřednictvím


Datendiensthost (ADO.NET Data Services-Framework)

Bei ADO.NET Data Services handelt es sich nicht um eigenständige Netzwerkdienste. Ein ADO.NET Data Service wird nicht an ein Netzwerksocket gebunden und überwacht diesen nicht auf an den Representational State Transfer (REST)-Einstiegspunkten eingehende Anforderungen. Stattdessen handelt es sich bei einem ADO.NET Data Service um eine Komponente, die in einer Umgebung wie der Windows Communication Foundation (WCF) gehostet wird, die die grundlegenden Servernetzwerkfunktionen bereitstellt. Der Host übernimmt die direkte Interaktion mit dem Netzwerk und unterstützt das Zwischenspeichern, die Skalierbarkeit und die Authentifizierungsmodule.

In ADO.NET Data Services wird die generische Hostingschnittstelle IDataServiceHost definiert, die ihre Implementierung von einem bestimmten Host abstrahiert. Dadurch kann ADO.NET Data Services in verschiedenen Hostumgebungen von benutzerdefinierten serverseitigen HTTP-Implementierungen, wie z. B. WCF, ASP.NET und IIS, ausgeführt werden.

Hinweis   Bei der Verwendung eines ASP.NET-Hosts sind die Zeichen (:) und (/) gesperrt und führen gegebenenfalls zu einem Antwortcode "400 Bad Request". Durch eine Installation des Fixes kann das Problem mit dem Doppelpunkt (:) behoben werden.

Für die Beispiele in den folgenden Abschnitten wird ein ADO.NET Data Service folgendermaßen definiert:

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

Hosten eines ADO.NET Data Services mithilfe von Windows Communication Foundation (WCF) und ASP.NET

ADO.NET Data Services kann innerhalb einer ASP.NET-Anwendung als WCF-Endpunkt gehostet werden. In dieser Implementierung übernehmen WCF und ASP.NET die Netzwerkinteraktion eines ADO.NET Data Services.

Um einen ADO.NET Data Service in WCF innerhalb einer ASP.NET-Anwendung zu hosten, muss ein neuer WCF-Endpunkt wie folgt definiert werden:

  1. Erstellen Sie einen neuen WCF-Dienst-Endpunkt. Hierbei handelt es sich um die .svc-Datei.

  2. In der ServiceHost-Deklaration:

    • Der Wert des Attributs Factory muss System.Data.Services.DataServiceHostFactory sein.

    • Beim Wert des Service-Attributs muss es sich um den vollqualifizierten Namespace-Klassennamen des verfügbar zu machenden Datendiensts handeln.

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

Hosten eines ADO.NET Data Services mithilfe von Windows Communication Foundation (WCF)

ADO.NET Data Services kann mithilfe der WCF ServiceHost-Klasse oder der WebServiceHost-Klasse gehostet werden. Im folgenden Beispiel wurde die WebServiceHost-Klasse verwendet.

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();
        }
    }
}

Siehe auch

Konzepte

Datenmodell (ADO.NET Data Services-Framework)
Schnellstart von Datendiensten (ADO.NET Data Services-Framework)