Главная страница   /   26.2. Подготовка Windows Azure (ASP.NET MVC 4

ASP.NET MVC 4

ASP.NET MVC 4

Адам Фриман

26.2. Подготовка Windows Azure

После того, как мы подготовили и протестировали приложение, можно подготовить хостинг. Прежде чем использовать Azure, необходимо создать аккаунт на www.windowsazure.com. На момент написания данной книги Microsoft предлагала бесплатные пробные аккаунты; некоторые пакеты MSDN также включают сервисы Azure. Когда вы создадите аккаунт, можно настраивать сервисы Azure, введя свои учетные данные на http://manage.windowsazure.com. Сначала вы увидите главную страницу, как показано на рисунке 26-2.

Рисунок 26-2: Портал Azure

Внимание!

На момент написания книги портал Azure работал только с Internet Explorer. Другие браузеры не отображали все всплывающие окна или приложение Silverlight, которое требуется для настройки базы данных.

Создаем сайт и базу данных

Начнем с создания нового сайта и сервиса базы данных. Нажмите на большой плюс в левом нижнем углу окна и выберите Compute - Web Site - Create With Database. Вы увидите форму, как показано на рисунке 26-3.

Подсказка

На момент написания книги был доступен предварительный просмотр для функции Web Site. Чтобы активировать данную функцию, нажмите на ссылку, которая появляется при нажатии на опцию Compute.

Рисунок 26-3: Создаем новый сайт и базу данных

Нужно выбрать URL для нашего приложения. Для бесплатных и базовых сервисов Azure мы сможем выбрать только имена в домене azurewebsites.net. Мы назвали приложение mvc4sportsstore, но вам придется придумать что-то свое, так как для каждого сайта Azure требуется уникальное имя.

Выберите область, в которую вы хотите развернуть приложение, и отметьте опцию Create a new SQL database (в Azure можно использовать MySql, но наше приложение не настроено для работы с ней, поэтому мы выбираем базу данных SQL Server).

В поле DB Connection String Name введите EFDbContext. Приложение SportsStore использует это имя для установки соединения с базой данных, и, используя его в сервисе Azure, мы гарантируем, что код приложения будет работать после развертывания без модификаций. Когда вы заполните форму, нажмите кнопку со стрелкой, чтобы перейти к форме, показанной на рисунке 26-4.

Рисунок 26-4: Настраиваем базу данных

Выберите опцию New SQL Data Server в поле Server и введите имя пользователя и пароль. Мы указали имя sportsstore и создали пароль из букв обоих регистров и цифр, следуя рекомендациям из формы. Запишите ваши имя пользователя и пароль, потому что они понадобятся вам в следующем разделе. Нажмите на кнопку с галочкой, чтобы завершить процесс установки. Azure создаст новый сайт и базу данных, что может занять несколько минут. Когда установка будет завершена, вы будете перенаправлены на главную страницу, где увидите, что в категориях Web Sites и SQL Databases появилось по одному элементу, как показано на рисунке 26-5.

Рисунок 26-5: Результат создания сайта и базы данных

Подготовка базы данных к удаленному администрированию

Следующим шагом будет настройка базы данных Azure так, чтобы она следовала той же схеме и содержала те же данные, которые мы использованы в главе 7. Нажмите на ссылку SQL Databases на главной странице Azure и затем выберите запись, которая появляется в таблице SQL Databases (если вы приняли значения по умолчанию, база данных будет называться mvc4sportsstore_db).

Вы увидите подробную информацию о базе данных и ее производительности (о которой ничего не известно, потому что в базе еще нет контента и к ней еще не поступало никаких запросов). Нажмите на ссылку Manage allowed IP addresses в разделе Quick Glance, и вы увидите форму, показанную на рисунке 26-6.

Рисунок 26-6: Активируем доступ к конфигурации в фаерволе

Azure ограничивает доступ к базам данных, чтобы они были доступны только для других сервисов Azure. Нам нужно разрешить доступ нашему рабочему компьютеру, для чего мы нажимаем Add to Allowed IP Addresses и затем – кнопку Save, которая появляется в нижней части окна браузера.

Подсказка

Вам нужно будет добавить IP-адреса всех клиентских компьютеров, с которых вы хотите администрировать базу данных Azure.

Нажмите на ссылку Dashboard в верхней части страницы, а затем - на ссылку, которая отображается под Manage URL. Откроется новое окно браузера и загрузится утилита администрирования базы данных Silverlight.

Подсказка

Если у вас еще нет Silverlight, нужно будет его установить. Браузер предложит вам провести инсталляцию и проведет через процесс установки автоматически.

Оставьте поле Database пустым и введите учетные данные, которые вы использовали в предыдущем разделе, чтобы перейти к администрированию базы данных. Если вы увидите сообщение о том, что при подключении к серверу произошла ошибка, подождите несколько минут и повторите попытку. Так происходит потому, что правило фаервола, которое разрешает вашему компьютеру доступ к базе данных, может распространяться в инфраструктуре Azure в течение нескольких минут.

Создаем схему

Нашим следующим шагом будет создание схемы для базы данных. Нажмите кнопку Administration и вы увидите в основной части окна браузера элемент, представляющий базу данных, которую мы создали ранее (если вы приняли имя по умолчанию, она будет называться mvc4sportsstore.db).

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

Получаем команды для создания схемы

Мы можем получить необходимые команды SQL из Visual Studio. Откройте окно Database Explorer и раскрывайте его элементы, пока не найдете запись для таблицы Products. Кликните по таблице правой кнопкой мыши и выберите Open Table Definition, как показано на рисунке 26-7.

Рисунок 26-7: Получаем определение таблицы в окне Data Explorer

Откроется редактор для схемы таблицы. В таблице T-SQL вы увидите код SQL, показанный в листинге 26-7.

Листинг 26-7: Операторы для создания таблицы Products
CREATE TABLE [dbo].[Products] (
	[ProductID] INT IDENTITY (1, 1) NOT NULL,
	[Name] NVARCHAR (100) NOT NULL,
	[Description] NVARCHAR (500) NOT NULL,
	[Category] NVARCHAR (50) NOT NULL,
	[Price] DECIMAL (16, 2) NOT NULL,
	[ImageData] VARBINARY (MAX) NULL,
	[ImageMimeType] VARCHAR (50) NULL,
	PRIMARY KEY CLUSTERED ([ProductID] ASC)
);

Скопируйте SQL из Visual Studio, вставьте его в текстовую область в браузере и нажмите кнопку Run в верхней части окна браузера. Через пару секунд вы увидите сообщение Command(s) completed successfully, что свидетельствует о том, что наша база данных Azure содержит базу Product с той же схемой, которую мы определили в приложении SportsStore.

Добавляем данные в таблицу

Теперь, когда мы создали таблицу, мы можем заполнить ее данными о товарах, которые мы использовали в главе 7. Вернитесь к записи Products в окне Database Explorer, кликните по ней правой кнопкой мыши и выберите Show Table Data из контекстного меню. В верхней части открывшегося окна вы найдете кнопку Script, как показано на рисунке 26-8.

Рисунок 26-8: Кнопка Script в окне с информацией о таблице

Откроется новое окно, содержащее другой оператор SQL, показанный в листинге 26-8.

Листинг 26-8: Оператор SQL для добавления данных в таблицу Products
SET IDENTITY_INSERT [dbo].[Products] ON
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description], [Category], [Price],
[ImageMimeType]) VALUES (1, N'Kayak', N'A boat for one person', N'Watersports', CAST(275.00 AS
Decimal(16, 2)), NULL)
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description], [Category], [Price],
[ImageMimeType]) VALUES (2, N'Lifejacket', N'Protective and fashionable', N'Watersports',
CAST(48.95 AS Decimal(16, 2)), NULL)
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description], [Category], [Price],
[ImageMimeType]) VALUES (3, N'Soccer Ball', N'FIFA-approved size and weight', N'Soccer',
CAST(19.50 AS Decimal(16, 2)), NULL)
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description], [Category], [Price],
[ImageMimeType]) VALUES (4, N'Corner Flags', N'Give your playing field a professional touch',
N'Soccer', CAST(34.95 AS Decimal(16, 2)), NULL)
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description], [Category], [Price],
[ImageMimeType]) VALUES (5, N'Stadium', N'Flat-packed 35,000-seat stadium', N'Soccer',
CAST(79500.00 AS Decimal(16, 2)), NULL)
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description], [Category], [Price],
[ImageMimeType]) VALUES (6, N'Thinking Cap', N'Improve your brain efficiency by 75%', N'Chess',
CAST(16.00 AS Decimal(16, 2)), N'image/jpeg')
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description], [Category], [Price],
[ImageMimeType]) VALUES (7, N'Unsteady Chair', N'Secretly give your opponent a disadvantage',
N'Chess', CAST(29.95 AS Decimal(16, 2)), NULL)
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description], [Category], [Price],
[ImageMimeType]) VALUES (9, N'Human Chess Board', N'A fun game for the family', N'Chess',
CAST(75.00 AS Decimal(16, 2)), NULL)
INSERT INTO [dbo].[Products] ([ProductID], [Name], [Description], [Category], [Price],
[ImageMimeType]) VALUES (10, N'Bling-Bling King', N'Gold-plated, diamond-studded King',
N'Chess', CAST(1200.00 AS Decimal(16, 2)), NULL)
SET IDENTITY_INSERT [dbo].[Products] OFF

Очистите текстовую область в окне Azure и вставьте SQL из листинга. Нажмите кнопку Run. Скрипт будет выполнен и добавит данные в таблицу.