다음을 통해 공유


ASP.NET 없이 WCF AJAX 서비스 만들기

WCF(Windows Communication Foundation) AJAX 서비스는 AJAX를 ASP.NET 필요 없이 JavaScript 사용 웹 페이지에서 액세스할 수 있습니다. 이 항목에서는 이러한 WCF 서비스를 만드는 방법을 설명합니다.

ASP.NET AJAX에서 WCF를 사용하는 방법에 대한 지침은 ASP.NET AJAX용 WCF 서비스 만들기를 참조하세요.

WCF AJAX 서비스를 만드는 데는 다음 세 가지 부분이 있습니다.

  • 브라우저에서 액세스할 수 있는 AJAX 엔드포인트 만들기

  • AJAX 호환 서비스 계약 만들기

  • WCF AJAX 서비스에 액세스

AJAX 엔드포인트 만들기

WCF 서비스에서 AJAX 지원을 사용하도록 설정하는 가장 기본적인 방법은 다음 예제와 같이 서비스와 연결된 .svc 파일에서 사용하는 WebServiceHostFactory 것입니다.

<%ServiceHost
    language=c#  
    Debug="true"  
    Service="Microsoft.Ajax.Samples.CityService"  
    Factory=System.ServiceModel.Activation.WebServiceHostFactory  
%>  

또는 구성을 사용하여 AJAX 엔드포인트를 추가할 수도 있습니다. 서비스 엔드포인트에 WebHttpBinding를 사용하고, 다음 코드 조각에 표시된 대로 WebHttpBehavior로 해당 엔드포인트를 구성하십시오.

<configuration>  
  <system.serviceModel>  
    <behaviors>  
      <endpointBehaviors>  
        <behavior name="AjaxBehavior">  
          <webHttp/>  
        </behavior>  
      </endpointBehaviors>  
    </behaviors>  
    <services>  
      <service name="Microsoft.Ajax.Samples.CityService">  
        <endpoint
          address="ajaxEndpoint"  
          behaviorConfiguration="AjaxBehavior"  
          binding="webHttpBinding"  
          contract="Microsoft.Ajax.Samples.ICityService" />  
      </service>  
    </services>  
  </system.serviceModel>  
</configuration>  

작업 예제는 JSON 및 XML을 사용하는 AJAX 서비스를 참조하세요.

AJAX-Compatible 서비스 계약 만들기

기본적으로 AJAX 엔드포인트를 통해 노출되는 서비스 계약은 XML 형식으로 데이터를 반환합니다. 또한 다음 예제와 같이 기본적으로 서비스 작업은 엔드포인트 주소와 작업 이름을 포함하는 URL에 대한 HTTP POST 요청을 통해 액세스할 수 있습니다.

[OperationContract]  
string[] GetCities(string firstLetters);  

이 작업은 http://serviceaddress/endpointaddress/GetCities에 HTTP POST를 사용하여 액세스할 수 있으며 XML 메시지를 반환합니다.

전체 웹 프로그래밍 모델을 사용하여 이러한 기본 측면을 사용자 지정할 수 있습니다. 예를 들어, WebGetAttributeWebInvokeAttribute 특성을 사용하여 작업이 응답하는 HTTP 동사를 제어할 수 있으며, 이러한 각 특성의 UriTemplate 속성을 사용하여 사용자 지정 URI를 지정할 수 있습니다. 자세한 내용은 WCF 웹 HTTP 프로그래밍 모델 항목을 참조하세요.

JSON 데이터 형식은 AJAX 서비스에서 자주 사용됩니다. JSON을 반환하는 작업을 만들려면 ResponseFormat 속성(또는 ResponseFormat 속성)을 Json로 설정합니다. Stand-Alone JSON Serialization 항목에서는 기본 제공 .NET 형식 및 데이터 계약 형식이 JSON에 매핑되는 방법을 보여 주세요.

일반적으로 JSON 요청 및 응답은 하나의 항목으로 구성됩니다. 이전 GetCities 작업의 경우 요청은 다음 문과 유사합니다.

"na"  

해당 요청에 대한 응답은 다음 문과 유사합니다.

["Nairobi", "Naples", "Nashville"]  

작업이 추가 매개 변수를 사용하는 경우 요청 스타일을 래핑하여 두 매개 변수를 단일 JSON 개체로 래핑해야 합니다. 이 스타일 JSON 메시지의 예는 다음 예제에 있습니다.

{"firstLetters": "na", "maxNumber": 2}  

다음 계약에서 이 메시지를 수락합니다.

[WebInvoke(BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat=WebMessageFormat.Json)]  
[OperationContract]  
string[] GetCities(string firstLetters, int maxNumber);  

AJAX 서비스 액세스

WCF AJAX 엔드포인트는 항상 JSON 및 XML 요청을 모두 수락합니다.

콘텐츠 형식이 "application/json"인 HTTP POST 요청은 JSON으로 처리되고 XML(예: "text/xml")을 나타내는 콘텐츠 형식이 있는 요청은 XML로 처리됩니다.

HTTP GET 요청에는 URL 자체의 모든 요청 매개 변수가 포함됩니다.

엔드포인트에 대한 HTTP 요청을 만드는 방법은 사용자가 결정해야 합니다. 또한 사용자는 요청 본문을 형성하는 JSON 생성을 완전히 제어할 수 있습니다. JavaScript에서 요청을 만드는 예제는 JSON 및 XML을 사용하여 AJAX 서비스를 참조하세요.