У меня возникла проблема с попыткой получить рабочий процесс (WF4) для вызова долгого срока службы WCF, а затем возобновить обработку, когда служба WCF завершена. Нижеприведенная диаграмма дает приблизительный план того, чего я пытаюсь достичь. Если бы вы могли указать мне на любые образцы, демонстрирующие этот сценарий (или что-то очень похожее), было бы весьма полезно. Для информации я видел много примеров WF для WF, которые действительно не помогли.WF4, вызывающий службу WCF
ответ
Рассматривали ли вы корреляции? Это обрабатывается для вас WF4? в WF3 это не предлагалось из коробки. Это означало, что если вы отправили запрос из долгого обслуживания WF3, не имело бы представления о том, к какому экземпляру рабочего процесса отправляются ответные сообщения.
Без корреляции обратный вызов из WCF не будет перенаправлен на экземпляр рабочего процесса ожидания.
UPDATE
Вы пишете корреляционный маркер в сообщение обратного вызова?
UPDATE
К сожалению у меня нет примеров, как я не являюсь пользователем WF4. Мне пришлось внедрить корреляцию в WF3, поскольку она не предлагала эту функцию. Для этого я создал службу поиска, которая сопоставила значения корреляции с экземплярами экземпляра рабочего процесса, а входящие вызовы могли затем нацеливать конкретные экземпляры через wsHttpContextBinding.
Но WF4 позволяет вам инициализировать и следить за корреляцией при каждой операции отправки и получения. Вы можете прочитать об этом здесь:
http://msdn.microsoft.com/en-us/library/ee358755(VS.100).aspx
Привет, Хью, мы пытаемся использовать транзакцию Send + ReceiveReplyForSend в контейнере CorrelationScope. Мы надеемся, что активность контейнера CorrelationScope будет направлять ответное сообщение. – user321271
Обновил мой ответ с другой возможностью. Казалось бы, теперь они предлагают коррелированную связь с запросом-ответом в WF4. –
Привет, Хью, есть ли у вас примеры написания токена корреляции в сообщении обратного вызова? В службе WCF я просто использую OperationContext.Current.GetCallbackChannel
использованием WCF рабочего процесса или пользовательской активности расширений? – Will
Привет, мы пытаемся вызвать обычную службу WCF из рабочего процесса, размещенного в WFSH (хост службы рабочего процесса). – user321271