다음을 통해 공유


워크플로 서비스 제작 스타일

Windows Workflow Foundation에서는 Svcutil.exe와 같은 서비스 검색 도구를 사용하여 디자인 타임에 받는 계약 정보에 따라 기존 서비스에 연결하고 해당 서비스의 정보를 교환하는 기능을 지원합니다. 그러나 Windows Workflow Foundation에서는 통신 기반 서비스를 만들도록 특정하게 디자인된 새로운 Windows Workflow Foundation 클래스를 사용하여 서비스 계약 정의 및 구현을 생성하는 기능도 지원합니다.

계약 중심 워크플로 서비스

계약 중심 워크플로 서비스는 기존 서비스 계약 정보를 사용하는 워크플로입니다. 계약이 사용 가능하고 워크플로 서비스 프로젝트에 포함되어 있는지 확인해야 합니다. 이 계약 정보가 만들어진 후 Windows Workflow Foundation에서 제공하는 ReceiveActivity 활동을 사용하여 특정 서비스 계약 작업을 구현할 수 있습니다.

SendActivity 활동은 워크플로에서 서비스를 사용하는 데 필요하며 SendActivity 활동에는 기존 서비스 계약이 필요합니다. Windows Workflow Foundation에서는 서비스 계약을 만들고 동일한 프로젝트에서 해당 계약을 사용하여 서비스를 호출할 수 없습니다.

워크플로 프로젝트에서 서비스 계약 정의

워크플로 프로젝트에서 서비스 계약 인터페이스를 정의하고 ReceiveActivity 활동을 사용하여 해당 계약에서 작업을 구현할 수 있습니다. 다음 예제에서는 계약에 대한 ServiceContractAttribute와 해당 계약에서 지원하는 각 작업에 대한 OperationContractAttribute를 사용하여 서비스 계약을 정의하는 방법을 보여 줍니다.

using System;
using System.ServiceModel;

namespace Microsoft.WorkflowServices.Samples
{
    [ServiceContract(Namespace = "http://Microsoft.WorkflowServices.Samples")]
    public interface IContractFirstService
    {
        [OperationContract()]
        string DoWork();
    }
}

ReceiveActivity 활동은 위에 나와 있는 구현할 서비스 정의를 사용하여 이 계약에서 정의된 DoWork 작업 등을 구현할 수 있습니다. 또한 각 ReceiveActivity 활동은 계약에 대한 단일 작업만 구현할 수 있습니다.

워크플로 중심 워크플로 서비스

이전 단원에서 계약 중심 서비스는 기존 서비스 계약에 대한 작업이나 서비스 작업을 구현하는 워크플로 서비스로 정의되었습니다.

Windows Workflow Foundation에서는 Windows Workflow Foundation 클래스를 사용하여 서비스 계약을 프로그래밍 방식으로 정의하는 기능도 지원합니다. 그러나 계약 중심 서비스의 경우와 마찬가지로 SendActivity 활동은 외부 서비스와 통신하기 위해 자체 서비스 계약을 만들 수 없습니다. 이 동작은 ReceiveActivity 활동에서 서비스 계약에 의해 정의된 작업을 구현하는 데 사용됩니다.

Windows Workflow Foundation의 OperationInfo 클래스를 사용하여 워크플로 서비스를 정의할 수 있습니다. 계약 정보 자체는 ContractName 속성을 사용하여 정의되고 작업 이름은 Name 매개 변수를 사용하여 설정됩니다. 작업에서 반환 값을 비롯한 매개 변수를 지원하는 경우 OperationParameterInfo 클래스를 사용하고 각 매개 변수를 OperationInfo 개체의 Parameters 컬렉션에 추가합니다.

참고

반환 값의 경우 Name 속성에 "(ReturnValue)" 값을 사용하고 만들고 있는 OperationParameterInfo 개체의 Position 속성에 -1 값을 사용합니다.

다음 예제에서는 OperationInfoOperationParameterInfo 클래스를 사용하여 워크플로 중심 워크플로 서비스를 만드는 방법을 보여 줍니다. 서비스 계약의 이름은 WorkflowFirstContract로 지정되며 서비스 계약에는 DoWork라는 단일 작업이 포함됩니다.

OperationInfo doWorkOperation = new OperationInfo();
OperationParameterInfo returnValueParameter = new OperationParameterInfo();

doWorkOperation.ContractName = "WorkflowFirstContract";
doWorkOperation.Name = "DoWork";
returnValueParameter.Attributes = ((System.Reflection.ParameterAttributes)((System.Reflection.ParameterAttributes.Out | System.Reflection.ParameterAttributes.Retval)));
returnValueParameter.Name = "(ReturnValue)";
returnValueParameter.ParameterType = typeof(string);
returnValueParameter.Position = -1;
doWorkOperation.Parameters.Add(operationparameterinfo1);

참고 항목

참조

ServiceContractAttribute
ReceiveActivity
SendActivity
OperationInfo

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.