Каков наилучший способ хранения файлов в веб-приложении (asp.net + wcf)? - PullRequest
4 голосов
/ 29 июля 2010

Я создаю веб-приложение, использующее asp.net и WCF как трехуровневую архитектуру, которая в основном похожа на социальный веб-сайт. Пользователи могут зарегистрироваться в системе и загружать изображения своих профилей, документы, видеоклипы и т. Д. Итак, я хочу знать, каков наилучший способ хранения этих файлов? На стороне wcf или на стороне веб-приложения?

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

спасибо всем заранее.

Ответы [ 2 ]

2 голосов
/ 29 июля 2010

Это зависит от того, насколько вы ожидаете получить эту вещь.

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

Один из подходов состоит в том, чтобы загружать физические файлы на веб-сервер, чтобы пользователи могли быстро загружать файлы, а затем иметь фоновую службу координатора, которая запускается при загрузке, возможно, с использованием FileWatcher. Эта служба распространяет файл на все узлы веб-фермы, чтобы последующие запросы к другим узлам находили файл.

Если это небольшое приложение, предназначенное только для внутри компании, на веб-сервере все в порядке, со следующими условиями:

  • Вы имеете полный контроль над хост-сервером, так что вы можете настроить соответствующие разрешения для папок.
  • Вы пишете файл, сохраняя и получая код таким образом, чтобы его можно было перенести на более низкие уровни без особых усилий. Сделайте это через интерфейс и внедрите реализацию
2 голосов
/ 29 июля 2010

Я думаю, что вопрос лучше поставить следующим образом:

  • сохранить в папке в веб-приложении или рядом и сохранить метаданные в базе данных
  • захватитьсохраненные изображения из базы данных через WCF

Второй подход, скорее всего, будет довольно медленным.Получение информации через службу, ее преобразование, использование http-обработчика с правильным типом MIME для вывода двоичного потока в браузер ...

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

Обновление для нового вопроса:

Поскольку приложения winforms / другие проекты не были в вашем первоначальном вопросе, это превращается в нечто новое.В этом случае вы переходите к некоторым из следующих сценариев:

  • Используйте уровень WCF в качестве точки соприкосновения и сохраняйте изображения за этим сервисом.Как я уже сказал, это будет дополнительная операция по переносу байтовых массивов.
  • Сохраните изображения на уровне веб-интерфейса и предоставьте сервис (asmx или WCF) для предоставления изображений вашему клиенту winforms.
  • Создайте общий ресурс для клиента winforms на сервере, где работает веб-интерфейс и где находятся изображения.Конечно, будьте осторожны с безопасностью и возможными взломами.

Это зависит от того, какой сценарий наиболее часто используется.Я предполагаю, что слой веб-интерфейса будет в основном использоваться, а формы win-win будут использоваться для манипулирования изображениями?В этом случае для таких манипуляций также доступны сторонние элементы управления ASP.NET, поэтому потребность в клиенте winforms уменьшится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...