- Эта статья преследует две основные цели: (1) научить вас, что вы можете размещать веб-контент очень экономно; (2) Покажите, как вы можете создать свою собственную систему управления BLOB-объектами в облаке.
- Загрузите исходный код для моего проекта VS 2012 RC:
- Хостинг веб-контента в виде большого двоичного объекта в Windows Azure является мощным средством . Начнем с того, что это чрезвычайно экономично ; это не требует от вас размещения веб-сервера самостоятельно. В результате капли очень рентабельны. Во-вторых, другой мощный аспект размещения html-содержимого в виде больших двоичных объектов в Windows Azure заключается в том, что вы получаете то, что большие двоичные объекты копируются три раза . Он всегда будет доступен с поддержкой SLA.
- Я использую размещенные в Windows Azure большие двоичные объекты для своего блога. Я храню HTML, Javascript и таблицы стилей. Я также управляю видеоконтентом. Вы можете увидеть мою статью в журнале MSDN для более подробной информации.
- Я могу хранить все, что захочу. Когда вы посещаете мой блог, вы извлекаете контент из служб хранения Windows Azure.
Смотрите мою статью в MSDN Magazine, Демократизация видеоконтента с помощью Windows Azure Media Services. http://msdn.microsoft.com/en-us/magazine/jj133821.aspx - Вы можете динамически создавать контент, а затем загружать его в Azure. Я покажу вам, как загрузить веб-страницу в виде блоба.
- Но эта веб-страница может быть динамически создана на основе базы данных. Код, который я собираюсь показать, бесконечно гибок. Вы можете адаптировать его для программного управления всем вашим контентом .
- Я проиллюстрирую последние инструменты и технологии, начиная с июля 2012 года. Это означает, что мы будем использовать:
- Windows 8
- Visual Studio 2012 RC
- Azure SDK и набор инструментов 1.7
- Я предполагаю, что у вас есть учетная запись Azure (доступны бесплатные пробные версии)
| Скачать исходный код | https://skydrive.live.com/embed?cid=98B7747CD2E738FB&resid=98B7747CD2E738FB%212850&authkey=AAWxTD4cCiYKJ60 |
| Бесплатная пробная версия | http://www.windowsazure.com/en-us/pricing/free-trial/?WT.mc_id=A733F5829 |
2 основных типа капли
- Обслуживающие хранения предлагает два типа из блоб s, блок BLOB s и страница блоб сек .
- Вы указываете тип BLOB-объекта при создании BLOB-объекта .
- Вы можете хранить текстовые и двоичные данные в любом из « двух типов BLOB- объектов »:
- Блок BLOB-объектов , которые оптимизированы для потоковой передачи.
- Страничные BLOB-объекты , которые оптимизированы для случайных операций чтения / записи и которые предоставляют возможность записи в диапазон байтов в BLOB-объекте .
- Windows Azure Blob хранение это сервис для хранения больших объемов неструктурированных данных , которые могут быть доступны из любой точки мира через HTTP или HTTPS.
- Один двоичный объект может быть сотни гигабайт в размерах , и одного счета для хранения может содержать до 100 ТБ в блоб с .
- Общие способы использования хранилища BLOB- объектов включают в себя:
- Обслуживание изображений или документов непосредственно в браузере
- Хранение файлов для распределенного доступа
- Потоковое видео и аудио
- Выполнение безопасного резервного копирования и аварийного восстановления
- Хранение данных для анализа локальной службой или службой Windows Azure
- После того , как сгусток был создан, его тип не может быть изменен , и «она может быть обновлена только с помощью операции , соответствующей для этого двоичного объекта типа», то есть, написания блок или списка блока s в блоке сгусток , и писать страницы в страничный блоб .
- Все BLOB s отражают зафиксированные изменения немедленно .
- Каждая версия сгустка имеет уникальный тег, называемый ETag, который можно использовать с условиями доступа , чтобы обеспечить вас изменить только конкретный экземпляр сгустка .
- Любой BLOB-объект можно арендовать для эксклюзивного доступа для записи .
- Когда капля в аренду, только вызовы , которые включают в себя текущий идентификатор аренды может изменить блоб или (для блочного Blob сек) его блок s.
- Вы можете назначить атрибуты для BLOB-объектов, а затем запросить эти атрибуты в соответствующем контейнере с помощью LINQ.
- BLOB-объекты позволяют записывать байты для определенных смещений. Вы можете наслаждаться типичными операциями чтения / записи, ориентированными на блок .
- Обратите внимание на следующие атрибуты хранилища BLOB- объектов :
- Аккаунт хранения
- Весь доступ к хранилищу Windows Azure осуществляется через учетную запись хранилища . Это самый высокий уровень пространства имен для доступа к BLOB-объектам . Аккаунт может содержать неограниченное количество контейнеров, если их общий размер не превышает 100 ТБ .
- Контейнер
- Контейнер обеспечивает группировку набора BLOB- объектов . Все BLOB-объекты должны быть в контейнере. Аккаунт может содержать неограниченное количество контейнеров. Контейнер может хранить неограниченное количество BLOB- объектов .
- капля
- Файл любого типа и размера.
- Аккаунт хранения
- «Один блок блоб может быть до 200GB в размерах». «Страничный блоб , другой тип блоба , может иметь размер до 1 ТБ» и более эффективен, когда диапазоны байтов в файле часто изменяются. Для получения дополнительной информации о BLOB-объектах см. Основные сведения о BLOB- объектах и Page BLOB-объектах .
- Формат URL
- К BLOB-объектам можно обращаться, используя следующий формат URL:
- Http: //. blob .core.windows.net /
Веб-страницы как капли
- Как я уже объяснил, я показываю, как я использую свой блог в Windows Azure [1]. Моя главная страница блога начинается с < iframe > [2] [3]. Этот тег позволяет встроить HTML-страницу в HTML-страницу . Мой пост в основном состоит из склеенных элементов iframe . Одним из таких iframe является меню для статей, которые я создал. Это действительно набор гиперссылок в стиле метро .
- Как я уже говорил, этот пост рассказывает о том, как я питаю свой блог [1]. Этот пост о создании веб-контента и хранении его в виде блога веб-страницы в центре обработки данных MS. Левый фрейм в моем блоге — не что иное, как фрейм с веб-страницей. [2] [3]
- Название веб-страницы — key_links.html. Key_links.html генерируется локально, затем загружается в хранилище блога.
- Панель слева, на которой написано Популярные сообщения . Это просто встроенная веб-страница, которая хранится в виде большого двоичного объекта в Windows Azure . Я загружаю блоб через приложение для Windows 8, которое собираюсь создать для вас.
- Реальная, которую я использую, его немного сложнее . Он использует базу данных SQL Server, которая имеет источник контента, который вы видите в популярных сообщениях .
- Для моего блога все, что я делаю — это постоянно обновляю базу данных. Настраиваемое приложение, которое мы пишем, создает пользовательскую веб-страницу на основе ранее введенных мной данных сервера SQL.
- Затем мое приложение просто перебирает строки в таблице базы данных сервера SQL и генерирует красочную сетку, которую вы видите под названием Популярные сообщения .
- Вы можете увидеть мой блоб, хранящийся здесь:
- https://brunoblogcontent.blob.core.windows.net/blobcalendarcontent/key_links.html
Динамически создается на основе данных SQL Server
- Вы можете перейти непосредственно к содержимому моего блоба.
- https://brunoblogcontent.blob.core.windows.net/blobcalendarcontent/key_links.html
- Дело в том, что Key_links.html генерируется на основе записей в таблице базы данных.
- Вы также можете хранить записи в облаке, используя базу данных SQL (ранее SQL Azure).
- Этот пост будет посвящен тому, как вы должны отправить key_links.html и разместить его в службе хранения Windows Azure.
- Здесь вы можете увидеть связь между данными таблицы и соответствующим содержимым HTML .
- Метроподобный веб-интерфейс, который вы видите там, динамически генерируется приложением Windows 8. Мы не будем делать динамическое создание здесь.
- Я использовал Visual Studio 2012 RC для написания приложения для Windows 8. Для загрузки всего необходимого мне необходим Windows Azure SDK и Tooling.
Добавление приложения WPF
- В меню Файл выберите Новый, а затем нажмите Проект .
- В диалоговом окне « Новый проект » выберите один из типов проектов на левой панели.
- Выберите Windows шаблона проекта из правой панели.
- На средней панели выберите Приложение WPF.
- Введите имя для нового проекта.
- Я выбрал UploadBlob
Создание приложения WPFМы можем начать перетаскивать элементы управления поверх. Мы будем перетаскивать кнопки, текстовые поля и метки. На самом деле, я предоставлю вам код XAML. В приложениях WPF пользовательский интерфейс встроен в XAML.
- Это только для иллюстрации. Я предоставлю вам весь код XAML через минуту, чтобы вам не пришлось ничего перетаскивать.
Перетаскивание элемента управления создает XAML
- Я здесь очень подробно. Надеемся, что большинство разработчиков увидят, что при перетаскивании элемента управления генерируется код XAML. Обратите внимание, что мы перетащили в кнопку.
- Также обратите внимание, что код XAML ниже.
- Вы можете увидеть тег <Button>.
- Это только для иллюстрации. Я предоставлю вам весь код XAML через минуту.
Готовое приложение, которое мы создаем Вот интерфейс, который мы хотели бы создать.
- Он имеет одну кнопку, 2 метки и 2 текстовых поля. Я дам вам код XAML через некоторое время
Наше приложение закончено и работает
- Вот как это выглядит при запуске.
- В верхнем текстовом поле будет отображена HTML-страница, которую мы загрузим в облако.
- Второе текстовое поле покажет пользователю ход выполнения загрузки.
Сборка приложения
- Давайте начнем создавать приложение. Первая задача — установить несколько ссылок.
- Нам нужна ссылка на Windows Azure SDK.
- Мы добавим ссылку для поддержки операторов Assert () в коде.
- Для пользовательского интерфейса мы добавим код XAML (я предоставлю)
- Логика программирования будет обрабатываться кодом ниже.
- Получите 90-дневную пробную версию Windows Azure.
- Скачать ссылку ниже:
- http://www.windowsazure.com/en-us/pricing/free-trial/
Подключение к инструменту Azure
- Обратите внимание на две ссылки добавлены.
- Один для инструментов качества
- Таким образом, мы можем сделать Утверждения в коде
- Один для клиента хранения
- Таким образом, мы можем загружать капли
- Один для инструментов качества
- Вам нужно будет выбрать кнопку обзора .
MainWindow.xaml
- Эта статья преследует две основные цели: (1) научить вас, что вы можете размещать веб-контент очень экономно; (2) Покажите, как вы можете создать свою собственную систему управления BLOB-объектами в облаке.
- Загрузите исходный код для моего проекта VS 2012 RC:
- Хостинг веб-контента в виде большого двоичного объекта в Windows Azure является мощным средством . Начнем с того, что это чрезвычайно экономично ; это не требует от вас размещения веб-сервера самостоятельно. В результате капли очень рентабельны. Во-вторых, другой мощный аспект размещения html-содержимого в виде больших двоичных объектов в Windows Azure заключается в том, что вы получаете то, что большие двоичные объекты копируются три раза . Он всегда будет доступен с поддержкой SLA.
- Я использую размещенные в Windows Azure большие двоичные объекты для своего блога. Я храню HTML, Javascript и таблицы стилей. Я также управляю видеоконтентом. Вы можете увидеть мою статью в журнале MSDN для более подробной информации.
- Я могу хранить все, что захочу. Когда вы посещаете мой блог, вы извлекаете контент из служб хранения Windows Azure.
Смотрите мою статью в MSDN Magazine, Демократизация видеоконтента с помощью Windows Azure Media Services. http://msdn.microsoft.com/en-us/magazine/jj133821.aspx - Вы можете динамически создавать контент, а затем загружать его в Azure. Я покажу вам, как загрузить веб-страницу в виде блоба.
- Но эта веб-страница может быть динамически создана на основе базы данных. Код, который я собираюсь показать, бесконечно гибок. Вы можете адаптировать его для программного управления всем вашим контентом .
- Я проиллюстрирую последние инструменты и технологии, начиная с июля 2012 года. Это означает, что мы будем использовать:
- Windows 8
- Visual Studio 2012 RC
- Azure SDK и набор инструментов 1.7
- Я предполагаю, что у вас есть учетная запись Azure (доступны бесплатные пробные версии)
| Скачать исходный код | https://skydrive.live.com/embed?cid=98B7747CD2E738FB&resid=98B7747CD2E738FB%212850&authkey=AAWxTD4cCiYKJ60 |
| Бесплатная пробная версия | http://www.windowsazure.com/en-us/pricing/free-trial/?WT.mc_id=A733F5829 |
2 основных типа капли
- Обслуживающие хранения предлагает два типа из блоб s, блок BLOB s и страница блоб сек .
- Вы указываете тип BLOB-объекта при создании BLOB-объекта .
- Вы можете хранить текстовые и двоичные данные в любом из « двух типов BLOB- объектов »:
- Блок BLOB-объектов , которые оптимизированы для потоковой передачи.
- Страничные BLOB-объекты , которые оптимизированы для случайных операций чтения / записи и которые предоставляют возможность записи в диапазон байтов в BLOB-объекте .
- Windows Azure Blob хранение это сервис для хранения больших объемов неструктурированных данных , которые могут быть доступны из любой точки мира через HTTP или HTTPS.
- Один двоичный объект может быть сотни гигабайт в размерах , и одного счета для хранения может содержать до 100 ТБ в блоб с .
- Общие способы использования хранилища BLOB- объектов включают в себя:
- Обслуживание изображений или документов непосредственно в браузере
- Хранение файлов для распределенного доступа
- Потоковое видео и аудио
- Выполнение безопасного резервного копирования и аварийного восстановления
- Хранение данных для анализа локальной службой или службой Windows Azure
- После того , как сгусток был создан, его тип не может быть изменен , и «она может быть обновлена только с помощью операции , соответствующей для этого двоичного объекта типа», то есть, написания блок или списка блока s в блоке сгусток , и писать страницы в страничный блоб .
- Все BLOB s отражают зафиксированные изменения немедленно .
- Каждая версия сгустка имеет уникальный тег, называемый ETag, который можно использовать с условиями доступа , чтобы обеспечить вас изменить только конкретный экземпляр сгустка .
- Любой BLOB-объект можно арендовать для эксклюзивного доступа для записи .
- Когда капля в аренду, только вызовы , которые включают в себя текущий идентификатор аренды может изменить блоб или (для блочного Blob сек) его блок s.
- Вы можете назначить атрибуты для BLOB-объектов, а затем запросить эти атрибуты в соответствующем контейнере с помощью LINQ.
- BLOB-объекты позволяют записывать байты для определенных смещений. Вы можете наслаждаться типичными операциями чтения / записи, ориентированными на блок .
- Обратите внимание на следующие атрибуты хранилища BLOB- объектов :
- Аккаунт хранения
- Весь доступ к хранилищу Windows Azure осуществляется через учетную запись хранилища . Это самый высокий уровень пространства имен для доступа к BLOB-объектам . Аккаунт может содержать неограниченное количество контейнеров, если их общий размер не превышает 100 ТБ .
- Контейнер
- Контейнер обеспечивает группировку набора BLOB- объектов . Все BLOB-объекты должны быть в контейнере. Аккаунт может содержать неограниченное количество контейнеров. Контейнер может хранить неограниченное количество BLOB- объектов .
- капля
- Файл любого типа и размера.
- Аккаунт хранения
- «Один блок блоб может быть до 200GB в размерах». «Страничный блоб , другой тип блоба , может иметь размер до 1 ТБ» и более эффективен, когда диапазоны байтов в файле часто изменяются. Для получения дополнительной информации о BLOB-объектах см. Основные сведения о BLOB- объектах и Page BLOB-объектах .
- Формат URL
- К BLOB-объектам можно обращаться, используя следующий формат URL:
- Http: //. blob .core.windows.net /
Веб-страницы как капли
- Как я уже объяснил, я показываю, как я использую свой блог в Windows Azure [1]. Моя главная страница блога начинается с < iframe > [2] [3]. Этот тег позволяет встроить HTML-страницу в HTML-страницу . Мой пост в основном состоит из склеенных элементов iframe . Одним из таких iframe является меню для статей, которые я создал. Это действительно набор гиперссылок в стиле метро .
- Как я уже говорил, этот пост рассказывает о том, как я питаю свой блог [1]. Этот пост о создании веб-контента и хранении его в виде блога веб-страницы в центре обработки данных MS. Левый фрейм в моем блоге — не что иное, как фрейм с веб-страницей. [2] [3]
- Название веб-страницы — key_links.html. Key_links.html генерируется локально, затем загружается в хранилище блога.
- Панель слева, на которой написано Популярные сообщения . Это просто встроенная веб-страница, которая хранится в виде большого двоичного объекта в Windows Azure . Я загружаю блоб через приложение для Windows 8, которое собираюсь создать для вас.
- Реальная, которую я использую, его немного сложнее . Он использует базу данных SQL Server, которая имеет источник контента, который вы видите в популярных сообщениях .
- Для моего блога все, что я делаю — это постоянно обновляю базу данных. Настраиваемое приложение, которое мы пишем, создает пользовательскую веб-страницу на основе ранее введенных мной данных сервера SQL.
- Затем мое приложение просто перебирает строки в таблице базы данных сервера SQL и генерирует красочную сетку, которую вы видите под названием Популярные сообщения .
- Вы можете увидеть мой блоб, хранящийся здесь:
- https://brunoblogcontent.blob.core.windows.net/blobcalendarcontent/key_links.html
Динамически создается на основе данных SQL Server
- Вы можете перейти непосредственно к содержимому моего блоба.
- https://brunoblogcontent.blob.core.windows.net/blobcalendarcontent/key_links.html
- Дело в том, что Key_links.html генерируется на основе записей в таблице базы данных.
- Вы также можете хранить записи в облаке, используя базу данных SQL (ранее SQL Azure).
- Этот пост будет посвящен тому, как вы должны отправить key_links.html и разместить его в службе хранения Windows Azure.
- Здесь вы можете увидеть связь между данными таблицы и соответствующим содержимым HTML .
- Метроподобный веб-интерфейс, который вы видите там, динамически генерируется приложением Windows 8. Мы не будем делать динамическое создание здесь.
- Я использовал Visual Studio 2012 RC для написания приложения для Windows 8. Для загрузки всего необходимого мне необходим Windows Azure SDK и Tooling.
Добавление приложения WPF
- В меню Файл выберите Новый, а затем нажмите Проект .
- В диалоговом окне « Новый проект » выберите один из типов проектов на левой панели.
- Выберите Windows шаблона проекта из правой панели.
- На средней панели выберите Приложение WPF.
- Введите имя для нового проекта.
- Я выбрал UploadBlob
Создание приложения WPFМы можем начать перетаскивать элементы управления поверх. Мы будем перетаскивать кнопки, текстовые поля и метки. На самом деле, я предоставлю вам код XAML. В приложениях WPF пользовательский интерфейс встроен в XAML.
- Это только для иллюстрации. Я предоставлю вам весь код XAML через минуту, чтобы вам не пришлось ничего перетаскивать.
Перетаскивание элемента управления создает XAML
- Я здесь очень подробно. Надеемся, что большинство разработчиков увидят, что при перетаскивании элемента управления генерируется код XAML. Обратите внимание, что мы перетащили в кнопку.
- Также обратите внимание, что код XAML ниже.
- Вы можете увидеть тег <Button>.
- Это только для иллюстрации. Я предоставлю вам весь код XAML через минуту.
Готовое приложение, которое мы создаем Вот интерфейс, который мы хотели бы создать.
- Он имеет одну кнопку, 2 метки и 2 текстовых поля. Я дам вам код XAML через некоторое время
Наше приложение закончено и работает
- Вот как это выглядит при запуске.
- В верхнем текстовом поле будет отображена HTML-страница, которую мы загрузим в облако.
- Второе текстовое поле покажет пользователю ход выполнения загрузки.
Сборка приложения
- Давайте начнем создавать приложение. Первая задача — установить несколько ссылок.
- Нам нужна ссылка на Windows Azure SDK.
- Мы добавим ссылку для поддержки операторов Assert () в коде.
- Для пользовательского интерфейса мы добавим код XAML (я предоставлю)
- Логика программирования будет обрабатываться кодом ниже.
- Получите 90-дневную пробную версию Windows Azure.
- Скачать ссылку ниже:
- http://www.windowsazure.com/en-us/pricing/free-trial/
Подключение к инструменту Azure
- Обратите внимание на две ссылки добавлены.
- Один для инструментов качества
- Таким образом, мы можем сделать Утверждения в коде
- Один для клиента хранения
- Таким образом, мы можем загружать капли
- Один для инструментов качества
- Вам нужно будет выбрать кнопку обзора .
MainWindow.xaml
<Window
x:Class="UploadBlob.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350"
Width="525">
<Grid>
<Button
Name="buttonUploadBlob"
Click="buttonUploadBlob_Click"
Content="Upload Blob (Web Page)"
HorizontalAlignment="Left"
Margin="37,31,0,0"
VerticalAlignment="Top"
Width="160"
Height="46"/>
<TextBox
Name="txtCodeToUpload"
TextWrapping="Wrap"
AcceptsReturn="True"
VerticalScrollBarVisibility="Visible"
Margin="37,117,28.4,0"
VerticalAlignment="Top"
Height="69" >Filled at run time with text to upload</TextBox>
<TextBox
Name="txtWorkDone"
TextWrapping="Wrap"
AcceptsReturn="True"
VerticalScrollBarVisibility="Visible"
Margin="37,215,28.4,0"
VerticalAlignment="Top"
Height="69"
Text="Filled at run time with how much progress has been made"/>
<Label
Content="Text to be upload to cloud"
HorizontalAlignment="Left"
Margin="37,91,0,0"
VerticalAlignment="Top"/>
<Label
Content="Files successfully uploaded to cloud"
HorizontalAlignment="Left"
Margin="37,191,0,0"
VerticalAlignment="Top"/>
</Grid>
</Window>
- Теперь мы продолжим добавлять основную логику программирования.
- Код позади необходим для выполнения основной работы по загрузке ваших блобов.
- Когда пользователь нажимает кнопку загрузки, программное обеспечение берет существующую веб-страницу и загружает ее в Windows Azure Storage Services.
MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
namespace UploadBlob
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public void UpdateGui(string msg, string content)
{
Dispatcher.BeginInvoke(DispatcherPriority.Input, (ThreadStart)(
() =>
{
this.txtWorkDone.Text += Environment.NewLine + string.Format(
"We are uploading {0}", msg);
this.txtCodeToUpload.Text += Environment.NewLine + string.Format(
"We are uploading {0}", content);
}));
}
private string GetStringFromFileName(string path)
{
FileIOReader file_io = new FileIOReader(path);
string s = file_io.ReadFile();
file_io.Close();
return s;
}
private void buttonUploadBlob_Click(object sender, RoutedEventArgs e)
{
// Get file path to BrunoPage.html. It is in the "content" folder.
string curr_file = System.IO.Path.Combine(Environment.CurrentDirectory,
@"..\..\Content\" + "BrunoPage.html");
// Open file and load content for uploading to Azure
string html_content_to_upload = GetStringFromFileName(curr_file);
// Kick off thread to do the uploading. Use Task-based threading.
// Get help from BlobManager code.
Task<string> taskOpenEndpoint = Task<string>.Factory.StartNew(() =>
{
// Use blob manager for encapsulation
BlobManager bu = new BlobManager();
// Upload the web page. (1) Pass in the callback method to update the gui.
// In other words, BlobManager can update the gui.
// (2) Pass in the string containing the web content I want to host in the cloud.
// (3) Pass in the destination web page
bu.UploadWebPage(this.UpdateGui,
html_content_to_upload,
"BrunoPageDestination.html");
return "";
});
UpdateGui(curr_file, "We are done");
}
}
}
Добавление двух вспомогательных классов
- После того, как вы вставите основной код, вам нужно будет сгенерировать несколько классов.
- После генерации мы вставим еще больше кода в эти только что сгенерированные классы.
- Вы можете видеть, что мы собираемся в два класса, чтобы генерировать пустые классы.
- FileIOReader
- BlobManager
- Просто наведите курсор на имя класса, щелкните правой кнопкой мыши и выберите « Создать класс».
FileIOReader.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UploadBlob
{
public class FileIOReader
{
FileStream fs_reader = null;
StreamReader stream_reader = null;
public FileIOReader(string path)
{
fs_reader = File.Open(path, FileMode.Open);
stream_reader = new StreamReader(fs_reader);
}
public bool HasData()
{
return (stream_reader.EndOfStream == false);
}
public string ReadFile()
{
return stream_reader.ReadToEnd().ToString();
}
public void ReadLine(ref string s)
{
s = stream_reader.ReadLine();
}
public void Close()
{
stream_reader.Close();
fs_reader.Close();
}
}
public class FileIOWriter
{
FileStream fs_writer = null;
StreamWriter stream_writer = null;
public FileIOWriter(string path)
{
if (File.Exists(path))
{
File.Delete(path);
}
fs_writer = File.Create(path);
stream_writer = new StreamWriter(fs_writer);
}
public void WriteLine(string s)
{
stream_writer.WriteLine(s);
}
public void Close()
{
stream_writer.Close();
fs_writer.Close();
}
}
}
BlobManager.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;
namespace UploadBlob
{
class BlobManager
{
public void UploadWebPage(Action<string, string> UpdateGui,
string codeToUpload,
string output_filename)
{
// Notify user of upload process.
UpdateGui("Starting to process " + output_filename, codeToUpload);
// Our blob client object to do the actual upload.
// This is part of the Azure SDK
CloudBlobClient blobStorage = null;
// Required function for managing cloud connection strings
Microsoft.WindowsAzure.CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
{
configSetter(configName);
});
// Read account configuration settings
// We will retrieve (1) account name (2) account secret key
string connectionString = null;
string formatter_for_connection = Properties.Settings.Default.DataConnectionstringProduction;
string accountName = Properties.Settings.Default.accountname;
string accountKey = Properties.Settings.Default.accountkey;
// Build up a connection string
connectionString = string.Format(formatter_for_connection, accountName, accountKey);
// Show the user the connection string.
UpdateGui(output_filename, "Connection string is " + connectionString);
// The storage account IS the connection string value
var storageAccount =
CloudStorageAccount.FromConfigurationSetting(connectionString);
// Define a container for the web page.
string blobContainerName = "blobcalendarcontent";
// Load an object to do the uploading work.
blobStorage = storageAccount.CreateCloudBlobClient();
// Verify the container is built.
CloudBlobContainer container = blobStorage.GetContainerReference(blobContainerName);
container.CreateIfNotExist();
// Some basic error checking and diagnostics.
Assert.AreEqual<string>(
string.Format(@"https://brunoblogcontent.blob.core.windows.net/{0}",
blobContainerName), container.Uri.ToString());
Assert.AreEqual<string>(blobContainerName, container.Name.ToString());
// Make sure to configure container for public access
var permissions = container.GetPermissions();
permissions.PublicAccess = BlobContainerPublicAccessType.Container;
// Verify not public alraady
Assert.AreNotEqual(permissions.PublicAccess, null);
// Now make public.
container.SetPermissions(permissions);
// Build up the blob name
string uniqueBlobName = string.Format("{0}/{1}", blobContainerName,
output_filename);
CloudBlockBlob blob = blobStorage.GetBlockBlobReference(uniqueBlobName);
// Set content type to reflect web page. Different for video, css, etc.
blob.Properties.ContentType = "text/html";
// Tell user upload is happening.
UpdateGui("uniqueBlobName is " + uniqueBlobName, codeToUpload);
UpdateGui("uri is " + blob.Uri.AbsoluteUri.ToString(), codeToUpload);
// Finally, the actual upload.
blob.UploadText(codeToUpload);
// Output to diagnostics window.
System.Diagnostics.Trace.TraceInformation("Uploaded image '{0}'",
uniqueBlobName);
}
}
}
У вас должна быть учетная запись на портале Windows Azure
- Вы получаете эту информацию с портала Windows Azure
- Портал, где вы получаете имя учетной записи и ключ учетной записи
- Вам нужно будет нажать на кнопку « Просмотр» .
- Сохраните эту информацию, чтобы вы могли вставить ее в приложение.
- Вы можете думать об этой информации как имя пользователя и пароль.
Портал
- Портал, где вы получаете имя учетной записи и ключ учетной записи
- Вам нужно будет нажать на кнопку « Просмотр» .
- Сохраните эту информацию, чтобы вы могли вставить ее в приложение.
- Вы можете думать об этой информации как имя пользователя и пароль.
Settings.settings
<?xml version='1.0' encoding='utf-8' >
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings >
<Setting Name="accountname" Type="System.String" Scope="User">
<Value Profile="(Default)">brunoblogcontent</Value>
</Setting>
<Setting Name="accountkey" Type="System.String" Scope="User">
<Value Profile="(Default)">oOTLSWgSvFFIECZU21VdUc/FtSv4oksXv5J4F/VEuWfhiWFvSb0u0xMDSvhblkxci+VZduxzZBXZMolAb9gUkw==</Value>
</Setting>
<Setting Name="DataConnectionstringProduction" Type="System.String" Scope="User">
<Value Profile="(Default)">DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}</Value>
</Setting>
</Settings>
</SettingsFile>
Определение блоба, который вы будете загружать
- Теперь нам нужно определить, какой контент, который мы хотим загрузить, имеет большой двоичный объект в службе хранения Windows Azure. В нашем случае мы просто загрузим веб-страницу. Также можно загружать практически все, что угодно, например, zip-файлы, MP3-файлы, видео, практически все, что только можно придумать.
- Вы можете щелкнуть правой кнопкой мыши на проекте, что позволит вам добавить новую папку. Оттуда вы можете добавить новый элемент , который в нашем случае будет веб-страницей, в основном HTML-файлом .
- Щелкните правой кнопкой мыши проект и выберите « Добавить» , « Новая папка».
- Позвоните в папку Content
- Щелкните правой кнопкой мыши новую папку ( Содержимое ) и выберите Добавить новый элемент.
- Веб-страница будет называться BrunoPage.html.
- Вы можете называть это как хотите, но вам нужно запомнить это для кода. Это очевидно должно соответствовать.
BrunoPage.html
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<strong>Store this as a blob
in a Microsoft data center.
</strong>
</body>
</html>
BLOB-объект и запущенное приложение
- Запуск приложения и загрузка веб-страницы (блоб)
- BrunoPage.html можно увидеть выше. Обратите внимание на тег <body>, который мы добавили.
- Щелкните правой кнопкой мыши BrunoPage.html и выберите открыть
- Введите код, который вы видите выше. Я назвал новый файл BrunoPageDestination.html
- http://brunoblogcontent.blob.core.windows.net/blobcalendarcontent/BrunoPageDestination.html
Использование Azure Storage Explorer
- Вы можете скачать Azure Storage Explorer здесь:
- http://azurestorageexplorer.codeplex.com/
- Azure Storage Explorer поможет вам просмотреть загруженный BLOB-объект.
- Он также работает с таблицами и очередями (2 других типа хранилища, связанных с Azure)
- После того, как вы ввели данные своей учетной записи, вы можете просто нажать на капли.
- После установки вам нужно будет настроить свою учетную запись.
- Это тот же процесс, что и раньше.
- Вам нужно будет зайти на портал и получить имя учетной записи и ключ учетной записи.
- Это тот же процесс, что и раньше.
Взаимодействие с Azure Storage Explorer
- Обратите внимание, что контейнер был назван blobcalendarcontent
- Это было определено нашим кодом (MainWindow.xaml.cs)
Бурение в нашем блобе (веб-страница)
- Azure Storage Explorer может помочь вам получить абсолютный URI вашего содержимого BLOB-объекта.
- Вы также можете заметить, что ContentType является text / html
Просмотр веб-страницы, которую мы загрузили
- Вы могли бы пойти туда прямо сейчас.
- http://brunoblogcontent.blob.core.windows.net/blobcalendarcontent/BrunoPageDestination.html
Вывод
- Это был амбициозный пост. Это покрыло много интересного.
- Я позволю вам создавать динамически генерируемый контент.
- Следовать за
- Понимание блочных и блобных страниц
- http://msdn.microsoft.com/en-us/library/windowsazure/ee691964.aspx
- Visual Studio 2012 RC загрузки
- http://www.microsoft.com/visualstudio/11/en-us/downloads#
- Загрузить: Windows Azure SDK для .NET
- http://www.windowsazure.com/en-us/pricing/free-trial/
- Понимание блочных и блобных страниц



























