Мне нужно кэшировать некоторое количество XML из веб-сервиса в локальный файл XML для использования моим веб-приложением.
Существует два веб-сервиса: один возвращает данные, а второй возвращает дату / время последнего изменения данных.
Размер файла xml может варьироваться от 50 КБ до 500 КБ
В настоящее время у меня есть исполняемый файл, который запускается из планировщика Windows, который выполняет следующее.
- Проверьте дату и время последнего изменения из WebService
- Проверка даты и времени, когда локальный XML-файл DateTime был изменен в последний раз
- Сравните даты, чтобы определить, продолжить ли
- Извлечь данные из веб-сервиса в локальную строку
- Запись данных в локальный файл myxml.temp
- Переименуйте существующий живой файл myxml.xml в myxml.delete
- Переименуйте файл myxml.temp в myxml.xml
- Удалить файл myxml.delete
Я выполняю начальную запись, используя FileInfo.CreateText () и TextWriter.
Я выполняю переименования и удаления, используя FileInfo.MoveTo и FileInfo.Delete.
Это довольно надежно, поскольку переименования выполняются быстро, однако мы все равно получаем ряд ошибок, связанных с отказом в доступе, поскольку файлы все еще используются.
Есть ли у кого-нибудь совет относительно более надежного / надежного способа сделать это? Есть ли что-то встроенное, что я мог упустить из-за управления локальным файлом, подобным этому?