Windows Server AppFabric의 구성 프로세스

응용 프로그램 소유자나 IT 전문가는 AppFabric IIS 관리자 확장과 AppFabric용 Windows PowerShell cmdlet을 사용하여 WCF 또는 WF 서비스에 기본 제공되는 응용 프로그램을 쉽게 구성할 수 있습니다. 이 항목에서는 IIS 관리자 확장 또는 AppFabric 구성 cmdlet을 사용하여 서비스 또는 응용 프로그램을 구성할 때 Web.config 파일에서 발생하는 내용에 대해 설명합니다. 먼저 서비스를 구성하는 데 사용되는 Web.config 파일에 대해 설명하고 서비스를 직접 구성하는 방법과 서비스에서 상속할 기본값을 구성하는 방법에 대해 알아 봅니다.

ASP.NET에서 Web.config 파일을 사용하는 방법은 ASP.NET Configuration을 참조하십시오.

Web.config 파일의 계층 구조

IIS 구성 계층의 각 항목은 고유한 Web.config 파일을 가질 수 있습니다. 또한 서비스는 해당 서비스가 속한 서버, 사이트, 응용 프로그램 및 하위 디렉터리에 연결된 Web.config 파일로부터 기본 구성 설정을 상속할 수 있습니다. 따라서 서비스 구성은 Web.config 파일의 계층 구조에 의해 정의됩니다. 이 섹션에서는 계층 구조에서 서비스 구성을 정의하는 Web.config 파일 및 해당 파일 내에서 우선 순위가 높은 요소를 결정하는 규칙에 대해 설명합니다.

AppFabric을 서버에 설치하면 서버 Web.config 파일이 없는 경우 Machine.config 파일과 동일한 디렉터리(<드라이브>:\Windows\Microsoft.NET\Framework\v4.0.xxxxx\Config)에 만들어집니다. 이 서버 Web.config 파일의 구성을 통해 서비스 추적, 워크플로 지속성 및 워크플로 인스턴스 관리 기능을 설정할 수 있습니다. 또한 웹 사이트에 해당하는 Web.config 파일을 웹 사이트 디렉터리(<드라이브>:\inetpub\wwwroot)에, 응용 프로그램에 해당하는 Web.config 파일을 응용 프로그램 루트 디렉터리에 만들 수 있으며 응용 프로그램 하위 디렉터리에 해당하는 Web.config 파일을 만들 수도 있습니다. 사이트, 응용 프로그램 및 하위 디렉터리 Web.config 파일은 AppFabric 설치 프로그램으로 설치되지 않습니다. AppFabric IIS 관리자 확장을 사용하여 특정 범위의 구성을 변경할 때 Web.config 파일이 해당 범위에 없으면 자동으로 만들어집니다.

어느 수준의 Web.config 파일에도 서비스에 직접 적용되는 구성 설정이 포함될 수 있지만, IIS 관리자 UI에서 곧바로 서비스를 정의하려면 응용 프로그램 Web.config 파일에서 서비스를 정의합니다. 이러한 설정 이외에 서버, 사이트, 응용 프로그램 및 하위 디렉터리 수준의 Web.config 파일에는 서비스에서 상속되는 기본 구성 설정이 포함될 수 있습니다. AppFabric IIS 관리자 확장 UI 및 구성 cmdlet을 통해 설정된 응용 프로그램 구성은 Web.config 파일에만 적용되며 machine.config 파일이나 환경 구성을 정의하는 다른 파일에는 영향을 주지 않습니다. 단, 예외적으로 서버 수준의 applicationHost.config 파일에는 응용 프로그램에 대한 자동 시작이 정의됩니다.

Web.config 파일은 구성 설정을 지정하는 특성이 포함된 XML 태그 및 하위 태그의 중첩 구조를 포함합니다. WCF 및 WF 기반 서비스의 일부 구성 설정은 서비스 동작 내에서 정의됩니다. AppFabric에서 대부분의 구성 작업은 동작을 편집하지만, 일부 구성 설정은 서비스 동작 외부에서 정의됩니다. 예를 들어, 서비스에 대한 모니터링, 끝점 주소 및 바인딩 전송 할당량은 Web.config 파일에서 구성되지만 동작 외부에서 정의됩니다. 이벤트 수집기 및 시스템 진단 구성은 모두 응용 프로그램 수준 이상에서 범위가 지정되지만 동작 내에서 정의되지는 않습니다.

참고

AppFabric은 MWA(Microsoft Web Administration)를 사용하여 구성을 관리합니다. MWA를 사용하려면 모든 구성 요소가 도식화되어야 합니다. 사용자 지정 동작의 스키마를 만드는 방법에 대한 자세한 내용은 Extending IIS 7.0 Schema and Accessing the Custom Sections Using MWA(영문)를 참조하십시오.

서비스 직접 구성

