Файл: Основы_обл_техн_практика.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.04.2024

Просмотров: 59

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

public GuestBookDataContext(string baseAddress, StorageCredentials credentials)

:base(baseAddress, credentials)

{}

}

15.Добавьте свойство

public class GuestBookDataContext : TableServiceContext

{

...

public IQueryable<GuestBookEntry> GuestBookEntry

{

get

{

return this.CreateQuery<GuestBookEntry>("GuestBookEntry");

}

}

}

16.Нажмите правой кнопкой мыши по GuestBook_Data в Solution Explorer, выберите

Add, затем Class. В диалоге Add New Item введите имя GuestBookDataContext.cs

инажмите Add.

17.Откройте файл GuestBookEntryDataSource.cs, добавьте в начало файла using Microsoft.WindowsAzure;

using Microsoft.WindowsAzure.StorageClient;

18.Далее измените класс

public class GuestBookEntryDataSource

{

private static CloudStorageAccount storageAccount; private GuestBookDataContext context;

}

19.Добавьте конструктор

public class GuestBookEntryDataSource

{

private static CloudStorageAccount storageAccount; private GuestBookDataContext context;

static GuestBookEntryDataSource()

{

storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");

CloudTableClient.CreateTablesFromModel(

typeof(GuestBookDataContext),

storageAccount.TableEndpoint.AbsoluteUri,

storageAccount.Credentials);

}

}

20. Добавьте констурктор для класса GuestBookDataEntrySource public GuestBookEntryDataSource()

{

this.context = new GuestBookDataContext(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials);

this.context.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1));

}

21.Добавьте методы

public IEnumerable<GuestBookEntry> Select()

{

var results = from g in this.context.GuestBookEntry

where g.PartitionKey == DateTime.UtcNow.ToString("MMddyyyy") select g;

return results;

}

public void UpdateImageThumbnail(string partitionKey, string rowKey, string thumbUrl)

{

var results = from g in this.context.GuestBookEntry

where g.PartitionKey == partitionKey && g.RowKey == rowKey select g;

var entry = results.FirstOrDefault<GuestBookEntry>(); entry.ThumbnailUrl = thumbUrl; this.context.UpdateObject(entry); this.context.SaveChanges();

}

22.Сохраните файл GuestBookEntryDataSource.cs

3.Создание Веб роли для отображения гостевой книги.

1.В Solution Explorer нажмите правой кнопкой по проекту GuestBook_WebRole,

выберите Add Reference, затем выберите закладку .NET, выделите компонент

System.Data.Service.Client и нажмите OK.

2.В Solution Explorer нажмите правой кнопкой по проекту GuestBook_WebRole,

выберите Add Reference, затем выберите закладку Project, выделите

GuestBook_Data и нажмите OK.

3.Нажмите правой кнопкой по Default.aspx и выберите Delete. Нажмите OK.

4.В Solution Explorer нажмите правой кнопкой по проекту GuestBook_WebRole,

выберите Add, выделите Existing Item.

5.В диалоге Add Existing Item выберите директорию \Source\Ex1BuildingYourFirstWindowsAzureApp\CS\Assets, выберите Add.

6.В Solution Explorer нажмите правой кнопкой по Default.aspx, выберите View Code, объявите следующие пространства имен

using System.IO; using System.Net;

using Microsoft.WindowsAzure;

using Microsoft.WindowsAzure.ServiceRuntime; using Microsoft.WindowsAzure.StorageClient; using GuestBook_Data;

7.В классе укажите

private static bool storageInitialized = false; private static object gate = new Object(); private static CloudBlobClient blobStorage;

8.Найдите событие SignButton_Click и добавьте следующий код protected void SignButton_Click(object sender, EventArgs e)

{

if (FileUpload1.HasFile)


{

InitializeStorage();

// upload the image to blob storage CloudBlobContainer container =

blobStorage.GetContainerReference("guestbookpics"); string uniqueBlobName = string.Format("image_{0}.jpg",

Guid.NewGuid().ToString());

CloudBlockBlob blob = container.GetBlockBlobReference(uniqueBlobName); blob.Properties.ContentType = FileUpload1.PostedFile.ContentType; blob.UploadFromStream(FileUpload1.FileContent); System.Diagnostics.Trace.TraceInformation("Uploaded image '{0}' to blob storage as

'{1}'", FileUpload1.FileName, uniqueBlobName);

// create a new entry in table storage

GuestBookEntry entry = new GuestBookEntry() { GuestName = NameTextBox.Text, Message = MessageTextBox.Text, PhotoUrl = blob.Uri.ToString(), ThumbnailUrl = blob.Uri.ToString() };

GuestBookEntryDataSource ds = new GuestBookEntryDataSource(); ds.AddGuestBookEntry(entry);

System.Diagnostics.Trace.TraceInformation("Added entry {0}-{1} in table storage for guest '{2}'", entry.PartitionKey, entry.RowKey, entry.GuestName);

}

NameTextBox.Text = "";

MessageTextBox.Text = "";

DataList1.DataBind();

}

9.Обновите метод Timer1_Tick

protected void Timer1_Tick(object sender, EventArgs e)

{

DataList1.DataBind();

}

10.Обновите событие Page_Load

protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack)

{

Timer1.Enabled = true;

}

}

11.Произведите изменения в методе InitializeStorage private void InitializeStorage()

