데이터 서비스 호스트(ADO.NET 데이터 서비스 프레임워크)
ADO.NET 데이터 서비스는 독립 실행형 네트워크 서비스가 아닙니다. ADO.NET 데이터 서비스는 네트워크 소켓에 바인딩되어 REST(Representational State Transfer) 진입점으로 들어오는 요청을 수신 대기하지 않습니다. 대신 ADO.NET 데이터 서비스는 WCF(Windows Communication Foundation)와 같이 핵심적인 서버 네트워킹 기능을 제공하는 환경에서 호스팅되는 구성 요소입니다. 호스트는 네트워크와의 직접적인 상호 작용을 처리하고 캐싱, 확장성 및 인증 모듈을 지원합니다.
ADO.NET 데이터 서비스는 특정 호스트 기반의 구현을 추상화한 일반적인 호스팅 인터페이스 IDataServiceHost를 정의합니다. 이러한 이유로 ADO.NET 데이터 서비스는 WCF, ASP.NET 및 IIS와 같이 서버측에 구현되는 사용자 지정 HTTP를 통해 다양한 호스트 환경에서 실행될 수 있습니다.
참고 ASP.NET 호스트를 사용할 경우 (:)과 (/) 같은 문자가 차단되며 이러한 문자를 사용하면 400 잘못된 요청 응답 코드가 발생합니다. 콜론(:)과 관련된 문제는 픽스를 설치하면 해결됩니다.
다음 단원의 예제에서는 ADO.NET 데이터 서비스가 다음과 같이 정의되었다고 가정합니다.
namespace MyDataService
{
public class MyAstoriaDataService :
DataService<NorthwindModel.NorthwindEntities>
{ // service implementation }
}
WCF(Windows Communication Foundation) 및 ASP.NET을 사용하여 ADO.NET 데이터 서비스 호스팅
ADO.NET 데이터 서비스는 ASP.NET 응용 프로그램 내의 WCF 끝점으로 호스팅될 수 있습니다. 이 구현에서는 ADO.NET 데이터 서비스의 네트워크 상호 작용을 WCF 및 ASP.NET에서 처리합니다.
ASP.NET 응용 프로그램 내에서 WCF에 ADO.NET 데이터 서비스를 호스팅하려면 다음과 같이 새 WCF 끝점을 정의하십시오.
새 WCF 서비스 끝점(.svc 파일)을 만듭니다.
ServiceHost 선언에서
Factory 특성 값은 System.Data.Services.DataServiceHostFactory여야 합니다.
Service 특성 값은 노출될 데이터 서비스의 정규화된 네임스페이스 클래스 이름이어야 합니다.
MyAstoriaDataService.svc:
<%@ ServiceHost Language="C#"
Factory="System.Data.Services.DataServiceHostFactory"
Service="MyAstoriaDataService.MyAstoriaDataService"%>
WCF(Windows Communication Foundation)를 사용하여 ADO.NET 데이터 서비스 호스팅
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 데이터 서비스 프레임워크)