Я работаю над веб-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
Ссылка обратно HTTP -ответ на его http -запрос в одновременном выполнении ⇐ C#
Место общения программистов C#
1739167621
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.
[b] Моя проблема заключается в том, что, как только я строю свои запросы http get в одновременную конструкцию, я больше не могу связать каждый ответ, его исходный запрос. [/b]
Есть ли способ достичь того, что я пытаюсь сделать? Или моя попытка бесполезно или плохой дизайн вместе? < /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 последовательно, сохраняя связь между запросом и ответом.
Подробнее здесь: [url]https://stackoverflow.com/questions/79426179/link-back-http-response-to-its-http-request-in-a-concurrent-execution[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия