Как обрабатывать множество ресурсов приложения в приложении .net? - PullRequest
2 голосов
/ 12 декабря 2011

Я разрабатываю приложение wpf, которое содержит панель с кнопками, упорядоченными по категориям. Каждая кнопка открывает ресурс, это может быть PDF, видео и т. Д. Всего существует 12 категорий с 60 предметами и учебными материалами на категорию. Итого 720.

Сейчас моя установка выглядит следующим образом: Для каждого предмета я сохраняю имя файла соответствующего учебного материала в базе данных (SubjectID: 124; Название: «SomethingSmart»; Ресурс: «SmartPDF.pdf»). Мои ресурсы хранятся на жестком диске для каждой категории / папки. Поэтому, когда я загружаю тему, я просматриваю имя файла в базе данных и добавляю папку, связанную с этой категорией, и загружаю файл.

Теперь что-то говорит мне, что это не идеальная установка. Прежде всего потому, что все файлы хранятся на жестком диске по жестко заданному пути, например:

  • C: \ TeachingMaterials / Категория1 / pdf1.pdf
  • C: \ TeachingMaterials / Категория1 / pdf2.pdf
  • C: \ TeachingMaterials / Категория2 / pdf1.pdf
  • C: \ TeachingMaterials / Категория2 / video2.pdf

Во-вторых, развертывание такого приложения просто смешно: «Да, сначала скопируйте 200 МБ ресурсов на диск C: - О, у вас нет прав администратора, говорите? Тогда это очень плохо».

Есть ли более элегантный способ сделать это? Хотя возможность добавления и удаления учебных материалов через приложение должна оставаться возможной.

Ответы [ 2 ]

1 голос
/ 12 декабря 2011

Существует несколько подходов к распространению файлов.

Во-первых, если вы развертываете приложение в интрасети, где у вас есть доступ к некоторому общему серверу, вы можете хранить файлы по общему пути.Полный (абсолютный) путь, который вы можете сохранить в базе данных для каждого рассматриваемого ресурса.

Во-вторых, для хранения данных в доступных для пользователя папках (AppData или аналогичных).Мне также нравится ответ Рассела ...

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

0 голосов
/ 12 декабря 2011

Вы можете использовать Изолированное хранилище для хранения ваших файлов. Это область хранения файлов, поддерживаемая .NET Framework для вашего приложения, поэтому пользователи могут устанавливать файлы.

В качестве альтернативы вы можете использовать относительные пути и сохранять их в подкаталоге каталога установки.

например:

  • MyWPFApp.exe
  • Ресурсы \
  • Ресурсы \ pdf1.pdf ...

Вы также можете добавить их в качестве ресурсов и редактировать свойства ресурса из встроенного для копирования в выходной каталог.

...