Массовое обновление веб-сервиса
Есть ли веская причина предлагать "пакетное обновление" версии методов обновления в веб-сервисе.NET?
Есть ли значительное преимущество перед множественными вызовами, асинхронными или синхронными, по HTTP?
Моим первым импульсом является предложение асинхронных вызовов и включение идентификатора записи во входную композицию, а также отмена требования предложить пакетную операцию в качестве микрооптимизации. В качестве альтернативы я бы попросил потребителя использовать итеративный цикл и сделать несколько вызовов.
Я не хочу делать плохое предложение.
2 ответа
Мы предлагаем createRecord() и createRecordAsync() / createRecordCompleted (обработчик событий)
Мы играли с идеей создания createRecordBatch() в течение 10 секунд, прежде чем начали замечать проблемы с ним. Наш метод createRecord() принимает, среди прочего, идентификатор сеанса, creatorHandle для пользователя и строковый массив, содержащий все значения. Чтобы реализовать пакетную загрузку, нам необходимо создать двумерный массив для значений, массив для хранения creatorHandle и один идентификатор сеанса.
Тем не менее, наши веб-сервисы просто действуют как клин между нашими внешними поставщиками и нашим основным приложением. Основное приложение не поддерживает пакетную загрузку. По сути, то, что мы делали, имитировало пакетную загрузку для наших поставщиков. Мы должны были бы проанализировать их данные в отдельных записях. Не было никакого смысла предлагать ложные функции нашим пользователям, которых не было, потому что мы не уменьшали бы количество попаданий в базу данных. Фактически, дополнительная работа по обработке пакетных нагрузок заключалась в том, чтобы отнимать работу у клиентской стороны и размещать ее на стороне сервера, что казалось нелогичным.
Более разумно было, чтобы наши поставщики сами строили логику для нескольких заявок, собирая данные и делая несколько отдельных вызовов наших методов веб-служб. Я считаю, что только один из них делает асинхронные вызовы... остальные довольны синхронными.
Я полагаю, что причина предложения "Пакетных обновлений" состоит в том, чтобы уменьшить нагрузку на транзакции на вашем сервере баз данных. Тем не менее, если это не проблема, я бы не стал предлагать один.