2009-12-08 1 views
0

Я работаю над сайтом ASP.NET MVC, и часть моих требований заключается в том, что пользователи могут сообщать друг другу.Как бы вы могли создавать функции обмена сообщениями, если мне нужно иметь возможность обрабатывать вложение в ASP.NET MVC?

На первый взгляд это не так сложно. Сообщения в наиболее упрощенной форме - это просто таблица «Сообщения» с такими вещами, как «SenderID, ReceiversID (FK), Subject, Message» и т. Д.

Однако, как бы вы справились с «приложением»? Пользователи могут просматривать конфиденциальные PDF-файлы на нашем веб-сайте, содержащие финансовую информацию, и они предполагают, что смогут нажать кнопку «Отправить отчет на», чтобы отправить отчет другому пользователю вместе с текстовым сообщением.

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

Как бы вы справились с этим в ASP.NET MVC?

Я рассмотрел папку с прикрепленными файлами где-то и таблицу вложений, поэтому, если пользователь нажимает «Отправить отчет» или загружает документ, этот файл копируется в папку вложений, а запись создается в таблице «Вложения» ,

Затем, если пользователь нажимает ссылку, имеющую такой маршрут, как/messaging/attachments/{fileID}, он отправит соответствующий файл им. Я мог бы даже поддерживать контрольную сумму каждого файла в таблице вложений/файлов, поэтому, если пользователь отправляет тот же отчет, мы не будем дублировать файл в папке вложений.

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

Это правильный способ сделать что-то подобное или я должен посмотреть на другой подход?

+2

Это по существу, как бы я это сделал. –

+0

Идея выглядит нормально. Если вы используете SQL Server 2008, вы можете подумать об использовании FILESTREAM. Это облегчает доступ к файлам. – LukLed

+0

Вот как я тоже это сделаю ... Просто убейте вас, рассмотрите последствия использования GUID для fileID - это просто еще один уровень безопасности (по неизвестности). Это тот, который я обычно использую (имея в виду дополнительные накладные расходы на использование GUID, а не int). –

ответ

0

Я точно не знаю ваших требований, но вы можете использовать систему CMS или sharepoint. У них будет механика, в которой вы нуждаетесь как для управления документами, так и для создания сообщений. Даже если ваше приложение является отдельным, вы все равно можете интегрировать его с sharepoint в качестве back-end, чтобы выгрузить большую часть сложности.

В большинстве случаев вы заново изобретаете колесо здесь ... и это действительно БОЛЬШОЕ колесо. Старайтесь не запускаться :)

+0

Я не согласен с размером колеса - в ограниченной среде и без необходимости беспокоиться о соответствии стандартам, а это довольно простая проблема. – Murph

+0

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