Узел службы данных (платформа служб данных 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 следующим образом:
Создайте новую конечную точку службы WCF; это файл .svc.
В объявлении 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)