Поделиться через


Узел службы данных (платформа служб данных ADO.NET)

Службы данных ADO.NET не являются автономными сетевыми службами. Служба данных ADO.NET не привязывается к сетевому сокету, ожидая входящих запросов к своим входным точкам REST. Напротив, служба данных ADO.NET — это компонент, размещаемый в такой среде, как, например, Windows Communication Foundation (WCF), которая обеспечивает базовые сетевые серверные функции. Узел отвечает за непосредственное взаимодействие с сетью и поддерживает модули кэширования, масштабируемости и проверки подлинности.

Службы данных ADO.NET определяют универсальный интерфейс размещения IDataServiceHost, абстрагирующий реализацию от конкретных узлов размещения. Это позволяет запускать службы данных ADO.NET в самых разных средах размещения, например, в пользовательских реализациях серверной части с использованием HTTP, таких как WCF, ASP.NET и IIS.

Примечание   При использовании узла ASP.NET знаки (:) и (/) заблокированы — их применение приводит к появлению кода ответа «400 Неверный запрос». Установка исправления устраняет проблему в случае двоеточия (:).

В примерах следующих подразделов предполагается, что службы данных ADO.NET определены следующим образом:

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

Размещение службы данных ADO.NET с помощью Windows Communication Foundation (WCF) и ASP.NET

Службу данных ADO.NET можно разместить как конечную точку WCF внутри приложения ASP.NET. В такой реализации WCF и ASP.NET управляют сетевым взаимодействием для службы данных ADO.NET.

Для размещения службы данных ADO.NET в WCF внутри приложения ASP.NET следует определить новую конечную точку WCF следующим образом:

  1. Создайте новую конечную точку службы WCF; это файл .svc.

  2. В объявлении ServiceHost:

    • Значение атрибута Factory должно быть равно System.Data.Services.DataServiceHostFactory.

    • Значение атрибута Service должно быть полным именем класса пространства имен реализуемой службы данных.

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

Размещение службы данных ADO.NET с помощью Windows Communication Foundation (WCF)

Службы данных ADO.NET можно размещать с помощью классов WCF ServiceHost или WebServiceHost. В следующем примере показана служба данных, использующая класс 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();
        }
    }
}

См. также

Понятия

Модель данных (платформа служб данных ADO.NET)
Краткое руководство по службе данных (платформа служб данных ADO.NET)