2012-01-10 4 views
3

У меня возникла проблема с попыткой получить рабочий процесс (WF4) для вызова долгого срока службы WCF, а затем возобновить обработку, когда служба WCF завершена. Нижеприведенная диаграмма дает приблизительный план того, чего я пытаюсь достичь. Если бы вы могли указать мне на любые образцы, демонстрирующие этот сценарий (или что-то очень похожее), было бы весьма полезно. Для информации я видел много примеров WF для WF, которые действительно не помогли.WF4, вызывающий службу WCF

enter image description here

+0

использованием WCF рабочего процесса или пользовательской активности расширений? – Will

+0

Привет, мы пытаемся вызвать обычную службу WCF из рабочего процесса, размещенного в WFSH (хост службы рабочего процесса). – user321271

ответ

0

Рассматривали ли вы корреляции? Это обрабатывается для вас WF4? в WF3 это не предлагалось из коробки. Это означало, что если вы отправили запрос из долгого обслуживания WF3, не имело бы представления о том, к какому экземпляру рабочего процесса отправляются ответные сообщения.

Без корреляции обратный вызов из WCF не будет перенаправлен на экземпляр рабочего процесса ожидания.

UPDATE

Вы пишете корреляционный маркер в сообщение обратного вызова?

UPDATE

К сожалению у меня нет примеров, как я не являюсь пользователем WF4. Мне пришлось внедрить корреляцию в WF3, поскольку она не предлагала эту функцию. Для этого я создал службу поиска, которая сопоставила значения корреляции с экземплярами экземпляра рабочего процесса, а входящие вызовы могли затем нацеливать конкретные экземпляры через wsHttpContextBinding.

Но WF4 позволяет вам инициализировать и следить за корреляцией при каждой операции отправки и получения. Вы можете прочитать об этом здесь:

http://blogs.msdn.com/b/endpoint/archive/2010/01/04/what-s-a-correlation-and-why-do-i-want-to-initialize-it.aspx

http://msdn.microsoft.com/en-us/library/ee358755(VS.100).aspx

+0

Привет, Хью, мы пытаемся использовать транзакцию Send + ReceiveReplyForSend в контейнере CorrelationScope. Мы надеемся, что активность контейнера CorrelationScope будет направлять ответное сообщение. – user321271

+0

Обновил мой ответ с другой возможностью. Казалось бы, теперь они предлагают коррелированную связь с запросом-ответом в WF4. –

+0

Привет, Хью, есть ли у вас примеры написания токена корреляции в сообщении обратного вызова? В службе WCF я просто использую OperationContext.Current.GetCallbackChannel () – user321271