다음을 통해 공유


Sequential Workflow Service 샘플

이 샘플에서는 순차 워크플로를 사용하여 워크플로 서비스를 만드는 방법을 보여 줍니다. 또한 워크플로 중심 모드라는 서비스 제작 방법인 서비스 계약을 만드는 방법을 보여 줍니다. 이 샘플에서는 ICalculator 계약을 만들고 워크플로를 빌드할 때 워크플로에서 구현합니다.

참고

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

워크플로로 계산기를 구현하면 다음과 같은 장점이 있습니다.

  • 워크플로 상태를 자동으로 저장하는 장기 실행 프로세스를 시작할 수 있습니다. 즉, 워크플로 서비스를 다시 시작할 때 클라이언트에서 동일한 서비스 인스턴스와 통신할 수 있습니다.
  • 계약의 응용 프로그램 수준 프로토콜이 적용됩니다. 이 서비스에서 작업이 예기치 않게 호출되면 워크플로에서 예외가 발생합니다.

Sequential Workflow Services 샘플

이 워크플로의 PowerOn 수신 동작에는 CanCreateInstance라는 속성이 있으며 true로 표시됩니다. 따라서 클라이언트에서 PowerOn 작업을 호출하면 이 서비스의 인스턴스가 만들어집니다. 클라이언트는 이 작업에 대한 회신의 일부로 컨텍스트를 받습니다. 이 지점 이후부터 워크플로의 다른 작업을 호출할 수 있습니다. 클라이언트에서 호출하는 각 작업에 대한 컨텍스트는 채널을 통해 전송되므로 올바른 인스턴스로 작업을 라우트할 수 있습니다. PowerOff 작업을 호출하면 부울 값이 설정되어 워크플로에서 while 루프를 종료할 수 있습니다.

다음 샘플 코드에서는 서비스 프로젝트의 Program.cs 파일에 구현되는 WorkflowServiceHost 호출 패턴을 보여 줍니다.

WorkflowServiceHost workflowHost = new WorkflowServiceHost(typeof(Microsoft.WorkflowServices.Samples.SequentialCalculatorService));
workflowHost.Open();

위의 샘플 코드에서 WorkflowServiceHost의 생성자는 워크플로 형식을 입력으로 사용하고 열어 메시지를 수신 대기합니다.

이 샘플에는 계산기 서비스에서 작업을 호출하는 클라이언트 응용 프로그램도 포함되어 있습니다. 클라이언트 응용 프로그램은 순차 워크플로이며 일련의 작업을 호출합니다. 클라이언트 워크플로에서는 보내기 동작을 사용하여 워크플로에서 작업을 호출합니다. 클라이언트 프로젝트에는 Send 동작에서 인터페이스를 표시하는 데 사용할 수 있는 ICalculator 서비스에 대한 참조가 포함되어 있습니다. 이 인터페이스에서는 호출에 적합한 작업을 선택할 수 있습니다.

프로젝트를 설치, 빌드 및 실행하려면

  1. Windows Communication Foundation 샘플의 일회 설치 절차에 나열된 설치 지침을 수행합니다.

  2. 지속성 공급자를 설치하려면 Windows Communication Foundation 샘플의 일회 설치 절차 항목에 있는 CreateStores.cmd 스크립트를 실행합니다.

  3. 이 샘플에서는 NetFx35Samples_ServiceWorkflowStore 데이터베이스를 사용하며, 클라이언트 워크플로에 대한 지속성 저장소를 포함하지 않습니다. 이 샘플에서는 SQL Server Express를 사용하고 있으며 여기에 데이터베이스가 설치되어 있다고 가정합니다. SQL Server에 데이터베이스를 설치하려면 App.config 파일에서 연결 문자열을 변경합니다.

  4. 지속성 공급자를 사용하지 않으려면 App.config 파일에서 <WorkflowRuntime> 섹션을 주석으로 처리합니다.

  5. Administrators 그룹의 사용자로 샘플을 실행합니다. Windows Vista를 사용하고 있는 경우 클라이언트 실행 파일을 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 클릭합니다.

  6. 응용 프로그램이 실행되기 시작하면 클라이언트 워크플로에서 계산기 작업 집합을 보낸 다음 워크플로를 완료합니다. Enter 키를 누르면 다른 계산기 작업 집합을 보낼 수 있습니다.

  7. 이 서비스의 장기 실행 특성을 테스트하려면 클라이언트 응용 프로그램에 중단점을 설정합니다. Visual Studio에서 중단점에 도달하면 서비스 응용 프로그램을 닫았다가 다시 시작합니다. 클라이언트에서 중단점을 해제합니다. 클라이언트 워크플로는 서비스의 동일한 워크플로 인스턴스와 통신합니다. 샘플을 두 개의 솔루션으로 구분하여 서비스의 재활용을 테스트할 수도 있습니다.

별도의 컴퓨터에서 샘플을 실행하려면

  1. 서비스 및 클라이언트에 대한 구성 파일을 편집하여 끝점 주소에서 서버 이름을 변경하도록 합니다. 서버 이름을 localhost에서 서비스를 실행할 시스템 이름으로 변경합니다.

  2. 서비스에서는 포트 8888을 사용하므로 방화벽에서 이 포트를 열어야 합니다. Windows 제어판에서 Windows 방화벽을 클릭합니다. 포트 추가를 클릭하고 포트 8888을 추가합니다. 또는 기본 포트에서 서비스를 실행할 수 있습니다. 이렇게 하려면 끝점 주소에서 :8888을 제거합니다.

  3. 클라이언트 구성 파일을 편집하고 다음 요소를 <endpoint> 요소의 자식으로 추가합니다.

    <identity>
        <UserPrincipalName value=”*@<Domain Name in which your server is running” />
    </identity>
    

    도메인 이름을 확인하려면 서비스를 실행할 컴퓨터에서 해당 서비스를 시작합니다. 다른 컴퓨터의 명령 프롬프트 창에서 다음 명령을 실행합니다.

    svcutil.exe http://<serverName>:8888/servicehost/Calculator.svc

    이 명령을 실행하면 .cs 파일과 output.config 파일이 생성됩니다. 구성 파일의 <endpoint> 요소에서 <identity> 요소를 클라이언트 구성 파일에 복사합니다.

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