SoapAndHttpEndpoints 샘플은 RPC 기반 서비스를 구현하고 WCF 웹 프로그래밍 모델을 사용하여 SOAP 형식 및 POX("Plain Old XML") 형식으로 노출하는 방법을 보여 줍니다. 서비스의 HTTP 바인딩에 대한 자세한 내용은 기본 HTTP 서비스 샘플을 참조하세요. 이 샘플에서는 서로 다른 바인딩을 사용하는 SOAP 및 HTTP를 통해 동일한 서비스를 노출하는 데 관련된 세부 정보를 중점적으로 다룹니다.
시연
WCF를 사용하여 SOAP 및 HTTP를 통한 RPC 서비스 노출
토론(Discussion)
이 샘플은 WCF 서비스가 포함된 웹 애플리케이션 프로젝트(Service)와 SOAP 및 HTTP 바인딩을 사용하여 서비스 작업을 호출하는 콘솔 애플리케이션(Client)의 두 구성 요소로 구성되어 있습니다.
WCF 서비스는 입력으로 전달된 문자열을 반향하는 2개의 작업(GetData 및 PutData)을 노출합니다. 서비스 작업에는 WebGetAttribute 및WebInvokeAttribute를 주석으로 답니다. 이러한 특성은 해당 작업의 HTTP 프로젝션을 제어합니다. 또한 서비스 작업에는 SOAP 바인딩을 통해 노출되도록 설정하는 OperationContractAttribute를 주석으로 답니다. 서비스의 PutData 메서드는 WebFaultException을 throw하며, 이 예외는 HTTP 상태 코드를 사용하여 HTTP를 통해 다시 보내지고 SOAP을 통해 SOAP 오류로 다시 보내집니다.
Web.config 파일은 3개의 엔드포인트로 WCF 서비스를 구성합니다.
SOAP 기반 클라이언트에서 액세스할 수 있도록 서비스 메타데이터를 노출하는 ~/service.svc/mex 엔드포인트
클라이언트가 HTTP 바인딩을 사용하여 서비스에 액세스할 수 있도록 하는 ~/service.svc/http 엔드포인트
클라이언트가 SOAP 및 HTTP 바인딩을 사용하여 서비스에 액세스할 수 있도록 하는 ~/service.svc/soap 엔드포인트
HTTP 엔드포인트는 <webHttp>가 helpEnabled로 설정된 true 표준 엔드포인트를 사용하여 구성됩니다. 따라서 서비스에서는 HTTP 기반 클라이언트가 서비스에 액세스하는 데 사용할 수 있는 XHTML 기반 도움말 페이지를 ~/service.svc/http/help에 노출합니다.
클라이언트 프로젝트에서는 서비스 참조 추가를 통해 생성되는 SOAP 프록시를 사용하여 서비스에 액세스하고 WebClient를 사용하여 서비스에 액세스하는 방법을 보여 줍니다.
이 샘플은 웹 호스팅 서비스와 콘솔 애플리케이션으로 구성되어 있습니다. 콘솔 애플리케이션이 실행되면 클라이언트에서는 서비스로 요청을 보내고 응답의 관련 정보를 콘솔 창에 씁니다.
이 샘플을 실행하려면
SOAP and HTTP Endpoints 샘플의 솔루션을 엽니다.
Ctrl+Shift+B를 눌러 솔루션을 빌드합니다.
솔루션 탐색기 창이 아직 열려 있지 않은 경우 Ctrl+W, S를 눌러 엽니다.
솔루션 탐색기 창에서 Service 프로젝트를 마우스 오른쪽 단추로 클릭하고 커서를 상황에 맞는 메뉴의 디버그 옵션 위에 놓아 새 인스턴스 시작 상황에 맞는 메뉴가 표시되도록 합니다. 새 인스턴스 시작을 클릭합니다. 그러면 ASP.NET Development Server가 시작되어 서비스를 호스트합니다.
솔루션 탐색기 창에서 Client 프로젝트를 마우스 오른쪽 단추로 클릭하고 커서를 상황에 맞는 메뉴의 디버그 옵션 위에 놓아 새 인스턴스 시작 상황에 맞는 메뉴가 표시되도록 합니다. 새 인스턴스 시작을 클릭합니다.
클라이언트 콘솔 창이 나타나고 실행 중인 서비스의 URI와 실행 중인 서비스에 대한 HTML 도움말 페이지의 URI가 제공됩니다. 언제든지 브라우저에서 HTML 도움말 페이지의 URI를 입력하면 해당 도움말 페이지를 볼 수 있습니다.
샘플이 실행되면 클라이언트에서는 현재 활동의 상태를 씁니다.
아무 키나 눌러 클라이언트 콘솔 애플리케이션을 종료합니다.
Shift+F5를 눌러 서비스 디버깅을 중지합니다.
Windows 알림 영역에서 ASP.NET 개발 서버 아이콘을 마우스 오른쪽 단추로 클릭한 다음 상황에 맞는 메뉴에서 중지를 선택합니다.