Slide 1 - NET

peruvianwageslaveInternet και Εφαρμογές Web

5 Φεβ 2013 (πριν από 4 χρόνια και 8 μήνες)

338 εμφανίσεις

Microsoft TechDays

http://www.techdays.ru

Марат Бакиров

Эксперт по разработке ПО

Microsoft
, Екатеринбург

http://blogs.msdn.com/mbakirov

Microsoft TechDays

http://www.techdays.ru

Зачем нужны облачные технологии?

Что такое
Windows Azure
и
Azure Services
Platform?

Архитектура и
API
для приложения
Windows Azure

Как начать разработку?

Microsoft TechDays

http://www.techdays.ru

Зачем нужны облачные технологии?

Что такое
Windows Azure
и
Azure Services
Platform?

Архитектура и
API
для приложения
Windows Azure

Как начать разработку?


Microsoft TechDays

http://www.techdays.ru

Абстракция

Сеть

Динамические
библиотеки

Статические
библиотеки

Идея

Идея повторного
использования
кода

Процедуры
(подпрограммы)

DLL/
Сборки

RPC

объекты

Компоненты

DCOM/
.net

REMOTING

Сервисы

Microsoft TechDays

http://www.techdays.ru

Microsoft TechDays

http://www.techdays.ru

Если я
Стартап

, можно создать новой
приложение на
Windows Azure

They can fail fast or scale fast

Два парня, гараж, ноутбук и кредитка

Если я
ISV
-

Можно взять готовое
приложение и превратить его в
S+S
приложение
Windows Azure

Windows Azure
это фактически
ASP.NET
сайт


значит можно использовать готовый код.

Предприятие (конечный клиент) может
вывести один из сервисов в
Azure

Экономим время

Microsoft TechDays

http://www.techdays.ru

Мальчик Коля в январе
задумал
веб

сайт и держит
его на своем компьютере
или на маленьком
хостинге

В феврале приходит 1000
посетителей, и в марте еще
через месяц будет 100000

Коля весь март
переписывает сайт , чтобы
он был масштабируемым, и
в мае готов к приему 100
000

Апрель


все еще
переписывает
веб

сайт

В мае 1000 000 уже не
ходят, они все у Пети, Коля
начинает все сначала, при
этом должен
$
10000

за
сервера


Мальчик Петя в январе
задумал
веб

сайт и сразу
написал его на
Azure

В феврале приходит 1000
посетителей, и в марте еще
через месяц будет 100000

Умный мальчик Петя платит
немного больше за
масштабиремость
, и в
марте сайт работает на 100
000

В апреле у нас миллион
посетителей

В мае Петя продает 10 яхт и
покупает скромный 100
метровый домик на
рублевке


Microsoft TechDays

http://www.techdays.ru

Зачем нужны облачные технологии?

Что такое
Windows Azure
и
Azure Services
Platform?

Архитектура и
API
для приложения
Windows Azure

Как начать разработку?


Microsoft TechDays

http://www.techdays.ru


Microsoft TechDays

http://www.techdays.ru

Настольная ОС выполняет настольные
приложения

Обеспечивает работу с памятью, диском,
устройствами


Windows Azure

выполняет приложения в
«облаке»

Предоставляет сервисы для сервисов

Предоставляет
всю инфраструктуру

Microsoft TechDays

http://www.techdays.ru



Azure


Services Platform


Microsoft TechDays

http://www.techdays.ru

Windows Azure

Applications

.NET Services

Live Services

SQL Services

Applications

Others

Windows

Mobile

Windows

Vista/XP

Windows

Server

Картинка


Microsoft TechDays

http://www.techdays.ru

.NET Services

Windows Azure

Live Services

Applications

Applications

SQL Services

Others

Windows

Mobile

Windows

Vista/XP

Windows

Server

Fabric

Storage

Config


Compute

Application

Windows
в облаке

Microsoft TechDays

http://www.techdays.ru

http://blogs.msdn.com/davidlem/



Microsoft TechDays

http://www.techdays.ru

Hello World!

Microsoft TechDays

http://www.techdays.ru

Обычное
ASP.NET
приложение

Visual Studio 2008 SP1

Запуск (отладка) локально (
F5
)

Конфигурационный файл (роли,
экземпляры)

Azure Services Portal

Загрузка в облако

Microsoft TechDays

http://www.techdays.ru

Зачем нужны облачные технологии?

Что такое
Windows Azure
и
Azure Services
Platform?

