다음을 통해 공유


인터넷 정보 서비스에서 호스팅하는 WCF 서비스 배포

IIS(인터넷 정보 서비스)에서 호스팅되는 WCF(Windows Communication Foundation) 서비스의 개발 및 배포는 다음과 같은 작업으로 구성됩니다.

  • IIS, ASP.NET, WCF 및 WCF 활성화 구성 요소가 제대로 설치되고 등록되었는지 확인합니다.

  • 새 IIS 응용 프로그램을 만들거나 기존 ASP.NET 응용 프로그램을 다시 사용합니다.

  • WCF 서비스에 대한 .svc 파일을 만듭니다.

  • IIS 응용 프로그램에 서비스 구현을 배포합니다.

  • WCF 서비스를 구성합니다.

IIS에서 호스팅되는 WCF 서비스를 만드는 자세한 연습은 방법: IIS에서의 WCF 서비스 호스팅을 참조하십시오.

IIS, ASP.NET 및 WCF가 제대로 설치되고 등록되었는지 확인

IIS에서 호스팅되는 WCF 서비스가 제대로 작동하려면 WCF, IIS 및 ASP.NET이 설치되어 있어야 합니다. WCF(.NET Framework 3.0의 일부로 설치), ASP.NET 및 IIS를 설치하는 절차는 사용되는 운영 체제 버전에 따라 다릅니다. WCF 및 .NET Framework 3.0 설치 방법에 대한 자세한 내용은 Microsoft .NET Framework 4.0 웹 설치 관리자를 참조하십시오. IIS 설치 지침은 Installing IIS에 있습니다.

.NET Framework 3.0를 설치할 때 IIS가 이미 설치되어 있으면 WCF가 IIS에 자동으로 등록됩니다. IIS가 .NET Framework 3.0 다음에 설치되는 경우에는 WCF를 IIS 및 ASP.NET에 등록하는 추가 단계가 필요합니다. 이러한 작업을 수행하려면 운영 체제에 따라 다음과 같이 하십시오.

  • Windows XP SP2 및 Windows Server 2003: ServiceModel 등록 도구(ServiceModelReg.exe) 도구를 사용하여 WCF를 IIS에 등록: 이 도구를 사용하려면 명령 프롬프트에 ServiceModelReg.exe /i /x를 입력합니다.

  • Windows Vista: .NET Framework 3.0의 Windows Communication Foundation 활성화 구성 요소 하위 구성 요소를 설치합니다. 이 작업을 수행하려면 제어판에서 프로그램 추가/제거를 클릭한 다음 Windows 구성 요소 추가/제거를 클릭합니다. 이렇게 하면 Windows 구성 요소 마법사가 활성화됩니다.

마지막으로 ASP.NET이 .NET Framework 버전 4.0을 사용하도록 구성되었는지 확인해야 합니다. ASPNET_Regiis 도구를 –i 옵션과 함께 실행하여 이를 확인할 수 있습니다. 자세한 내용은 다음 항목을 참조하십시오. ASP.NET IIS 등록 도구

새 IIS 응용 프로그램을 만들거나 기존 ASP.NET 응용 프로그램을 다시 사용

IIS에서 호스팅되는 WCF 서비스는 IIS 응용 프로그램의 내부에 있어야 합니다. 새 IIS 응용 프로그램을 만들어 WCF 서비스를 단독으로 호스팅할 수 있습니다. 또는 WCF 서비스를 .aspx 페이지 및 ASP.NET 웹 서비스[ASMX]와 같은 ASP.NET 2.0 콘텐츠를 이미 호스팅하고 있는 기존 응용 프로그램에 배포할 수 있습니다. 이러한 옵션에 대한 자세한 내용은 WCF 서비스 및 ASP.NET의 "ASP.NET과 동시에 WCF 호스팅" 및 "ASP.NET 호환 모드에서 WCF 서비스 호스팅" 단원을 참조하십시오.

