Какова лучшая практика для временного хранения изображений, пока не будет создан объект их базы данных? - PullRequest
0 голосов
/ 21 марта 2011

Я работаю в ASP.NET 4.0, и у меня есть большая веб-форма, представляющая одну бизнес-единицу. Пользователь может загрузить несколько изображений, связанных с объектом. Сущность создается и получает GUID при отправке формы. Файлы будут сохранены в файловой системе.

Проблема заключается в том, что мы должны присвоить файлам имена в соответствии с GUID, назначенным для объекта после его добавления в базу данных. Поэтому, прежде чем нажать кнопку «Отправить», у нас будет несколько файлов изображений, плавающих в подвешенном состоянии.

Существуют очевидные ответы на этот вопрос - вы сохраняете изображения в файловой системе, а затем, когда бизнес-объект создается, вы переименовываете эти файлы. Тем не менее, я считаю, что должны быть очень сильные шаблоны и несколько ключевых деталей, которые могли бы создать очень надежную систему. Какова лучшая практика для этого сценария?

Ответы [ 3 ]

1 голос
/ 21 марта 2011

Одна из приятных особенностей GUID - это то, что они могут быть созданы где угодно. Поэтому попросите ваше приложение создать и назначить GUID, а затем выполнить вставку объекта с предварительно назначенным GUID. Затем ваше приложение имеет GUID для использования в именовании файла.

Если это невозможно, то мне кажется, что ваша схема переименования - лучший выбор.

0 голосов
/ 21 марта 2011

Лично я не буду сохранять загрузки в файловой системе и вместо этого перенесу их в БД. Таким образом, в планах резервного копирования и аварийного восстановления у вас будет на один ресурс меньше, а значит, будет меньше сложностей и, соответственно, меньше затрат на обслуживание. Я использовал это, чтобы сохранить файлы на файловом сервере после их загрузки, затем скопировать их в базу данных после отправки и принятия формы, а затем удалить ее из файловой системы. Также будет скрипт регулярного обслуживания, который очищает папку «limbo» от любых потерянных файлов.

0 голосов
/ 21 марта 2011

Я пишу это так, как вы упомянули «очень надежную систему»:

Я бы постарался предотвратить поддержание любого состояния, кроме вашей базы данных (включая файловую систему), так как это создает больше обслуживаниясложность в долгосрочной перспективе.Вы все равно должны очистить файлы, я бы предпочел вычистить их из базы данных.Файловая система (в большинстве случаев) не идеальна, так как она не:

  • охватывает несколько интерфейсных серверов, поэтому менее масштабируема
  • работает на транзакциях (большую часть времени)
  • когда вы восстанавливаете резервную копию вашей БД, ваши файлы тоже будут в 'Limbo'

Возможно, это не тот ответ, который вы ищете, так как вы не сможетеизмените ваши требования (извините, если это не так), но, как вы упомянули, чтобы сделать систему «очень надежной», я подумал, что это может быть уместно.

Если вы используете SQL 2008, взгляните на FILESTREAM:http://technet.microsoft.com/en-us/library/bb933993.aspx

...