ASP.NET: проблема связи в кластерной среде - PullRequest
0 голосов
/ 22 октября 2010

Я довольно занят с программированием на ASP.NET, и я немного запутался в проблеме, с которой я сейчас сталкиваюсь.

Мы, как разработчики в моей компании, живем в кластерной среде, подобной показанной на рисунке

alt text

Ничего особенного. Видите ли, сайты IIS дублируются на всех серверах FrontEnd. Бизнес-логика находится на BackEnds, которые находятся вместе с БД и файловой системой NAS, за брандмауэром.

Таким образом, связь между публичным пространством и защищенным разрешается только через определенные каналы, с конкретными запросами, к определенным IP-адресам и протоколам.

Теперь нас попросили создать сайт, на котором пользователь может настраивать свою собственную среду, загружать изображения , которые будут отображаться на его домашней странице , и другие функции.

В классической конфигурации пользователь загружает изображение, которое написано в папке в корне сайта, и затем HTML обращается к этому изображению, чтобы заполнить любой элемент управления для его отображения. Но когда пользователь подключается к нашему сайту, балансировщик нагрузки выберет один конкретный интерфейс, который не будет одинаковым для каждого сеанса. Таким образом, пользователь загружает свой файл, отключается, а затем возвращается только для того, чтобы обнаружить, что его изображение пропало, поскольку балансировщик нагрузки направил свой запрос в другой интерфейс, где изображение не существует.

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

Моя проблема: когда пользователь подключается к своей странице, как я могу ссылаться в HTML на изображение, которое находится не на компьютере, на котором работает сайт, а в полностью скрытой файловой системе?

Я подумал о написании WCF, который обслуживает изображение как поток байтов, но какой элемент управления ASP.NET использовать на странице для добавления содержимого потока, и Как?

Я знаю, что опрос сообщества экспертов даст мне лучший способ сделать это.

Надеюсь, это достаточно ясно.

Большое спасибо за повторы и извините за плохую английскую форму.

1 Ответ

1 голос
/ 02 июля 2012

Вместо того, чтобы использовать вашу файловую систему для пользовательских изображений, я бы порекомендовал вам воспользоваться решением CDN, таким как Amazon S3 или другим, которое вам нравится.Таким образом, вам не нужно заботиться о том, где изображение хранится или запрашивается, к нему всегда нужно обращаться через CDN url (дается, когда вы загружаете изображение в CDN программно), где url должен быть в вашей базе данных.CDN освобождает вас от многих проблем, с которыми вам придется столкнуться при хранении в вашем регионе.

Даже если вы не любите использовать S3, тогда ваш вариант достаточно хорош для разработки простой службы WCF / WEB для загрузки/ служить изображения.

...