IIS 6.0 이상 버전은 격리된 개체 지향 프로그래밍 응용 프로그램을 정기적으로 다시 시작합니다. 기본값은 1740분입니다. 지원되는 최대값은 71,582분입니다. 이러한 다시 시작 기능은 비활성화할 수 있습니다. 이 속성에 대한 자세한 내용은 PeriodicRestartTime을 참조하십시오.

WCF 서비스에 대한 .svc 파일 만들기

IIS에서 호스팅되는 WCF 서비스는 IIS 응용 프로그램 내에서 특수한 콘텐츠 파일(.svc 파일)로 표시됩니다. 이 모델은 ASMX 페이지가 IIS 응용 프로그램 내에서 .asmx 파일로 표시되는 방식과 비슷합니다. .svc 파일에는 들어오는 메시지에 대한 응답으로 WCF 호스팅 인프라에서 호스팅된 서비스를 활성화할 수 있는 WCF 특정 처리 지시문(@ServiceHost)이 포함되어 있습니다. .svc 파일의 가장 일반적인 구문은 다음 문에서 볼 수 있습니다.

<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>

이 구문은 @ServiceHost 지시문과 단일 특성, Service로 구성됩니다. Service 특성 값은 서비스 구현의 CLR(공용 언어 런타임) 형식 이름입니다. 이 지시문을 사용하는 것은 기본적으로 다음 코드를 사용하여 서비스 호스트를 만드는 것과 같습니다.

      new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );

서비스의 기본 주소 목록을 만드는 것과 같은 추가 호스팅 구성 작업을 수행할 수도 있습니다. 사용자 지정 ServiceHostFactory를 사용하여 사용자 지정 호스팅 솔루션에 사용할 지시문을 확장할 수도 있습니다. WCF 서비스를 호스팅하는 IIS 응용 프로그램은 ServiceHost 인스턴스의 만들기 및 수명을 관리하지 않습니다. 관리되는 WCF 호스팅 인프라는 .svc 파일에 대한 첫 번째 요청을 받으면 필요한 ServiceHost 인스턴스를 동적으로 만듭니다. 이 인스턴스는 코드에서 명시적으로 닫거나 응용 프로그램이 재활용될 때까지 해제되지 않습니다.

.svc 파일의 구문에 대한 자세한 내용은 @ServiceHost를 참조하십시오.

IIS 응용 프로그램에 서비스 구현 배포

IIS에서 호스팅되는 WCF 서비스에서는 ASP.NET 2.0과 동일한 동적 컴파일 모델을 사용합니다. ASP.NET과 마찬가지로 IIS에서 호스팅되는 WCF 서비스에 대한 구현 코드를 다음과 같이 여러 위치에 다양한 방법으로 배포할 수 있습니다.

  • GAC(전역 어셈블리 캐시) 또는 응용 프로그램의 \bin 디렉터리에 있는 미리 컴파일된 .dll 파일로 배포합니다. 미리 컴파일된 이진 파일은 클래스 라이브러리의 새 버전이 배포될 때까지 업데이트되지 않습니다.

  • 응용 프로그램의 \App_Code 디렉터리에 있는 컴파일되지 않은 소스 파일로 배포합니다. 응용 프로그램의 첫 번째 요청을 처리할 때 이 디렉터리에 있는 소스 파일이 동적으로 필요합니다. \App_Code 디렉터리의 파일을 변경하면 다음 요청을 받았을 때 전체 응용 프로그램이 재활용되고 다시 컴파일됩니다.

  • .svc 파일에 직접 배치된 컴파일되지 않은 코드로 배포합니다. @ServiceHost 지시문 다음에 서비스의 .svc 파일에서 구현 코드를 인라인으로 찾을 수도 있습니다. 인라인 코드를 변경하면 다음 요청을 받았을 때 응용 프로그램이 재활용되고 다시 컴파일됩니다.

ASP.NET 2.0 컴파일 모델에 대한 자세한 내용은 ASP.NET 컴파일 개요를 참조하십시오.

WCF 서비스 구성

