Ссылка обратно HTTP -ответ на его http -запрос в одновременном выполненииC#

Место общения программистов C#
Ответить
Anonymous
 Ссылка обратно HTTP -ответ на его http -запрос в одновременном выполнении

Сообщение Anonymous »

Я работаю над веб-API C#, который выполняет конкретное действие, используя стороннее API-1, выполняемое одновременно для скорости. Как только я достигну своего результата от стороннего API-1, я дополнительно получу дополнительную обработку, используя стороннюю API-2, которая снова предназначена для выполнения одновременно, результаты, которые будут добавлены к результатам третьего -Парти-API-1, и в конечном итоге вывод из моего API будет подан обратному вызывающему. < /p>
Таким образом br /> Мой API получает вход < /li>
My API вызывает одновременно сторонние API-1, которые я собираюсь сохранить для скорости. < /li>
< li> Мой API вызывает сторонние AAPI-2, снова желая сохранить одновременное выполнение. Призывы к сторонним API-1 и сторонним API-2 выполняются, чтобы я мог завязать выходы для ввода и вернуть результат к вызывающему. Если бы у меня был какой-либо контроль над сторонними API-1 и 2, я бы установил некоторые Correlation-ID в заголовке запроса и ушел в ответе, но я не могу сделать это со своим сторонним API.
Моя проблема заключается в том, что, как только я строю свои запросы http get в одновременную конструкцию, я больше не могу связать каждый ответ, его исходный запрос.
Есть ли способ достичь того, что я пытаюсь сделать? Или моя попытка бесполезно или плохой дизайн вместе? < /P>
.
//I build my get query inputs from my user request
foreach (ParsedInputAddress ia in inaddr)
{
.
.
.

addresses.Add(addrbuilder.ToString());

addrbuilder.Clear();
}
.
//I call the http concurrently
IEnumerable getTasks = addresses.Select(async ia => await httpClient.GetAsync(basepath + ia.ToString()));
var gets = await Task.WhenAll(getTasks);//this tasks will run concurrently

foreach (var getContent in gets)
{
jsonResponse = await getContent.Content.ReadAsStringAsync();

if (jsonResponse != null)
vaddr = JsonSerializer.Deserialize(jsonResponse);

if (vaddr != null && vaddr.address != null)
vaddresses.Add(vaddr.address);
}
< /code>
Я попытался установить пользовательский HTTP-запрос с уникальным GUID, но, поскольку я не имею контроля над сторонним API, я не могу получить этот идентификатор в ответе, чтобы связать их вместе .
Мой последний курорт-сделать это неконкурсным выполнением, чтобы каждый запрос обрабатывался с помощью API-1 и 2 последовательно, сохраняя связь между запросом и ответом.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -execution
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»