Архитектура и
API
для приложения
Windows Azure

Как начать разработку?

Microsoft TechDays

http://www.techdays.ru


Microsoft TechDays

http://www.techdays.ru

Виртуальная среда выполнения (
Windows
Server
)

Масштабируемое хранилище

Управление жизненным циклом сервиса

Microsoft TechDays

http://www.techdays.ru

Обычное приложение

Программа (
EXE
)

Конфигурация
приложения

Манифест

DLL

Сборка
Windows forms

Сервис
Windows

Локальное хранилище

Windows Azure

Service package

Service configuration

Service definition

Service role

Web role

Worker role

Интернет
-
хранилище
.

Microsoft TechDays

http://www.techdays.ru

Вычисления

Хранилище

данных

SDK

Microsoft TechDays

http://www.techdays.ru

Developer

Tools

А что

такое
Windows Azure?
Вычисление


.NET 3.5 sp1 / IIS7


Server 2008


64bit


Medium Trust*


Web Role


Web Sites (ASP.NET)


Web Services (WCF)


Worker Role


Stateless Servers


Http(s)


Storage

Microsoft TechDays

http://www.techdays.ru

Developer

Tools

Windows Azure
Compute

Хранилище
даных


Durable, scalable, available


Blobs


Tables


Queues


REST interfaces


Можно использовать
независимо в клиентском
приложении



Microsoft TechDays

http://www.techdays.ru

Compute

Storage

Developer SDK


Windows Azure SDK


Локальное облако


Локальное хранилище


Инструменты командной строки


Small Managed API


Logging, working storage


Microsoft Visual Studio 2008 add
-
in,
express


Microsoft TechDays

http://www.techdays.ru

Windows Azure Datacenter

Ваш
Azure
проект

L
B

Internet

Web Site

(ASPX, ASMX,
WCF)

Web Site

(ASPX, ASMX,
WCF)

Web Site

(ASPX, WCF)

Worker
Service

Worker
Service

L
B

Storage

Tables

Blobs

Queue

Microsoft TechDays

http://www.techdays.ru

Настройки для каждой роли

Точки входа

Например,
HTTP/
порт 80

Определение локальных хранилищ

Microsoft TechDays

http://www.techdays.ru

RoleManager

Logging

(Протоколирование)

WriteToLog

Доступ к конфигурации

GetConfigurationSetting

Локальное хранилище (
per instance
)

GetLocalResource

