방법: 구성을 사용하지 않고 ASP.NET AJAX 엔드포인트 추가
WCF(Windows Communication Foundation)를 통해 클라이언트 웹 사이트의 JavaScript에서 호출할 수 있는 ASP.NET AJAX 사용 엔드포인트를 노출하는 서비스를 만들 수 있습니다. 이와 같은 엔드포인트를 만들려면 다른 모든 WCF 엔드포인트에서처럼 구성 파일을 사용하거나 구성 요소가 필요하지 않은 메서드를 사용할 수 있습니다. 이 항목에서는 두 번째 접근 방법을 보여 줍니다.
구성 없이 ASP.NET AJAX 엔드포인트를 사용하여 서비스를 만들려면 서비스는 IIS(인터넷 정보 서비스)에 의해 호스팅되어야 합니다. 이 접근 방법을 사용하여 ASP.NET AJAX 엔드포인트를 활성화하려면 .svc 파일의 @ServiceHost 지시문에서 WebScriptServiceHostFactory를 Factory 매개 변수로 지정합니다. 이 사용자 지정 팩터리는 클라이언트 웹 사이트의 JavaScript에서 호출할 수 있도록 ASP.NET AJAX 엔드포인트를 자동으로 구성하는 구성 요소입니다.
작업 예제에 대해서는 구성을 사용하지 않는 AJAX 서비스를 참조하세요.
구성 요소를 사용하여 ASP.NET AJAX 엔드포인트를 구성하는 방법에 대한 개요는 방법: 구성을 사용하여 ASP.NET AJAX 엔드포인트 추가를 참조하세요.
기본 WCF 서비스를 만들려면
ServiceContractAttribute 특성으로 표시된 인터페이스를 사용하여 기본 WCF 서비스 계약을 정의합니다. 각 작업을 OperationContractAttribute로 표시합니다. Namespace 속성을 설정해야 합니다.
[ServiceContract(Namespace = "MyService")]] public interface ICalculator { [OperationContract] // This operation returns the sum of d1 and d2. double Add(double n1, double n2); //Other operations omitted… }
ICalculator
를 사용하여CalculatorService
서비스 계약을 구현합니다.public class CalculatorService : ICalculator { public double Add(double n1, double n2) { return n1 + n2; } //Other operations omitted…
네임스페이스 블록에
ICalculator
및CalculatorService
구현을 래핑하여 이러한 구현에 대한 네임스페이스를 정의합니다.Namespace Microsoft.Ajax.Samples { //Include the code for ICalculator and Calculator here. }
구성 없이 인터넷 정보 서비스에서 서비스를 호스팅하려면
애플리케이션에서 .svc 확장명이 있는 service라는 새 파일을 만듭니다. 서비스에 적절한 @ServiceHost 지시문 정보를 추가하여 이 파일을 편집합니다. @ServiceHost 지시문에서 WebScriptServiceHostFactory를 사용하여 ASP.NET AJAX 엔드포인트를 자동으로 구성하도록 지정합니다.
<%@ServiceHost language=c# Debug="true" Service="Microsoft.Ajax.Samples.CalculatorService" Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory %>
서비스를 빌드하고 클라이언트에서 호출합니다. 호출하면 IIS(인터넷 정보 서비스)가 해당 서비스를 활성화합니다. IIS에서 호스트하는 방법에 대한 자세한 내용은 방법: IIS에서 WCF 서비스 호스트를 참조하세요.
서비스를 호출하려면
- 엔드포인트는 .svc 파일을 기준으로 빈 주소에 구성됩니다. 따라서 서비스를 사용할 수 있으며, service.svc/<작업>으로 요청을 보내서 서비스를 호출할 수 있습니다. 예를 들어
Add
작업의 경우 service.svc/Add를 사용합니다. 서비스 URL을 ASP.NET AJAX Script Manager 컨트롤의 스크립트 컬렉션에 입력하여 사용할 수 있습니다. 예제에 대해서는 구성을 사용하지 않는 AJAX 서비스를 참조하세요.
예시
자동으로 구성된 엔드포인트는 기본 URL을 기준으로 비어 있는 주소에 생성됩니다. 또한 구성 파일을 추가하여 이 접근 방법으로 사용할 수 있습니다. 구성 파일에 엔드포인트 정의가 포함된 경우 이러한 엔드포인트는 자동으로 구성된 엔드포인트에 추가됩니다.
예를 들어, service.svc는 WebScriptServiceHostFactory를 사용하고 서비스 디렉터리에는 "soap" 상대 주소에서 BasicHttpBinding을 사용하여 동일한 서비스에 대해 엔드포인트를 정의하는 Web.config 파일이 포함되어 있습니다. 이 경우 서비스는 두 개의 엔드포인트를 포함합니다. 한 엔드포인트는 ASP.NET AJAX 요청에 응답하는 service.svc에 위치하고 다른 엔드포인트는 SOAP 요청에 응답하는 service.svc/soap에 위치합니다.
구성 파일이 비어 있는 상대 주소에 엔드포인트를 정의하고 WebScriptServiceHostFactory가 사용되는 경우 예외가 throw되어 서비스를 시작할 수 없습니다.
구성을 사용하여 자동으로 구성된 엔드포인트에서 설정을 수정할 수 없습니다. 판독기 할당량과 같은 설정을 수정해야 하는 경우 .svc 파일에서 WebScriptServiceHostFactory를 제거하고 엔드포인트에 대한 구성 항목을 만들어 구성을 사용하지 않는 접근 방법을 사용하지 말아야 합니다.
서비스를 사용하려면 ASP.NET 호환 모드가 필요합니다. 예를 들어, HttpContext 클래스 또는 ASP.NET 인증 메커니즘을 사용하는 경우 이 모드를 사용하도록 설정하려면 구성 파일이 필요합니다. 필요한 구성 요소는 <serviceHostingEnvironment> 요소이며 다음과 같이 추가되어야 합니다.
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> </system.serviceModel>
자세한 내용은 WCF 서비스 및 ASP.NET 항목을 참조하세요.
WebScriptServiceHostFactory 클래스가 ServiceHostFactory의 파생 클래스인 경우 서비스 호스트 팩터리 메커니즘에 대한 자세한 내용은 ServiceHostFactory를 사용하여 호스팅 확장 항목을 참조하세요.