다음을 통해 공유


규칙 기반 WCF 라우터

SOAP 라우터는 규칙 집합에 기초하여 SOAP 메시지를 클라이언트에서 응용 프로그램 끝점에 전달하는 중개자입니다. 이 샘플에서는 WCF(Windows Communication Foundation)를 사용하여 SOAP 라우터를 만듭니다.

참고

이 샘플을 빌드하고 실행하려면 .NET Framework 버전 3.5가 설치되어 있어야 하며 프로젝트 및 솔루션 파일을 열려면 Visual Studio 2008이 필요합니다.

라우터는 Windows WF(Workflow Foundation) 규칙 엔진을 사용하여 특정 메시지를 전달할 위치를 결정하는 핵심 라우터 기능을 구현합니다. 이 샘플에서는 두 개의 주요 개념, 즉 Windows Workflow Foundation과 WCF를 응용 프로그램에서 함께 사용하는 방법과 워크플로 외부에서 Windows Workflow Foundation 규칙 엔진을 사용하는 방법("독립 실행형"이라고도 함)을 보여 줍니다.

참고

External RuleSet Toolkit Sample을 사용하여 이 샘플의 규칙을 볼 수 있습니다.

참고

라우터의 WCF 측면을 심층적으로 이해하려면 WCF Intermediary Router 샘플에 대한 설명서를 참조하십시오. 이 샘플은 Intermediary Router 샘플의 라우터 기능을 규칙 기반 라우터 기능으로 대체합니다.

이 샘플은 네 개의 프로젝트인 계산기 서비스, echo 서비스, 라우터 및 클라이언트로 구성됩니다. 이 샘플에서 계산기와 echo 서비스는 표준 WCF 서비스이며 각각 Calculator.cs 및 EchoService.cs 파일에 정의되어 있습니다.

라우터 서비스는 WCF 확장성을 사용하여 메시지와 전송 패턴의 처리(데이터그램/세션, 요청-회신/이중) 같은 다른 동작을 처리합니다.

RouterTable.cs 소스 파일은 WF 규칙 엔진을 활용하여 클라이언트로부터 받은 메시지를 전달할 위치를 결정하는 클래스를 정의합니다. 각 메시지가 라우터에 의해 처리될 때 라우터는 RouterTable.SelectDestination()을 호출하여 메시지 내용에 따라 메시지를 전달할 끝점 주소를 가져옵니다.

이 시점에서 RouterTable.cs는 Selectdestination.Rules에서 발견된 SelectDestination RuleSet를 실행하여 메시지를 전달할 가능한 끝점(계산기 서비스 또는 Echo 서비스)을 결정합니다.

SelectDestination RuleSet을 검토하거나 편집하려면 .NET Framework 버전 3.5 SDK에 있는 External RuleSet Toolkit Sample을 사용하여 열어야 합니다.

SelectDestination RuleSet를 열려면

  1. External RuleSet Toolkit Sample 응용 프로그램을 시작합니다.

  2. Data 메뉴에서 Import를 클릭합니다.

  3. Open File 대화 상자에서 router\SelectDestination.rules를 선택합니다.

  4. 규칙 집합 편집기에서 SelectDestination RuleSet을 클릭합니다.

  5. Workflow/Type Selection 대화 상자에서 Browse를 클릭합니다.

  6. 파일 열기 대화 상자에서 router/bins 폴더로 이동하고 WCF_Router.Router.exe를 클릭합니다.

  7. Workflow/Type Selection 대화 상자의 Contained Types 섹션에서 RoutingTable을 클릭한 다음 OK를 클릭합니다.

  8. External RuleSet Toolkit 응용 프로그램에서 SelectDestination을 확장하고 Version 1.0을 클릭한 다음 Edit Rules를 클릭합니다.

  9. External RuleSet Toolkit에서 연 경우 SelectDestination RuleSet이 다음 그림과 같이 표시됩니다.

Rules-Driven WCF Router 샘플의 출력

External RuleSet Toolkit의 SelectDestination RuleSet