IIS에서 호스팅되는 WCF 서비스는 해당 구성을 응용 프로그램 Web.config 파일에 저장합니다. IIS에서 호스팅되는 서비스는 IIS 외부에서 호스팅된 WCF 서비스와 같은 구성 요소 및 구문을 사용합니다. 그러나 다음 제약 조건은 IIS 호스팅 환경에만 적용됩니다.

  • IIS에서 호스팅되는 서비스의 기본 주소

  • IIS 외부의 WCF 서비스를 호스팅하는 응용 프로그램에서는 기본 주소 URI 집합을 ServiceHost 생성자에게 전달하거나 서비스 구성에 <host> 요소를 제공하여 호스팅하는 서비스의 기본 주소를 제어할 수 있습니다. IIS에서 호스팅되는 서비스에는 해당 기본 주소를 제어하는 기능이 없습니다. IIS에서 호스팅되는 서비스의 기본 주소는 해당 .svc 파일의 주소입니다.

IIS에서 호스팅되는 서비스의 끝점 주소

IIS에서 호스팅되는 경우 끝점 주소는 서비스를 나타내는 .svc 파일의 주소에 항상 상대적인 것으로 간주됩니다. 다음과 같은 끝점 구성을 가진 WCF 서비스의 기본 주소가 https://localhost/Application1/MyService.svc인 경우를 예로 들 수 있습니다.

<endpoint address="anotherEndpoint" .../>

여기서는 "https://localhost/Application1/MyService.svc/anotherEndpoint"에 도달할 수 있는 끝점을 제공합니다.

마찬가지로 빈 문자열을 상대 주소로 사용하는 끝점 구성 요소는 기본 주소인 https://localhost/Application1/MyService.svc에 도달할 수 있는 끝점을 제공합니다.

<endpoint address="" ... />

IIS에서 호스팅되는 서비스 끝점에는 항상 상대 끝점 주소를 사용해야 합니다. 정규화된 끝점 주소(예: https://localhost/MyService.svc)를 제공하면 끝점 주소가 끝점을 노출하는 서비스를 호스팅하는 IIS 응용 프로그램을 가리키지 않을 경우 서비스 배포 시 오류가 발생할 수 있습니다. 호스팅된 서비스에 상대 끝점 주소를 사용하면 이러한 잠재적 충돌을 예방할 수 있습니다.

사용 가능한 전송

IIS 5.1 및 IIS 6.0에서 호스팅된 WCF 서비스는 HTTP 기반 통신의 사용이 제한됩니다. 이러한 IIS 플랫폼에서 HTTP가 아닌 바인딩을 사용하도록 호스팅된 서비스를 구성하면 서비스 활성화 중에 오류가 발생합니다. 기존 MSMQ 응용 프로그램과의 호환성을 위해 IIS 7.0에서 지원되는 전송에는 HTTP, Net.TCP, Net.Pipe, Net.MSMQ 및 msmq.formatname이 있습니다.

HTTP 전송 보안

IIS에서 호스팅되는 WCF 서비스는 HTTP 전송 보안(예: Basic, Digest, Windows Integrated 인증과 같은 HTTPS 및 HTTP 인증 스키마)을 사용할 수 있습니다. 단 WCF 서비스가 포함되어 있는 IIS 가상 디렉터리에서 해당 설정을 지원해야 합니다. 호스팅된 끝점의 바인딩에서 HTTP 전송 보안 설정은 끝점의 바인딩을 포함하는 IIS 가상 디렉터리의 전송 보안 설정과 일치해야 합니다.

예를 들어 HTTP Digest 인증을 사용하도록 구성된 WCF 끝점은 HTTP Digest 인증을 사용할 수 있도록 구성된 IIS 가상 디렉터리에 있어야 합니다. IIS 설정과 WCF 끝점 설정 조합이 일치하지 않으면 서비스 활성화 중에 오류가 발생합니다.

참고 항목

개념

인터넷 정보 서비스에서의 호스팅
인터넷 정보 서비스 호스팅을 위한 최선의 방법

기타 리소스

Windows Server AppFabric 호스팅 기능