2017-12-20 17 views
1

Windows Workflow Foundation 4.5를 사용하고 웹 API를 통해 워크 플로를 실행하고 싶습니다. MS가 AppFabric 지원을 종료 할 때 내 호스팅 옵션은 무엇입니까? Windows Workflow Foundation을 사용해야합니까, 아니면 제 3 자 솔루션을 조사해야합니까?Windows Workflow Foundation 온 프레미스 호스팅 및 웹 API

이것은 전제이며 하늘빛을 사용할 수 없습니다. 몇 가지 워크 플로를 수행했으며 WWF가 사용하기가 어렵지는 않지만 호스트하는 방법이 명확하지 않은 것 같습니다. AppFabric없이 웹 API 프로젝트 내부에서 호스팅 할 수 있습니까?

내 주요 관심사는 IIS 응용 프로그램 풀을 WorkflowApplication 또는 서버가 충돌을 사용하여 재활용하는 경우 워크 플로우를 재개 할 수있는된다. WCF를 사용하지 않고 웹 API 내부에서 WorkflowApplication을 사용할 계획입니다.

사람이 AppFabric이에 대한 책임이 사용자 정의 기능을 구현하는 방법에 대한 올바른 방향으로 날 지점 수 있습니까? 다시 시작, 로깅 등.

보낸 사람 MS : IIS를 사용하여 AppFabric을 워크 플로의 기본 호스트로 사용합니다. AppFabric을 사용하는 워크 플로의 호스트 응용 프로그램은 IIS 단독으로 HTTP에 대한 종속성을 제거하는 Windows 정품 인증 서비스입니다.

IIS 7.0은 여러 가지 이유로 주기적으로 응용 프로그램 풀을 재활용합니다. 응용 프로그램 풀이 재활용되면 IIS는 이전 풀에 대한 메시지 수락을 중지하고 새 요청을 받아들이 기 위해 새 응용 프로그램 풀을 인스턴스화합니다. 응답을 보낸 후에도 워크 플로가 계속 작동하면 IIS 7.0은 수행중인 작업을 인식하지 못하고 호스팅 응용 프로그램 풀을 재활용 할 수 있습니다. 이 경우 워크 플로가 중단되고 추적 서비스는 비어있는 이유 필드가있는 1004 - WorkflowInstanceAborted 메시지를 기록합니다. 지속성을 사용하는 경우

, 호스트는 명시 적으로 마지막 지속성 지점에서 중단 된 인스턴스를 다시 시작해야합니다.

AppFabric을 사용하는 경우 지속성을 사용하면 워크 플로 관리 서비스는 마지막 성공한 지속 지점에서 워크 플로를 다시 시작합니다. 지속성을 사용하지 않고 워크 플로가 요청/응답 패턴 외부에서 작업을 수행하면 워크 플로가 중단 될 때 데이터가 손실됩니다.

+0

당신은 워크 플로우 상태에 대한 자신의 지속성 솔루션을 구현 같이 반드시 한, AppFabric를 사용할 필요가 없습니다 SqlServer와 같은 데이터베이스에서. – zcui93

+0

그게 내가 할 계획이지만 어디서부터 시작해야 할지도 모르겠다. 샘플 가져 왔니? – Fab

답변

0

한 호스팅 전략은 웹 API 메소드는 단순히 (MSMQ 또는 토끼 MQ 등) 큐에 메시지를 넣어 가지고 있고, 실제로 워크 플로 인스턴스를 호스팅하는 백 엔드 Windows 서비스를하는 것입니다. 백엔드 서비스는 지속적으로 큐를 읽고 필요한 올바른 워크 플로를 시작합니다.

워크 플로를 종료 할 수는 IIS 응용 프로그램 풀 재생 이벤트로 실행되지 않습니다 이쪽으로.

워크 플로가 완료 될 때까지 웹 API 메서드를 기다리려면 대기열에 "상관 관계 메시지"가 도착할 때까지 기다렸다가 작업이 완료되었음을 알릴 수 있습니다. 또는 DB 테이블에 WF 인스턴스 결과를 저장할 수 있습니다.

는 실제로 앱 패브릭을 사용하지 않는 것이 좋습니다 단순히 더 나은 유연성을 위해 자신의 호스팅 서비스를 압연. 게다가 원하는 행동으로 구현하기가 상대적으로 간단합니다. 여기

내가 그 설계에 도움이나 아이디어를 줄 것이다 희망도있다 :

A crude diagram... but could help. :)

+0

감사합니다.다소 복잡하고 비현실적인 작업 흐름을 구현하기에는 복잡합니다. 프로젝트에 들어가서 사용할 수 있어야하는 것을 구현할 시간이별로 없습니다. 이 시점에서 모든 작업을 수행해야하는 경우 Windows 워크 플로 대신 일부 타사 솔루션을 테스트 할 수있을 때까지 모든 논리를 코딩 할 것입니다. – Fab