В Windows Azure, в какой файл следует поместить информацию о хранилище для ASP.NET MVC? - PullRequest
0 голосов
/ 02 июля 2011

Я играю в Windows Azure, создавая проект ASP.NET MVC, я проверил WAPTK (Учебный комплект по платформе Windows Azure), Google и здесь, чтобы найти ответы на мой вопрос, но не смог найти ответ,В каком проекте ASP.NET MVC я создаю контейнеры для облачного хранилища?(В WAPTK есть практическая лаборатория, которая использует веб-формы и помещает контейнеры хранения в частичный класс _Default.)

Ответы [ 3 ]

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

В каком файле ASP.NET MVC я создаю контейнеры для облачного хранилища?(В WAPTK есть практическая лаборатория, которая использует веб-формы и помещает контейнеры хранения в частичный класс _Default.)

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

Я бы порекомендовал:

  • поместить этот класс и его интерфейс в библиотеку классов (не в вашем ASP.Net project)
  • поместите данные конфигурации в файлы csdef / cscfg
  • , если вы планируете использовать только фиксированный список контейнеров, либо:
    • создайте их заранееустановки вашего приложения - например, из простого приложения командной строки
    • или создайте их по вызову в инициализации Global.asax
  • , если вы планируете динамически создавать контейнеры(например, для разных пользователей или действий), затем создайте их из кода контроллера / сервиса, как требуется - например, когда пользователь регистрируется или когда действие впервые выполняется.
  • , если действия могут произойтиНесколько раз, и вы действительно не знаете, будет ли контейнер находиться там или нет, затем найдите какой-нибудь способ (например, хеш-таблицу в памяти или постоянную таблицу в sql), чтобы гарантировать, что вам не нужно постоянно вызывать CreateIfNotExist- помните, что каждый вызов CreateIfNotExist будет замедлять работу вашего приложения и стоить вам денег.
  • для «обычных» операций доступа, таких как чтение / запись / удаление, обычно они выполняются из кода контроллера - или из служебного кода позадиКонтроллер

Если вы сомневаетесь, подумайте об этом немного как: «Как бы я разделил свою логику, если бы я создавал папки на локальном диске - или на общем сетевом диске»

Надеюсь, это немного поможет.

Стюарт

0 голосов
/ 02 июля 2011

Вы обязательно должны использовать хранилище BLOB-объектов для своих файлов. Это не особенно сложно, так как это новый проект, вам не нужно использовать диски Azure.

Если вы просто используете хранилище BLOB-объектов для показа изображений для своего сайта, тогда вы можете ссылаться на них с помощью обычного тега в html, например,

<img src="http://myaccountname.blob.core.windows.net/containername/filename">

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

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

в вашем файле servicedefinition.csdef вам нужно будет включить

<Setting name="StorageAccount" />

и затем добавьте

<Setting name="StorageAccount" value="DefaultEndpointsProtocol=https;
AccountName=[youraccountname];AccountKey=[youraccountkey]" />

в файл serviceconfiguration.csfg.

Затем вы можете использовать Windows Azure SDK для доступа к этой учетной записи из вашей веб-роли. Начиная с

Dim Account As CloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageAccount"))
Dim blobClient As CloudBlobClient = Account.CreateCloudBlobClient

Оттуда вы можете

  • Чтение / запись в BLOB-объекты
  • удалить капли
  • список BLOB-объектов
  • создание ограниченных по времени URL-адресов с использованием сигнатур общего доступа.

Большой ресурс здесь от Стива Маркса. Что, хотя и касается доступа к хранилищу BLOB-объектов из Silverlight, который вы не используете, действительно дает вам много информации в одном месте.

Ваш вопрос не был очень конкретным, но это должно дать вам представление, с чего начать.

@ Faester верен, вам, вероятно, понадобится какой-нибудь ресурс, либо хранилище таблиц, либо SQL Azure для хранения ссылок на эти файлы.

0 голосов
/ 02 июля 2011

Я не уверен, правильно ли я вас понимаю, но в целом файлы и Azure не очень хорошо сочетаются друг с другом. Все изменения, хранящиеся в локальной файловой системе, являются нестабильными и гарантированно будут действовать только в течение текущего экземпляра Azure. Однако вы можете создать большой двоичный объект и смонтировать его как локальный диск , что сделает данные постоянными. Этот подход имеет некоторые ограничения, так как он позволяет писать один экземпляр Azure и максимум 8 читателей.

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

Недавно я отправился на презентацию, где докладчик довольно подробно исследовал хранилище таблиц Azure, и его выводы заключались в том, что ограничение ключей секций группами из 100-1000 элементов даст наилучшую производительность. (Ключи секционирования используются Azure для определения, какие данные группировать.)

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