다음을 통해 공유


Custom Serialization 샘플

Download sample

이 샘플은 Workflow Serialization 샘플 샘플을 기반으로 하며, 기본 serializer로 serialize할 수 없는 속성을 지닌 활동이 포함된 워크플로를 serialize하는 방법을 보여 줍니다.

이 샘플에서는 선언적 워크플로가 만들어집니다. 이 워크플로는 코드 파일에 정의되는 대신 워크플로 개체 모델을 사용하여 어셈블됩니다. 사용자 지정 활동이 두 가지 추가되었으며, 이는 Queue 형식의 속성을 가진 QueueActivity와 Stack 형식의 속성을 가진 StackActivity입니다. QueueStack 개체는 대부분의 컬렉션 형식에 있는 기본 Add 메서드와 Remove 메서드가 없으므로 표준 워크플로 serializer는 그 데이터에 액세스하는 방법을 알 수 없습니다. 따라서 이러한 형식에 대해서는 사용자 지정 serializer를 구현해야 합니다.

사용자 지정 serializer를 구현하려면 먼저 기본 활동 serializer를 재정의해야 합니다. 사용자 지정 활동에 대한 다음과 같은 특성 정의를 사용하면 됩니다.

[DesignerSerializer(typeof(QueueActivitySerializer), typeof(WorkflowMarkupSerializer))]

사용자 지정 활동 serializer(QueueActivitySerializer 및 StackActivitySerializer)의 목적은 serialization과 deserialization 전후에 해당 매개 변수에서 사용하는 개체 형식(이 샘플에서는 큐 및 스택)의 사용자 지정 serializer를 추가하고 제거하는 것입니다. 사용자 지정 활동 serializer는 관련 이벤트(serialization의 경우 OnBeforeSerializeOnAfterSerialize, deserialization의 경우 대해서는 OnBeforeDeserializeOnAfterDeserialize)의 결과로 나타나는 AddSerializationProviderRemoveSerializationProvider를 serialization 관리자에서 호출합니다.

개체 형식 serializer(QueueSerializer 및 StackSerializer)는 serializer 기본 클래스(WorkflowMarkupSerializer)의 관련 메서드를 재정의하여 해당 컬렉션 형식의 개체에 액세스합니다. 따라서 큐 serializer는 큐에 개체를 추가하기 위해 Queue.Enqueue를, 스택 serializer는 Stack.Push를 호출합니다. 이와 비슷하게 GetChildren 메서드는 컬렉션을 배열 목록으로 변환합니다. Stack 개체를 사용할 경우 항목의 순서를 역순으로 하여 스택의 선입후출 동작을 동일하게 제공합니다.

참고

이 샘플에서 소개하는 메서드를 통해 큐 및 스택 개체를 사용하는 워크플로를 만들 수는 있으나 Simple In-Memory 샘플에서 설명한 대로 런타임에 컴파일되는 워크플로에 대해서는 이 컬렉션 형식을 사용할 수 없습니다.

이 샘플을 빌드하려면

  1. 샘플 다운로드를 클릭하여 샘플을 다운로드합니다.

  2. 이렇게 하면 샘플 프로젝트가 로컬 하드 디스크에 추출됩니다.

  3. 시작을 클릭하고 프로그램, Microsoft Windows SDK를 차례로 가리킨 다음 CMD 셸을 클릭합니다.

  4. 샘플의 소스 디렉터리로 이동합니다.

  5. 명령 프롬프트에서 **MSBUILD <Solution file name>**을 입력합니다.

이 샘플을 실행하려면

  • SDK 명령 프롬프트 창에서 샘플의 주 폴더 아래에 있는 CustomSerialization\bin\debug 폴더 또는 CustomSerialization\bin 폴더(VB 버전의 샘플의 경우)의 .exe 파일을 실행합니다.

참고 항목

기타 리소스

마크업 샘플
Workflow Markup Overview

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.