방법: 워크플로 및 워크플로 서비스에 대한 지속성 활성화
워크플로 및 워크플로 서비스에 대해 지속성을 사용하도록 설정하는 방법에 대해 이 문서에서 설명합니다.
워크플로에 대한 지속성 활성화
WorkflowApplication 클래스의 InstanceStore 속성을 사용하여 인스턴스 저장소를 WorkflowApplication에 연결할 수 있습니다. Persist 메서드는 애플리케이션에 연결된 인스턴스 스토리지에 워크플로를 저장하거나 유지합니다. Unload 메서드는 인스턴스 저장소에 워크플로를 유지한 다음 메모리에서 인스턴스를 언로드합니다. Load 메서드는 인스턴스 지속성 저장소에 저장된 워크플로 데이터를 사용하여 워크플로를 메모리로 로드합니다.
Persist 메서드는 다음 단계를 수행합니다.
- 워크플로 스케줄러를 일시 중지하고 워크플로가 유휴 상태로 전환될 때까지 기다립니다.
- 워크플로를 지속성 저장소에 유지하거나 저장합니다.
- 워크플로 스케줄러를 다시 시작합니다.
Unload 메서드는 다음 단계를 수행합니다.
- 워크플로 스케줄러를 일시 중지하고 워크플로가 유휴 상태로 전환될 때까지 기다립니다.
- 워크플로를 지속성 저장소에 유지하거나 저장합니다.
- 워크플로 인스턴스를 메모리에서 삭제합니다.
워크플로가 비지속성 영역에 있는 경우에는 워크플로가 비지속성 영역을 종료할 때까지 Persist 메서드와 Unload 메서드가 모두 차단됩니다. 비지속성 영역이 완료되면 메서드에서 지속 또는 언로드 작업을 계속합니다. 제한 시간이 경과할 때까지 지속성 프로세스가 너무 오래 걸리거나 비지속성 영역이 완료되지 않는 경우 TimeoutException
이(가) throw됩니다.
코드에서 지속성 활성화
WorkflowServiceHost 클래스의 DurableInstancingOptions 멤버는 인스턴스 저장소를 WorkflowServiceHost에 연결하는 데 사용할 수 있는 InstanceStore 속성이 있습니다.
// wsh is an instance of WorkflowServiceHost class
wsh.DurableInstancingOptions.InstanceStore = new SqlWorkflowInstanceStore();
WorkflowServiceHost를 열 때 DurableInstancingOptions.InstanceStore가 null이 아니면 지속성이 자동으로 설정됩니다.
일반적으로 서비스 동작은 InstanceStore 속성을 사용하여 워크플로 서비스 호스트에 사용할 구체적인 인스턴스 저장소를 제공합니다. 예를 들어, SqlWorkflowInstanceStoreBehavior
은(는) SqlWorkflowInstanceStore의 인스턴스를 만들고, 구성하고, DurableInstancingOptions.InstanceStore에 할당합니다.
애플리케이션 구성 파일을 사용한 지속성 활성화
다음 코드를 app.config 또는 web.config 파일에 추가하여 애플리케이션 구성 파일을 통해 지속성을 사용하도록 설정할 수 있습니다.
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="myBehavior">
<sqlWorkflowInstanceStore connectionString="Data Source=myDatabaseServer;Initial Catalog=myPersistenceDatabase" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Important
사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 권장됩니다. Azure SQL에 연결하려는 경우, 권장되는 인증 방법은 Azure 리소스에 대한 관리 ID입니다.
.NET