{

if (storageInitialized)

{

return;

}

lock (gate)

{

if (storageInitialized)

{

return;

}

try

{

// read account configuration settings var storageAccount =

CloudStorageAccount.FromConfigurationSetting("DataConnectionString");

// create blob container for images

blobStorage = storageAccount.CreateCloudBlobClient(); CloudBlobContainer container =

blobStorage.GetContainerReference("guestbookpics");

container.CreateIfNotExist();

// configure container for public access

var permissions = container.GetPermissions(); permissions.PublicAccess = BlobContainerPublicAccessType.Container; container.SetPermissions(permissions);

}

catch (WebException)

{

throw new WebException("Storage services initialization failure. "

+"Check your storage account configuration settings. If running locally, "

+"ensure that the Development Storage service is running.");

}

storageInitialized = true;

}

}

12.В Solution Explorer разверните узел Roles в проекте GuestBook. Нажмите два раза по GuestBook_WebRole, откроется свойства данной роли, выберите закладку

Setting. Нажмите Add Setting, наберите “DataConnectionString” в колонке Name,

измените Type не ConnectionString и нажмите Add Setting.

13.В диалоге Storage Connection String выберите Use development storage и нажмите

OK.


14.Сохраните изменения.

15.В проекте GuestBook_WebRole, откройте файл Global.asax.cs

16.Объявите пространства имен using Microsoft.WindowsAzure;

using Microsoft.WindowsAzure.ServiceRuntime;

17.Вставьте следующий код внутрь метода Application_Start, заменим содержимое по умолчанию

void Application_Start(object sender, EventArgs e)

{

Microsoft.WindowsAzure.CloudStorageAccount.SetConfigurationSettingPublisher((confi gName, configSetter) =>

{

configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));

});

}

4.Организация очереди рабочих элементов для обработки в фоне.

1.В Solution Explorer нажмите правой кнопкой по Default.aspx, выберите View Code, объявите элемент клиента очереди

public partial class _Default : System.Web.UI.Page

{

private static bool storageInitialized = false; private static object gate = new Object(); private static CloudBlobClient blobStorage; private static CloudQueueClient queueStorage;

...

}

2.Найдите метод InitializeStorageи вставьтеследующийкод внутрь данногометода public partial class Default : System.Web.UI.Page

{

...

private void InitializeStorage()

{

...

try

{

...

// configure container for public access

var permissions = container.GetPermissions(); permissions.PublicAccess = BlobContainerPublicAccessType.Container; container.SetPermissions(permissions);

// create queue to communicate with worker role queueStorage = storageAccount.CreateCloudQueueClient();

CloudQueue queue = queueStorage.GetQueueReference("guestthumbs"); queue.CreateIfNotExist();

}

catch (WebException)

{

...

}

Проверка

1.Нажмите F5 для запуска сервиса. Сервис запустится в development fabric. Для открытия пользовательского интерфейса необходимо нажать правой кнопкой мыши на значке в области уведомления панели задач и выбрать Show Development

Fabric UI

2.Переключитесь на Internet Explorer для просмотра приложения GuestBook

3.Добавьте новую запись в гостевой книг

Литература

1. Windows Azure Platform Training Kit - January 2011 Update


Практическая работа номер 4

Развертывание приложения Windows Azure

Цель работы

Целью лабораторной работы является практическое освоение процесса развертывания приложений Windows Azure.

Аппаратура и программные инструменты, необходимые для лабораторной работы

Настольный или портативный компьютер, поддерживающий виртуализацию,

операционная система Microsoft Windows XP, Vista, Windows 7.

Доступ к сети Интернет. Наличие аккаунта Windows Azure.

Продолжительность лабораторной работы

2 академических часа

1.Создание Storage Account

1.Откройте в веб браузере адрес http://windows.azure.com и войдите используя Windows Live ID, ассоциированный с учетной записью Windows Azure

2. На панели инструментов Windows Azure выберите New Storage Account.

3. В диалоге Create a New Storage Account выберите Вашу подписку из списка.

4.Введите имя для Вашего Storage Account.

5.Выберите настройку Create or choose an affinity group и затем выберите из списка

Create a new affinity group

6.В диалоге Create a New Affinity Group введите Affinity Group Name, выберите размещение и нажмите OK.

7.Вернитесь в диалог Create a New Storage Account и нажмите Create для создания нового Storage Account.


8.Нажмите кнопку View. В диалоге View Storage Access Keys нажмите кнопку Copy to Clipboard следующую за Primary Access Key.

9.Нажмите Hosted Services на левой панели. Нажмите кнопку New Hosted Service на панели инструментов.

10.В диалоге Create a new Hosted Service выберите подписку и списка Choose a subscription.

11.Введите имя сервиса Enter a name for your service и выберите префикс адреса в

Enter a URL prefix for your service

12.Выберите настройку Create or choose an affinity group и затем выберите из списка guestbook

13.Выберите настройку Do not Deploy.

14.Нажмите OK для создания сервиса и дождитесь завершения процесса инициализации

2.Развертывание приложения на портале Windows Azure Platform

1.Откройте меню Пуск | Все программы| Microsoft Visual Studio 2010 и запустите Microsoft Visual Studio 2010 от имени администратора.

2.В меню File выберите Open и затем Project/Solution. Откройте файл Begin.sln проекта Ex3-WindowsAzureDeployment

3.Для изменения конфигурации хранилища перед развертыванием сервиса, откройте файл ServiceConfiguration.cscfg расположенный в сервисе GuestBook. Замените значение [YOUR_ACCOUNT_NAME] на значение Storage Account Name, которое Вы выбрали когда настраивали Storage account в Задании 1.

4.Далее замените значение [YOUR_ACCOUNT_KEY] на значение Primary Access Key которое Вы получили раннее, при создании Storage account в Задании 1

5.Необходимо создать пакет для развертывания в облаке. Для этого откройте меню правой кнопкой мыши в проекте GuestBook и выберите Publish. В диалоге Deploy Windows Azure project, выберите настройку Create Service Package Only и затем нажмите OK.