RoleManager
.GetConfigurationSetting
("
mysetting
");

ILocalResource

ilr

=
RoleManager
.GetLocalResource
("a");

string
rootpath

=
ilr.RootPath
;

Microsoft TechDays

http://www.techdays.ru



Fabric


Compute

Storage

Application

Blobs

Queues

Tables

HTTP


Microsoft TechDays

http://www.techdays.ru

Создается уникальное имя

Предоставляется
256
битный ключ


Базовая система безопасности

Ключ используется чтобы создать подпись

Подпись используется для всех
сообщений


Account

Blob

Table

Queue

Microsoft TechDays

http://www.techdays.ru

Создание хранилища.

Microsoft TechDays

http://www.techdays.ru

Blob

Container

Account

sally

pictures

IMG001.JP
G

IMG002.JP
G

movies

MOV1.AVI

Microsoft TechDays

http://www.techdays.ru

Account

Account
содержит контейнеры

Контейнер

Контейнер содержит записи БЛОБ

Политика на уровне контейнера

Public READ or Private

Метаданные

Metadata is

<name, value> pairs

8KB

на контейнер

Можно получить список


Blob

Containe
r

Account

sally

pictures

IMG001.JP
G

IMG002.JP
G

movies

MOV1.AVI

Microsoft TechDays

http://www.techdays.ru

URL

http://<Account>.
blob
.core.windows.net/<Container>/<BlobName>

Например
:

Account


sally

Container


music

BlobName



rock/rush/xanadu.mp3

URL:
http://sally.blob.core.windows.net/music/rock/rush/xanadu.mp3

Blob

Containe
r

Account

sally

pictures

IMG001.JP
G

IMG002.JP
G

movies

MOV1.AVI

Microsoft TechDays

http://www.techdays.ru

Можно работать с БЛОБАМИ
поблочно

(чтобы не грузить сразу 50 гигабайт)

Есть примеры работы с хранилищем


CloudDrive

на
PowerShell

Microsoft TechDays

http://www.techdays.ru

37

//Get Container

BlobStorage

storage =
BlobStorage.Create
(StorageAccountInfo.GetDefaultBlobStorage
AccountFromConfiguration());


BlobContainer

container =
storage.GetBlobContainer
("
guestbookpics
");


container.CreateContainer
(null,
ContainerAccessControl.Public
);



Microsoft TechDays

http://www.techdays.ru

38

//Create Blob

string
uniqueBlobName

=
string.Format
("image_{0}.
jpg",Guid.NewGuid
().
ToString
());


BlobProperties

prop = new
BlobProperties
(
uniqueBlobName
);


prop.ContentType

= FileUpload1.PostedFile.ContentType;


BlobContents

blob = new
BlobContents
(FileUpload1.FileContent);


container.CreateBlob
(prop, blob, true);


prop =
container.GetBlobProperties
(
uniqueBlobName
);
// Uri

Microsoft TechDays

http://www.techdays.ru

Структурированное хранилище

Очень масштабируемые таблицы

Миллиарды записей и терабайты данных

Автоматически распределяет нагрузку

Высокодоступный

сервис

Надежный

Минимум три копии данных


Стандартные интерфейсы

ADO.NET Data Services


.NET 3.5 SP1

LINQ
и
.NET

REST
доступ


доступ

на любом языке

Microsoft TechDays

http://www.techdays.ru

Account, table and entity

Entity

Table

Account

Account

Users

Name=…hash
=…

Name=…hash
=…

PhotoIndex

Tag=…id=…

Tag=…,id=…

Microsoft TechDays

http://www.techdays.ru

Partition Key

Document
Name

Row Key

Version

Property 3

Modification
Time

…..

偲潰敲瑹 N

䑥獣物灴楯i

Examples

Doc

V1.0

8/2/2007

…..
=
䍯浭i瑴敤tv敲獩潮
=
䕸慭灬敳
=
䑯a
=
嘲⸰⸱
=
㤯㈸⼲〰9
=
Alice’s working
v敲獩潮
=
c䅑
=
䑯a
=
嘱⸰
=
㔯㈯㈰〷
=
䍯浭i瑴敤tv敲獩潮
=
c䅑
=
䑯a
=
嘱⸰⸱
=
㜯㘯㈰〷
=
Alice’s working version
=
c䅑
=
䑯a
=
嘱⸰⸲
=
㠯ㄯ㈰〷
=
Sally’s working version
=
Partition

1

Partition

2


Table Partition


это все элементы

с
одинаковым
partition key


Мы можем управлять

партиционированием

на уровне приложения

Microsoft TechDays

http://www.techdays.ru

42

public class
GuestBookEntry

:
TableStorageEntity

{


public
GuestBookEntry
()


{


PartitionKey

=
DateTime.UtcNow.ToString
("
MMddyyyy
");


// Row key allows sorting, so we make sure the rows come
back in time order.


RowKey

=
string.Format
("{0:10}_{1}",
DateTime.MaxValue.Ticks

-

DateTime.Now.Ticks
,
Guid.NewGuid
());


}


public string Message


{ get; set; }


public string
GuestName


{ get; set; }


public string
PhotoUrl


{ get; set; }


Microsoft TechDays

http://www.techdays.ru

43

public class
GuestBookDataContext

:
TableStorageDataServiceContext

{


public
GuestBookDataContext
(
StorageAccountInfo

info)


: base(info)


{ }



public
IQueryable
<
GuestBookEntry
>
GuestBookEntry


{


get


{


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


}


}

}


Microsoft TechDays

http://www.techdays.ru

44

private
GuestBookDataContext

_context;

StorageAccountInfo

info =
StorageAccountInfo.GetDefaultTableStorageAccountFromConfigu
ration();


TableStorage.CreateTablesFromModel
(
typeof
(
GuestBookDataCont
ext
), info);


_context = new
GuestBookDataContext
(info);

_
context.RetryPolicy

=
RetryPolicies.RetryN
(3,
TimeSpan.FromSeconds
(1));


var

results = from g in _
context.GuestBookEntry


where
g.PartitionKey

==
DateTime.UtcNow.ToString
("
MMddyyyy
")


select g;

var

r =
results.ToArray
<
GuestBookEntry
>();

Microsoft TechDays

http://www.techdays.ru

Windows Azure Datacenter

Your Service

L
B

Internet

Web Site

(ASPX, ASMX,
WCF)

Web Site

(ASPX, ASMX,
WCF)

Web Site

(ASPX, WCF)

Worker
Service

Worker
Service

L
B

Storage

Tables

Blobs

Queue

Microsoft TechDays

http://www.techdays.ru

Account
может создать много очередей

Имя очереди определяется
account
ом

Очередь содержит сообщения

Нет лимита размера

Есть лимит времени


1 неделя


http://<Account>.
queue
.core.windows.net/<QueueName>


Сообщения

Размер

<= 8 KB

Для хранения больших данных можно взять
блоб

или таблицу,
и сделать в
queue
ссылку на таблицу.

Microsoft TechDays

http://www.techdays.ru

Queues

Create/Clear/Delete

Посмотреть длину очереди


Сообщения

Enqueue

(
QueueName
, Message)

Dequeue

(
QueueName
, Invisibility Time T)

Выдает сообщение

MessageID


Сообщение становится невидимым на
некоторе

время
T

Delete(
QueueName
,
MessageID
)


Microsoft TechDays

http://www.techdays.ru

2

1

C
1

C
2


1

2

3

4

Producers

Consumers

P
2

P
1

3

2.
Dequeue
(Q, 30 sec)


浳m

2

1.
Dequeue
(Q, 30 sec)


浳m

1

1

2

Microsoft TechDays

http://www.techdays.ru

C
1

C
2

3

4

Producers

Consumers

P
2

P
1

1

2

2.
Dequeue
(Q, 30 sec)


浳m

2

㌮⁃3
использовал
msg

2

4. Delete(Q,
msg

2)

7.
Dequeue
(Q, 30 sec)


浳m

1

1.
Dequeue
(Q, 30 sec)


浳m

1

5. C
1

crashed

1

2

1

6. msg1 visible 30 seconds after
Dequeue

Что получаем
:



Каждое сообщение
вызывается ровно
раз

3

Microsoft TechDays

http://www.techdays.ru

Account


Container

Blobs

Table

Entities

Queue

Messages

http://<account>.
blob
.core.windows.net/<container>

http://<account>.
table
.core.windows.net/<table>

http://<account>.
queue
.core.windows.net/<queue>

Microsoft TechDays

http://www.techdays.ru

Windows Azure Guest Book

Microsoft TechDays

http://www.techdays.ru

Зачем нужны облачные технологии?

Что такое
Windows Azure
и
Azure Services
Platform?

Архитектура и
API
для приложения
Windows Azure

Как начать разработку?

Microsoft TechDays

http://www.techdays.ru

Есть три типа кодов

1.
Windows Azure

2.
.NET & SQL Services invitation code

3.
Live Framework & Services invitation code

Как получить код
?

Go to
http://www.azure.com

Отправить запрос


Microsoft TechDays

http://www.techdays.ru

November CTP SDKs & Visual Studio Tools

SQL Services SDK

Live Framework SDK

Visual Studio Tools for Live Framework

Java & Ruby SDKs for .NET Services

December CTP SDK

.NET Services SDK

January CTP

Windows Azure SDK

Visual Studio Tools for Windows Azure


Microsoft TechDays

http://www.techdays.ru

November CTP SDKs & Visual Studio Tools

SQL Services SDK

Live Framework SDK

Visual Studio Tools for Live Framework

Java & Ruby SDKs for .NET Services

December CTP SDK

.NET Services SDK

January CTP

Windows Azure SDK

Visual Studio Tools for Windows Azure


Microsoft TechDays

http://www.techdays.ru

www.visitmix.com


Новый релиз
Live Framework


Новый релиз
Azure SDK + tools

Native
код

Full Trust

PHP+Fast

CGI

Microsoft TechDays

http://www.techdays.ru

www.visitmix.com

http://videos.visitmix.com/MIX09

www.azure.com

http://blogs.msdn.com/mbakirov/archive/tags/Azure/default.aspx


Azure training kit

http://go.microsoft.com/fwlink/?LinkID=130354

http://blogs.msdn.com/windowsazure/

MSDN
devcenter

http://msdn.microsoft.com/ru
-
ru/azure/default(en
-
us).aspx


HOWDOI videos

http://msdn.microsoft.com/en
-
us/azure/dd439432.aspx


Презентации с платформы

http://platforma2009.ru/materials/default.aspx?s=azure


Microsoft TechDays

http://www.techdays.ru

©
2007 Microsoft
Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademar
ks
and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the
dat
e of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accu
rac
y of any information provided after the date of this presentation.

MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.