문제

우리는 현재 다른 시스템의 웹 서비스에 대한 모든 종류의 기술 세부 사항을 추상화하는 시스템을 구축하고 있습니다. 엔터프라이즈 버스와 비슷하지만 조금 더합니다.

우리는 요청을 처리하기 위해 Windows 워크 플로우를 사용하기로 결정했습니다. 어떤 종류의 행동이 요청되는지 알아 내 자마자, 우리는 조치를 처리하도록 특별히 설계된 워크 플로를 시작할 것입니다. 이제 우리가 호출 할 웹 서비스 중 일부는 비동기식이므로 워크 플로가 답변을 기다려야합니다. 기본 아이디어는 우리가 우리의 마지막에 콜백 웹 서비스를 구현하고 콜백이 '어떻게 든' '' '달리기 워크 플로우에 데이터를 제공 할 때 답을 기다리고있는 실행중인 워크 플로에 데이터를 제공한다는 것입니다.

지금까지 나는 두 가지 가능성을 보았습니다.

  1. externaldataexchangeservice
  2. Workflowqueingservice

첫 번째 서비스는 비교적 사용하기 쉽지만 이벤트 기반이므로 이벤트를 놓치면 데이터를 놓치게됩니다. 우리는 큐 기반 솔루션이 필요합니다. 기술적으로 웹 서비스에서 콜백을 수신 할 수 있기 때문에 콜백을 곧 얻을 수있는 동기 응답을 받기 전에도 웹 서비스에서 콜백을받을 수 있기 때문입니다.

두 번째 서비스는 완벽 해 보였지만 사용 방법은 매우 제한적입니다. 대기열에 항목을 얻는 것은 매우 간단하지만, 우리는 그렇게하기 전에 대기열이 존재하는지 확인해야합니다. 그리고 큐를 만드는 것은 활동의 실행 재정의에서만 가능해 보인다. 우리는 다양한 워크 플로를 가지고 있기 때문에 초기화에서 일부 작업을 수행하는 기본 워크 플로 클래스가 있으며 그곳에서 대기열 생성을 매우 좋아하므로 특별한 "초기화"활동을 만들 필요가 없습니다. 모든 워크 플로는 시작해야합니다. 또한 새 항목이 기본 클래스에있을 때 알림을 받고 싶습니다. 따라서 특정 워크 플로는 대기열에 데이터가 있다는 것을 알기 위해 Waithandle에서만 기다려야합니다. 마지막으로 특정 워크 플로의 코드 활동 (WaithAndle이 신호를 보낸 후)에서 큐의 데이터를 읽을 수 있기를 원합니다.

누구든지 아이디어가 있습니까? 내가 언급 한 두 서비스와 함께 할 필요는 없지만 가능한 한 간단하게 유지하고 싶습니다.

도움이 되었습니까?

해결책 2

내 가정이 잘못되었다는 것이 밝혀졌습니다. 나는 시나리오를 테스트하고 문제를 해결했다고 확신했지만 동료와의 토론 후에는 그것을 다시 테스트하고 externaldataexchangeservice는 잘 작동했습니다. 따라서 더 복잡한 솔루션을 찾을 필요가 없습니다. 지금은 ExternalDataexChangeservice를 사용합니다.

다른 팁

WF에서 런타임 또는 서비스와 실제 워크 플로 사이의 모든 통신은 대기열 기반입니다. externaldataexchangeservice는 이벤트를 사용하는 것으로 보이지만 이들은 워크 플로우 퀴지 서비스와 워크 플로 큐 메커니즘 주위의 얇은 층일뿐입니다.

일반적으로 나는 Workflowqueingservice를 완전히 제어 할 수 있으므로 사용하는 것을 선호합니다. 기본 사항을 이해하면 대부분의 경우 externaldataexchangeservice와 함께 작업하기가 더 쉽습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top