Web.config 파일에서 명명된 서비스 동작을 사용하여 서비스를 구성할 수 있습니다. 그러려면 Web.config 파일에서 서비스 동작 태그를 가리키는 behaviorConfiguration 특성이 포함된 <service> 태그를 입력합니다. 응용 프로그램 수준 이상의 Web.config 파일에서 서비스에 대해 명명된 동작을 정의할 수 있습니다. 다음은 명명된 서비스 동작 내에서 TestGetMetaData라는 이름으로 구성이 정의된 TestService 서비스의 예입니다.

<system.serviceModel>
   <services>
      <service name="TestService" behaviorConfiguration="TestGetMetaData" >
         <endpoint address="/TestService" binding="wsHttpBinding" contract="ITestService"/>
         <endpoint address="mex"  binding="mexHttpBinding"  contract="IMetadataExchange"/>
      </service>
   </services>

   <behaviors>
      <serviceBehaviors>
         <behavior name="TestGetMetaData"> <serviceMetadata httpGetEnabled="true" httpGetUrl=""/> </behavior>
      </serviceBehaviors>
   </behaviors>
</system.serviceModel>

.NET Framework 3.5에서는 다수의 서비스 요소를 구성할 때 서비스의 응용 프로그램 또는 하위 디렉터리 Web.config 파일에서 명명된 서비스 동작을 사용하는 것이 가장 쉬운 방법입니다. .NET Framework 4.0에서는 이름 없는 동작을 사용하여 서비스가 기본 구성을 상속하도록 하는 새로운 템플릿이 도입되었습니다. 자세한 내용은 이 섹션의 뒷부분에 나오는 "서비스가 상속할 기본값 구성"을 참조하십시오.

AppFabric 구성 도구는 다음과 같은 서비스 동작을 수정합니다.

  • sqlWorkflowInstanceStore(지속성)

  • etwTracking(모니터링)

  • serviceThrottling(성능)

  • serviceCredentials/serviceCertificate(보안)

  • workflowIdle

  • workflowUnhandledException

  • workflowInstanceManagement

서비스가 상속할 기본값 구성

응용 프로그램 Web.config 파일에서 명명된 서비스 동작을 사용하는 것 외에 다른 방법으로도 서비스를 구성할 수 있습니다. 서비스는 Web.config 파일의 기본 구성 설정을 상속하여 서비스가 속한 서버, 사이트, 응용 프로그램 및 하위 디렉터리에 적용할 수 있습니다. WCF 및 WF 기반 서비스의 일부 기본 구성 설정은 이름 없는 서비스 동작 내에서 정의됩니다.

이름 없는 동작 사용

명명된 서비스 동작이 있으며 서비스의 behaviorConfiguration 특성이 명명된 서비스 동작을 가리키는 경우 서비스에서는 명명된 동작 내의 설정을 사용합니다. 또한 상위 수준에 있는 명명된 동작 중 이름이 같은 동작이 있는 경우 해당 설정도 상속합니다. 하위 디렉터리, 응용 프로그램, 사이트 및 서버 Web.config 파일에 정의되어 서비스에 적용되는 기본 서비스 동작 설정은 사용하지 않습니다. 하지만 응용 프로그램 Web.config 파일에서 <service> 태그를 변경하면 서비스가 기본값을 상속하도록 지정할 수 있습니다. 한 수준 이상에 해당하는 Web.config 파일에서 이름 없는 서비스 동작을 정의한 다음 서비스가 이름 없는 동작을 사용하도록 지정하면 됩니다. 다음 코드와 같이 서비스 요소의 behaviorConfiguration 특성 이름이 빈 문자열로 설정되어 있는 경우 서비스에서는 이름 없는 동작을 사용합니다.

<services>
   <service name=”TutorialService” behaviorConfiguration=””
      <endpoint address=”” binding=”wsHttpBinding” contract=”IService” />
   </service>
</services>

다음 코드와 같이 behaviorConfiguration 특성을 제외해도 마찬가지입니다. 위에서는 이름 없는 동작이 명시적으로 사용되고 아래에서는 이름 없는 동작이 암시적으로 사용되기 때문입니다.

<services>
   <service name=”TutorialService”
      <endpoint address=”” binding=”wsHttpBinding” contract=”IService” />
   </service>
</services>

이름 없는 behaviorConfiguration 요소를 사용하면 서비스에서 serviceBehavior 요소에 정의된 이름 없는 동작 하나 이상으로부터 구성을 상속합니다. 다음은 서버 수준에서 기본적으로 정의되는 이름 없는 serviceBehavior 요소입니다. 서버에 대한 이 기본 구성은 AppFabric 설치 시 생성되며 서비스 추적, 워크플로 지속성 및 워크플로 인스턴스 관리 기능을 사용하도록 설정합니다.

