Создать одностороннюю службу WCF (запустить и забыть) из XAMLX или как клиент может вызвать службу как одностороннюю, если операция не определена односторонне

Я пытаюсь создать службу XAMLX, которую я могу запустить и забыть.

Но как я могу сделать что-то подобное с XAMLX? У меня нет доступа к интерфейсу контракта для добавления атрибута [OneWay].

Я думал, что если бы я сделал что-то вроде

и поместите ответ перед остальными действиями, служба вернется в этот момент, но это не так. Возвращается только после завершения всего рабочего процесса.

  1. Можно ли сделать возврат службы в этот момент и затем продолжить обработку. другие действия не повлияют на возвращаемую стоимость услуги.

  2. Можно ли создать огонь и забыть службу XAMLX?

  3. Можно ли как-то заставить клиента запускать обычный сервис как oneWay, если предыдущие 2 пункта невозможны?

2 ответа

Если вы хотите одностороннюю обработку вашего Receive деятельность не должна иметь никакого соответствующего SendReply деятельность.

Причина, по которой ответ не отправляется немедленно, заключается в том, что планировщик рабочего процесса работает внутренне, где он ожидает, пока рабочий процесс не перейдет в режим ожидания. Ничего особенного вы не можете сделать с планировщиком, но если вы добавите Delay ниже SendResponse с длительностью 1 миллисекунда.

Как сказал Ладислав, удалите SendResponse, и вы получите одностороннее сообщение.

Не совсем уверен, что вы хотите с огнем и забыть. Если вы запустите службу рабочего процесса, она продолжит работу, даже если вы не отправляете ей больше запросов WCF. Даже если он долго работает или выполняет другую асинхронную работу. Там нет проблем.

Другие вопросы по тегам