SelectDestination RuleSet 내에는 6개의 규칙이 있습니다. 다음은 우선 순위가 높은 순서대로 각 규칙에 대한 설명입니다.

  1. Initialize variables: 나머지 규칙에서 사용할 수 있도록 RouterTable 클래스의 변수를 초기화합니다.
  2. CalculatorService: 메시지를 CalculatorService에 전달하기 위한 기준과 해당 메시지가 일치하는지 여부를 확인합니다. 메시지에는 "calculator" 헤더가 포함되어 있어야 합니다. 일치할 경우 메시지를 전달할 수 있는 가능한 끝점 목록에 CalculatorService 끝점이 추가됩니다.
  3. EchoService: 메시지를 EchoService에 전달하기 위한 기준과 해당 메시지가 일치하는지 여부를 확인합니다. 메시지에는 동작 메시지 헤더 http://microsoft.servicemodel.samples/iechoservice/echo가 포함되어 있어야 합니다. 일치할 경우 메시지를 전달할 수 있는 가능한 끝점 목록에 EchoService 끝점이 추가됩니다.
  4. No matches: 메시지를 전달할 수 있는 끝점이 없는지 확인합니다. true인 경우 이 사실이 콘솔에 기록됩니다.
  5. One match: 메시지를 전달할 수 있는 끝점이 하나 있는지 확인합니다. true인 경우 메시지가 해당 끝점에 전달됩니다.
  6. Multiple match: 메시지를 전달할 수 있는 끝점이 여러 개 있는지 여부를 확인합니다. true인 경우 가능한 끝점 목록에서 임의로 선택된 끝점에 메시지를 전달합니다.

이 RuleSet은 Windows Workflow Foundation 규칙에 대해 .NET Framework 3.5 기능, 즉 new 키워드를 사용하여 클래스 생성자를 호출하는 기능을 사용합니다. 예를 들어, CalculatorService 규칙에서는 메시지가 기준과 일치할 경우 가능한 주소 목록에 새 EndpointAddress가 추가됩니다.

샘플을 실행하면 작업 요청 및 응답이 클라이언트 콘솔 창에 표시됩니다. 클라이언트를 종료하려면 클라이언트 창에서 Enter 키를 누릅니다.

Echo("Is anyone there?") returned: Is anyone there?
Add(5) returned: 5
Add(-3) returned: 2

이 샘플을 빌드하고 실행하려면

  1. 단일 컴퓨터 또는 다중 컴퓨터 구성에서 샘플을 실행하려면 다음 경우를 제외하고 Windows Communication Foundation 샘플 실행의 지침을 따릅니다.

    • 단일 컴퓨터 및 다중 컴퓨터 구성에는 프로젝트 네 개와 실행 파일 네 개가 필요합니다. 즉, 클라이언트용으로 하나, SOAP 라우터용으로 하나, 그리고 응용 프로그램 서비스별로 하나씩 필요합니다.
    • 다중 컴퓨터 구성에서는 구성 파일 네 개를 다음과 같이 변경해야 합니다.
    • CalculatorServiceEchoService의 App.config 파일에서 21번째 줄을 변경합니다. localhost 호스트 이름 대신 매개자의 실제 호스트 이름을 입력해야 합니다.
    • 라우터의 App.config 파일에서 16번째 줄을 변경합니다. '|'로 구분된 두 주소를 각각 EchoServiceCalculatorService의 호스트 이름으로 변경합니다.
    • 클라이언트의 App.config 파일에서 5번째 줄과 7번째 줄을 변경합니다. localhost 호스트 이름 대신 매개자의 실제 호스트 이름을 입력해야 합니다.
    • 또한 두 응용 프로그램 서비스가 올바른 주소를 사용하도록 업데이트되었다면 이 응용 프로그램 서비스에 대해 ServiceModel Metadata Utility Tool (Svcutil.exe)를 실행하여 App.config 파일을 다시 생성할 수 있습니다.
  2. 클라이언트를 시작하기 전에 라우터, EchoServiceCalculatorService가 모두 실행 중인지 확인합니다. 세 서비스는 각각 시작 시 수신 대기하는 끝점 주소를 출력합니다.

    참고

    EchoServiceCalculatorService의 응용 프로그램 끝점은 라우터의 주소를 사용합니다.

  3. 클라이언트를 실행합니다. 클라이언트는 먼저 EchoService에 연결한 다음 CalculatorService에 연결합니다. 라우터는 전달 중인 메시지의 WS-Addressing 작업을 양방향으로 표시합니다.

    참고

    Client.exe와 Router.exe가 서로 다른 컴퓨터에 있는 경우 Client.exe.config에서 <identity/> 섹션의 주석 처리를 제거하고 사용자 계정 이름을 Router.exe를 실행 중인 사용자 중 한 명으로 설정합니다.

참고 항목

작업

Intermediary Router

기타 리소스

External RuleSet Toolkit Sample

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.