<behaviors>
   <serviceBehaviors>
      <behavior name=””>
         <workflowIdle timeToUnload="00:01:00" timeToPersist="infinite" />
         <workflowInstanceManagement authorizedWindowsGroup=”AS_Administrators" />
         <etwTracking profileName="HealthMonitoring Tracking Profile" />
      </behavior>
   </serviceBehaviors>
</behaviors>

계층 구조의 모든 수준에서 Web.config 파일에 이름 없는 동작을 정의할 수 있습니다. 이름 없는 동작이 서비스가 포함된 여러 수준에 정의되어 있는 경우 서비스에 대한 구성은 계층 구조에 정의된 이름 없는 동작 하나하나의 설정을 병합하여 구성됩니다. 여러 서비스 계층 구조에 있는 설정이 서로 충돌하는 경우 하위 수준 또는 최하위 수준의 설정이 사용됩니다. 여러 이름 없는 동작에서 서비스 관련 구성 설정을 집계하는 이 프로세스를 동작 병합이라고 합니다.

Web.config 파일의 동작 섹션에서 제거 및 지우기 태그를 사용할 수도 있습니다. 제거 태그는 태그가 포함된 이름 없는 동작에 대한 설정을 제거합니다. 지우기 태그는 서비스에 대한 모든 동작을 제거합니다.

behaviorConfiguration이 빈 문자열로 설정된 모든 서비스는 계층 구조에 정의된 이름 없는 동작에서 기본 구성 값을 상속합니다. 이름 없는 동작은 수준별로 Web.config 파일에 하나씩만 존재할 수 있습니다.

암시적("태그 없는") 서비스의 경우 이름 없는 동작이 암시적으로 사용됩니다. 즉, 코드에서 behaviorConfiguration 특성이 제외됩니다. 태그 없는 서비스는 Web.config 파일에서 선언되지 않은 서비스로, Web.config 파일에 연결된 서비스 노드가 없습니다. 기본적으로 Visual Studio 10의 새 프로젝트 유형은 태그 없는 서비스를 만듭니다. 런타임에 태그 없는 서비스가 발견되면 해당 이름 없는 동작에서 병합된 기본값이 서비스에 자동으로 적용됩니다. IIS 관리자 확장에서는 태그 없는 서비스의 끝점을 수정할 수 없습니다. 수정하려면 명명된 서비스 요소를 Web.config 파일에 추가해야 합니다.

WCF 및 WF 기반 서비스의 경우 일부 기본 구성 설정은 이름 없는 서비스 동작 내부에 정의되고 일부는 이름 없는 서비스 동작 외부에 정의됩니다. 예를 들어, 연결 문자열 또는 컬렉션에 대한 서비스는 계층 구조의 모든 구성 파일에서 구성 값을 상속합니다.

IIS 관리자에서 기본값 구성

AppFabric IIS 관리자 확장 UI에서 직접 응용 프로그램을 구성할 수 있습니다. 이렇게 하면 AppFabric에서는 해당 Web.config 파일(일반적으로 응용 프로그램 수준)에서 명명된 서비스 동작을 설정합니다. 서비스를 직접 구성하는 대신 IIS 관리자를 사용하여 하위 디렉터리, 응용 프로그램, 사이트 및 서버 수준의 기본값을 사용하도록 서비스 구성을 변경할 수도 있습니다. 이렇게 하면 Web.config 파일의 이름 없는 동작이 변경됩니다. AppFabric은 응용 프로그램 구성 매개 변수의 전체 집합을 만들기 위해 동작 병합을 수행합니다.

여러 Web.config 파일에서 동일한 구성 속성의 값이 서로 다르게 설정되어 있는 경우 AppFabric에서는 하위 수준 또는 최하위 수준의 값을 사용합니다. 서비스에 대한 서비스 구성 대화 상자의 필드에는 해당 Web.config 파일의 이름 없는 동작의 값이 채워집니다. 서비스 수준에서 구성 UI를 통해 이 값을 변경할 수 있으며, 그러면 해당 응용 프로그램에 대한 이름 없는 동작이 변경됩니다. 하위 디렉터리, 사이트 및 서버 수준에서 기본값을 변경할 수도 있습니다. 응용 프로그램 수준에서 이름 없는 동작이 만들어진 후 상위 수준에서 이름 없는 동작의 기본 설정을 변경하면 상위 수준의 이름 없는 동작의 변경 내용이 하위 수준에서 재정의되지 않는 한 서비스 수준에 전파됩니다.

