AJAX Service Using Complex Types 샘플
ComplexTypeAjaxService 샘플은 WCF(Windows Communication Foundation)를 사용하여 복잡한 형식의 인스턴스를 만들어 서비스와 클라이언트 간에 JSON(JavaScript Object Notation)으로 보내는 ASP.NET AJAX(Asynchronous JavaScript and XML) 서비스를 만드는 방법을 보여 줍니다. 웹 브라우저 클라이언트에서 JavaScript 코드를 사용하여 AJAX 서비스에 액세스할 수 있습니다. 이 샘플은 기본 AJAX 서비스 샘플을 토대로 작성되었습니다.
WCF의 AJAX 지원은 ScriptManager 컨트롤을 통해 ASP.NET AJAX와 함께 사용되도록 최적화되었습니다. ASP.NET AJAX와 함께 WCF를 사용하는 예는 AJAX 샘플을 참조하세요.
참고 항목
이 샘플의 설치 절차 및 빌드 지침은 이 항목의 끝부분에 나와 있습니다.
다음 샘플의 서비스는 AJAX 관련 코드가 없는 WCF 서비스입니다. WebGetAttribute 특성이 적용되지 않으므로 기본 HTTP 동사("POST")가 사용됩니다. 서비스에는 DoMath
라는 복합 형식을 반환하는 단일 작업인 MathResult
가 있습니다. 복합 형식은 마찬가지로 AJAX 특정 코드가 없는 표준 데이터 계약 형식입니다.
[DataContract]
public class MathResult
{
[DataMember]
public double sum;
[DataMember]
public double difference;
[DataMember]
public double product;
[DataMember]
public double quotient;
}
기본 AJAX 서비스 샘플에서와 마찬가지로, WebScriptServiceHostFactory를 사용하여 서비스에 AJAX 엔드포인트를 만듭니다.
클라이언트 웹 페이지 ComplexTypeClientPage.aspx에는 사용자가 페이지에서 계산 수행 단추를 클릭했을 때 서비스를 호출하기 위한 ASP.NET 및 JavaScript 코드가 포함되어 있습니다. 서비스를 호출하는 코드는 HTTP POST를 사용하는 AJAX 서비스 샘플과 유사하게 JSON 본문을 구성하고 HTTP POST를 사용하여 전송합니다.
서비스 호출에 성공한 후 결과 JavaScript 개체에서 개별 데이터 멤버(sum
, difference
, product
및 quotient
)에 액세스할 수 있습니다.
function onSuccess(mathResult){
document.getElementById("sum").value = mathResult.sum;
document.getElementById("difference").value = mathResult.difference;
document.getElementById("product").value = mathResult.product;
document.getElementById("quotient").value = mathResult.quotient;
}
샘플을 설치, 빌드 및 실행하려면
Windows Communication Foundation 샘플의 일회 설치 절차를 수행했는지 확인합니다.
Windows Communication Foundation 샘플 빌드에 설명된 대로 ComplexTypeAjaxService.sln 솔루션을 빌드합니다.
http://localhost/ServiceModelSamples/ComplexTypeClientPage.aspx
로 이동합니다(프로젝트 디렉터리의 브라우저에서 ComplexTypeClientPage.aspx를 열지 않도록 합니다).