Я бы не пытался поддерживать открытое соединение. Будет много крайних случаев, когда соединение станет непригодным для использования, и ваш код для управления соединением и проверки правильности размещения старого duff-соединения должен быть абсолютно пуленепробиваемым.
Я рекомендую более распространенную схему использования соединения: открывать, использовать, закрывать / утилизировать. Код будет намного легче писать и поддерживать. Убедитесь, что вы избавляетесь от всех объектов команд и соединений, как только закончите с ними. Контролируйте свое приложение с помощью инструмента профилирования и проверяйте количество открытых соединений с базой данных на сервере, чтобы убедиться, что ваш код работает так, как вы планировали.
Как часто вам нужно выгружать данные в базу данных (и, следовательно, открывать / использовать / закрывать соединения с базой данных), зависит от ряда факторов, таких как, сколько данных будет находиться в памяти перед сбросом, возможности базы данных сервер, использующий данные, и риск потери данных, если вы приняли их от веб-службы, но не записали их в базу данных и в свою службу, или на сервере произошел сбой.
Если ваши данные ценны, вы можете рассмотреть возможность использования двух процессов. Один процесс вызывает веб-сервис и надежно сохраняет полученные данные в очереди сообщений. Другой процесс читает сообщения из очереди и помещает данные в сообщение в базу данных.
Этот способ обработки этого процесса означает, что вы можете получать данные, пока база данных временно не работает, и все данные в конечном итоге будут храниться в базе данных.
Несмотря на то, что это надежное решение, его также легко считать излишним, в зависимости от ваших требований.