방법: 기본 Windows Communication Foundation 서비스 호스트 및 실행
이 작업은 기본 WCF(Windows Communication Foundation) 서비스와 이 서비스를 호출할 수 있는 클라이언트를 만드는 데 필요한 6가지 작업 중 세 번째입니다. 6가지 작업의 개요를 모두 보려면 초보자를 위한 자습서 항목을 참조하십시오.
이 항목은 기본 WCF(Windows Communication Foundation) 서비스를 실행하는 방법을 설명합니다. 이 절차는 다음 단계로 구성됩니다.
- 서비스에 대한 기본 주소를 만듭니다.
- 서비스에 대한 서비스 호스트를 만듭니다.
- 메타데이터 교환을 사용하도록 설정합니다.
- 서비스 호스트를 엽니다.
이 작업에서 작성된 전체 코드 목록은 이 절차 다음에 나오는 다음 예제에 제공되어 있습니다. Program
클래스에 정의된 Main()
메서드에 다음 코드를 추가합니다. 이 클래스는 Service
솔루션을 만들 때 생성되었습니다.
서비스에 대한 기본 주소를 구성하려면
- 서비스의 기본 주소에 대한 Uri 인스턴스를 만듭니다. 이 URI는 HTTP 구성표, 사용자의 로컬 컴퓨터, 포트 번호 8000 및 서비스 계약의 서비스 네임스페이스에 대해 지정된 서비스에 대한 ServiceModelSample/Service 경로를 지정합니다.
서비스를 호스팅하려면
System.ServiceModel.Description
네임스페이스를 가져옵니다. 이 코드 줄은 using 또는 imports 문의 나머지 부분과 함께 Program.cs/Program.vb 파일의 맨 위에 배치되어야 합니다.서비스를 호스팅할 새 ServiceHost 인스턴스를 만듭니다. 서비스 계약을 구현하는 형식 및 기본 주소를 지정해야 합니다. 이 샘플에서는 기본 주소가
https://localhost:8000/ServiceModelSamples/Service
이며CalculatorService
는 서비스 계약을 구현하는 형식입니다.CommunicationException을 catch하는 try-catch 문을 추가하고 다음 세 단계에서 try 블록에 코드를 추가합니다. catch 절은 오류 메시지를 표시한 다음
selfHost.Abort()
를 호출해야 합니다.서비스를 노출하는 끝점을 추가합니다. 이렇게 하려면 끝점이 노출하는 계약, 바인딩 및 끝점에 대한 주소를 지정해야 합니다. 이 샘플에서는
ICalculator
를 계약으로,WSHttpBinding
을 바인딩으로,CalculatorService
를 주소로 지정합니다. 여기에서는 끝점 주소가 상대 주소입니다. 끝점에 대한 전체 주소는 기본 주소와 끝점 주소의 조합입니다. 이 경우 전체 주소는https://localhost:8000/ServiceModelSamples/Service/CalculatorService
입니다.메타데이터 교환을 사용하도록 설정합니다. 이렇게 하려면 서비스 메타데이터 동작을 추가합니다. 먼저 ServiceMetadataBehavior 인스턴스를 만들고 HttpGetEnabled 속성을 true로 설정한 다음 새 동작을 서비스에 추가합니다. 메타데이터를 게시하는 경우 보안 문제에 대한 자세한 내용은 메타데이터 관련 보안 고려 사항을 참조하십시오.
ServiceHost를 열고 들어오는 메시지를 기다립니다. 사용자가 Enter 키를 누르면 ServiceHost가 닫힙니다.
서비스가 작동하는지 확인하려면
Visual Studio 내에서 service.exe를 실행합니다. Windows Vista에서 실행하는 경우 이 서비스는 관리자 권한으로 실행해야 합니다. Visual Studio가 관리자 권한으로 실행되었기 때문에 service.exe도 관리자 권한으로 실행됩니다. 또한 관리자 권한으로 서비스를 실행하는 새 명령 프롬프트를 시작하고 해당 명령 프롬프트 내에서 service.exe를 실행할 수 있습니다.
Internet Explorer를 열고 서비스의 디버그 페이지인 https://localhost:8000/ServiceModelSamples/Service를 찾습니다.
예제
다음 예제에는 자습서의 이전 단계의 서비스 계약과 구현이 포함되어 있으며 콘솔 응용 프로그램에서 서비스를 호스팅합니다. 다음을 Service.exe라는 실행 파일로 컴파일합니다.
코드를 컴파일할 때 System.ServiceModel.dll을 참조해야 합니다.
참고
이러한 서비스에는 수신 대기를 위해 시스템에 HTTP 주소를 등록할 권한이 있어야 합니다. 관리자 계정에는 이 권한이 있지만, 관리자 이외의 계정에는 HTTP 네임스페이스에 대한 권한을 부여해야 합니다. 네임스페이스 예약을 구성하는 방법에 대한 자세한 내용은 HTTP 및 HTTPS 구성을 참조하십시오. Visual Studio에서 실행하는 경우 service.exe는 관리자 권한으로 실행해야 합니다.
서비스가 실행되고 있습니다. 방법: Windows Communication Foundation 클라이언트 만들기로 진행합니다. 문제 해결 정보에 대한 자세한 내용은 초보자를 위한 자습서 문제 해결을 참조하십시오.