Свяжите результат конвейера потока данных TPL с начальным сообщением

Я работаю над созданием конвейера потока данных, который отвечает за асинхронную обработку запросов HttpRequest, отправленных в HttpListener. Чтобы ответить на запрос, мне, возможно, придется выполнить некоторые трудоемкие операции, такие как анализ или извлечение больших объемов данных из базы данных, таким образом, подход потока данных. Я использую HttpListener.GetContextAsync для передачи HttpListenerContext в первый блок в конвейере, который затем обработает запрос и сгенерирует ответ.

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

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


person Jesse Carter    schedule 19.06.2013    source источник
comment
см.: заголовок stackoverflow.com/questions/14612468/   -  person Fabio Marreco    schedule 19.07.2015
comment
Вы создаете конвейер для каждого запроса?   -  person VMAtm    schedule 16.05.2017