Считается ли плохой практикой использование HTTP-клиента внутри пакета SSIS? Сценарий задачи C# через веб-запросы?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Считается ли плохой практикой использование HTTP-клиента внутри пакета SSIS? Сценарий задачи C# через веб-запросы?

Сообщение Anonymous »

В настоящее время я работаю над обновлением пакета SSIS в .Net Framework 4.7 и создаю новую задачу сценария C#.
Я использую устаревший сценарий, который изначально использовался и, судя по всему, некоторое время назад.
Я хотел очистить свою версию, чтобы следовать лучшим практикам и быть более эффективен, как я думаю, и вам следует, когда вы очищаете сорняки и т. д., однако я новичок в пакетах SSIS, так что простите меня.
Базовый обзор сценария:
По сути, это извлекает большой набор данных строковых HTTP запросов из БД, которые используются для запроса внешнего API и обрабатывать каждую запись в цикле индивидуально. Добавьте запрос к модели, затем выполните запрос с помощью HttpWebRequest, сохраните ответ сервера для этой модели, запишите ответ для этой записи и т. д.
Проблема< /h2>
Проблема в том, что для HTTP-запросов используется HttpWebRequest, поэтому я обновил использование HttpClient и внедрил его в свой помощник методы через метод Main, а затем использовать их на протяжении всего срока службы моих сценариев.
Поскольку HttpClient имеет только методы Async, я использовал их и ждал > ответ. Я вызываю нечто похожее на метод ниже в цикле ForEach, чтобы выполнить запрос для каждой записи в наборе данных.

Код: Выделить всё

public async System.Threading.Tasks.Task ReqHelper()
{
res = await client.GetAsync(url);
}
Потому что я ждал ответа, но родительский метод Main синхронен и иначе быть не может (я читал, что существует много проблем с пакетами Async и SSIS в целом), столкнусь ли я с проблемами с ответами, потенциально возвращающимися к другим записям? Я также беспокоился, что он может покинуть задачу сценария до завершения всех записей в DataSet из-за ожидания и перейти к следующей задаче в потоке управления пакетами, не завершив ее.
Я добавил это (я знаю, что это плохая практика и ее не следует использовать), но я хотел посмотреть, есть ли другой способ гарантировать, что мы не перейдем к следующей задаче в поток управления:

Код: Выделить всё

MyParentAsyncMethod(InputData).GetAwaiter().GetResult();
Меня беспокоило то, что, возможно, именно поэтому они вообще использовали HttpWebRequest, и я постарался проявить смекалку и сделать код лучше и более удобным. date.
Простите меня, если можно, если я могу быть наивным в некоторых аспектах этого, я впервые работаю с пакетами SSIS.
Я с радостью приветствуем любые советы или помощь сообщества по этому вопросу

Подробнее здесь: https://stackoverflow.com/questions/789 ... e-task-scr
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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