IIS 관리자에서 응용 프로그램, 하위 디렉터리, 사이트 또는 서버 수준에 대한 기본 설정을 정의하려면 연결 창에서 수준을 선택한 다음 작업 창의 WCF 및 WF 서비스 관리에서 구성을 클릭합니다. 또는 연결 창에서 수준을 마우스 오른쪽 단추로 클릭하고 WCF 및 WF 서비스 관리를 가리킨 다음 구성을 클릭해도 됩니다. 그러면 해당 수준에 대한 구성 대화 상자가 표시됩니다. UI에서 수준에 대한 기본 설정을 변경할 때 해당 수준에 대한 Web.config 파일이 없는 경우 AppFabric에서 Web.config 파일이 만들어집니다.

AppFabric IIS 관리자 확장에서 서비스를 구성할 때는 사용할 명명된 동작 구성을 선택하지 않습니다. 서비스에 대한 서비스 구성 대화 상자에서 값을 입력하거나 선택하면, AppFabric에서 Web.config 파일을 편집합니다. AppFabric용 Windows PowerShell cmdlet을 사용하여 여러 동작 구성 설정을 지정할 수도 있습니다.

위치 태그 사용

AppFabric은 Web.config 파일에서 위치 태그에 대한 읽기 작업을 지원합니다. 명명된 서비스 동작을 사용하는 방법이나 이름 없는 서비스 동작이나 태그 없는 서비스를 사용하여 기본 동작을 정의하는 방법 이외에 위치 태그를 사용하여 서비스 구성을 정의할 수도 있습니다. 위치 태그는 특별히 식별된 엔터티에 구성 설정을 적용하는 Web.config 파일에 포함된 요소입니다. 위치 태그는 구성 설정을 한 가지 이상 포함하며 구성 속성이 적용될 엔터티를 지정하는 경로를 포함합니다. 위치 태그는 해당 응용 프로그램 Web.config 파일의 <services> 노드에 있어야 하는 명명된 서비스 동작과 달리 모든 Web.config 파일에 입력할 수 있습니다. 또한 위치 태그는 이름 없는 동작과 달리 렌더링을 위해 응용 프로그램 Web.config 파일의 <service> 노드에 이름 없는 behaviorConfiguration 요소가 필요하지 않습니다.

다음은 응용 프로그램 app1의 서비스 s1에 구성 설정을 적용하는 사이트 Web.config 파일의 위치 태그 예입니다.

<location path=”app1/s1.svc” overrideMode=”Allow”>
   <defaultDocument enabled=”true”>
      <files>
         <add value=”Developer.htm” />
      </files>
   </defaultDocument>
</location>

경로를 선언하지 않으면(점(.)을 지정하는 것에 해당함) 위치 태그가 정의된 수준에서 시작하여 이하 모든 자식 경로가 사용됩니다. applicationHost.config에서 이렇게 하면 전역 수준에 대해 구성이 지정됩니다. 위치 태그의 overrideMode 요소가 "Allow"로 설정된 경우 계층 구조의 하위 수준에서 위치 태그의 구성 설정을 편집하여 재정의할 수 있습니다. overrideMode 요소가 설정되어 있지 않고 여러 위치 태그가 동일 서비스의 동일한 구성 설정에 대해 서로 다른 값을 지정하는 경우 우선 순위 규칙에 따라 사용할 설정이 결정됩니다.

위치 태그에서 서비스에 적용되는 구성 설정은 AppFabric IIS 관리자 확장 UI 또는 AppFabric 구성 cmdlet을 통해 변경할 수 없습니다. 위치 태그의 내용은 UI 또는 cmdlet에 대해 읽기 전용이며, IIS 관리자 또는 cmdlet을 사용하여 위치 태그를 변경하려고 하면 오류가 발생합니다. 위치 태그에서 적용된 설정을 변경하려면 Web.config 파일에서 위치 태그를 수동으로 변경해야 합니다.

재활용

언제든지 IIS 관리자의 서비스 구성 대화 상자에서 적용 또는 확인을 클릭하여 Web.config 파일을 변경하면 시스템에서 연결된 응용 프로그램 도메인이 재활용됩니다. 언제든지 적용 또는 확인을 클릭하여 하위 디렉터리, 응용 프로그램, 사이트 또는 서버 수준에서 기본 설정을 지정하여 해당 Web.config 파일을 변경하면 해당 범위 아래의 모든 서비스에 대한 응용 프로그램 도메인이 재활용됩니다. 재활용 비용을 절감하려면 특히 상위 수준에서 발생하는 재구성 프로세스 수를 최소화하는 것이 좋습니다. 기본값을 구성할 때는 먼저 서버 기본값과 사이트 기본값을 구성하고(순서 상관없음) 응용 프로그램을 가져온 후 응용 프로그램과 응용 프로그램에 포함된 서비스를 구성해야 합니다. 이 순서를 따라야 하는 이유는 기본값 구성 시 트리의 모든 항목이 재활용될 수 있기 때문입니다. 응용 프로그램 재활용 비용이 발생하지 않도록 가능하면 응용 프로그램이 실제로 실행되기 이전에 구성 단계를 수행하십시오.

  2011-12-05