Basic Web Programming Model 샘플
이 샘플에서는 HTTP GET 및 POST를 사용하여 호출할 수 있는 서비스를 구현함으로써 WCF(Windows Communication Foundation) 웹 프로그래밍 모델 확장의 기본 요소를 보여 줍니다. 이 샘플은 서비스를 호스팅하고 클라이언트를 구현하는 단일 프로세스로 구현됩니다. 클라이언트는 HTTP를 사용하여 서비스를 호출합니다.
참고
이 샘플을 빌드하고 실행하려면 .NET Framework 버전 3.5가 설치되어 있어야 하며 프로젝트 및 솔루션 파일을 열려면 Visual Studio 2008이 필요합니다.
어셈블리 및 네임스페이스
WCF 웹 프로그래밍 모델은 이 SDK에 포함된 System.ServiceModel.Web 어셈블리에서 구현됩니다. 이 어셈블리는 .NET Framework 3.0의 일부로 설치되는 System.ServiceModel에서 파생됩니다.
서비스와 클라이언트를 모두 포함하는 Program.cs 파일은 다음과 같은 중요한 네임스페이스를 참조합니다.
- System.ServiceModel – WCF 프로그래밍 모델을 위한 최상위 네임스페이스입니다.
- System.ServiceModel.Web – 새로운 WebGetAttribute 및 WebInvokeAttribute 특성을 포함하는 웹 프로그래밍 모델 확장을 위한 최상위 네임스페이스입니다.
- System.ServiceModel.Description – WebHttpBinding 및 WebHttpBehavior를 포함하는 네임스페이스입니다.
서비스
다음 코드와 같이 샘플 서비스는 두 개의 작업인 EchoWithGet
및 EchoWithPost
를 가진 계약을 노출합니다.
[ServiceContract]
public interface IService
{
[OperationContract]
[WebGet]
string EchoWithGet(string s);
[OperationContract]
[WebInvoke]
string EchoWithPost(string s);
}
다른 WCF 서비스와 마찬가지로 ServiceContractAttribute 특성은 IService
계약에 적용되고 OperationContractAttribute 특성은 해당 메서드에 적용됩니다. 이 서비스 계약에서는 두 개의 새로운 웹 프로그래밍 모델 특성인 WebGetAttribute 및 WebInvokeAttribute를 사용합니다. 이러한 특성은 HTTP를 통해 계약의 작업을 사용할 수 있게 만드는 방법을 나타냅니다.
WebGetAttribute 특성은 EchoWithGet
메서드에 적용되어 HTTP GET 메서드에 응답하는 URI(예: https://localhost:8000/EchoWithGet?s=Hello, world!)에서 메서드를 사용할 수 있어야 한다는 것을 나타냅니다. WCF 클라이언트뿐만 아니라 웹 브라우저는 이 URI를 사용할 수 있습니다. WebInvokeAttribute는 EchoWithPost
메서드에 적용되어 HTTP POST 메서드에 응답하는 URI에서 작업을 사용할 수 있어야 한다는 것을 나타냅니다. 이 메서드에 대한 매개 변수는 POST 요청의 본문에서 XML로 인코딩됩니다. 브라우저 XmlHttpRequest
개체와 같은 XML 본문을 가진 HTTP POST 요청을 만들 수 있는 WCF 클라이언트 및 웹 클라이언트에서 이 URI를 사용할 수 있습니다. 웹 프로그래밍 모델에 대한 자세한 내용은 이 SDK의 Advanced Web Programming 샘플을 참조하십시오.
서비스의 다음 끝점은 명시적으로 정의됩니다.
using (WebServiceHost host = new WebServiceHost(typeof(Service), baseAddress))
{
host.Open();
...
}
서비스는 웹 프로그래밍 모델 확장을 사용하는 호스팅 서비스를 단순화하는 ServiceHost의 새 파생 형식인 WebServiceHost 형식을 사용하여 호스팅됩니다. WebServiceHost는 WebHttpBinding 및 WebHttpBehavior를 사용하여 기본 주소에서 기본 끝점을 자동으로 만들기 때문에 끝점을 명시적으로 정의할 필요가 없습니다. 이 형식은 SOAP 없이 HTTP를 통해 직접 통신하기 위한 새로운 표준 바인딩입니다. 이 바인딩은 XML 메시지뿐만 아니라 기타 형식의 비 XML 콘텐츠(예: 일반 텍스트, 이미지 또는 기타 바이트 스트림)를 지원합니다.
클라이언트
또한 이 샘플은 클라이언트에서 웹 프로그래밍 모델을 사용하여 HTTP 요청을 보내는 방법을 보여 줍니다.
다음 클라이언트 채널은 WebChannelFactory을 사용하여 만들어집니다.
using (WebChannelFactory<IService> cf = new WebChannelFactory<IService>(baseAddress))
{
IService channel = cf.CreateChannel();
...
}
WebServiceHost와 마찬가지로 WebChannelFactory
는 WebHttpBinding 및 WebHttpBehavior를 사용하여 기본 주소에 기본 끝점을 만듭니다.
WebChannelFactory
가 만들어진 후 클라이언트 응용 프로그램은 서비스에 대한 채널을 만들고 EchoWithGet
과 EchoWithPost
를 차례로 호출합니다.
상호 작용이 완료되면 프로그램은 키 입력을 기다립니다. 이 기간 동안 서비스는 여전히 수신 대기 상태로 유지됩니다. 키를 누르면 클라이언트와 서버가 종료되고 프로그램이 종료됩니다.
서비스를 실행하면 다음 출력이 표시됩니다.
Calling EchoWithGet via HTTP GET:
Output: You said Hello, world
이 샘플이 실행되는 동안 웹 브라우저에서 "https://localhost:8000/EchoWithGet?s=Hello, world!"로 이동하여 동일한 출력을 생성할 수 있습니다.
Calling EchoWithPost via HTTP POST:
Output: You said Hello, world
Press any key to terminate
샘플을 설치, 빌드 및 실행하려면
Windows Communication Foundation 샘플의 일회 설치 절차를 수행했는지 확인합니다.
C# 또는 Visual Basic .NET 버전의 솔루션을 빌드하려면 Windows Communication Foundation 샘플 빌드의 지침을 따릅니다.
단일 컴퓨터 또는 다중 컴퓨터 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플 실행의 지침을 따릅니다.
참고 항목
작업
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.