Журнал о системах электронного документооборота (СЭД)
Платформы построения ECM

Azure Service Platform

  0 комментариев Добавить в закладки

Автор Дэвид Чеппел

Перевод Николая Курносова

Обзор платформы

Использование компьютеров в облаке часто может быть очень неплохой идеей. Вместо того, чтобы покупать и обслуживать свое собственное железо, почему бы не использовать «тонны» серверов, доступных и предлагаемых сегодня через интернет? Для некоторых приложений и код, и данные – и то, и другое может жить в облаке, где кто-то другой поддерживает и обслуживает используемые ими системы. В других случаях приложения, которые работают внутри организации - локальные (on-premises) приложения, могут хранить свои данные в облаке или использовать другую инфраструктуру из облака. Приложения, которые работаю на десктопах или мобильных устройствах могут использовать сервисы в облаке для синхронизации данных между разными системами или в каких-то других целях.

В любом случае, работает ли приложение само в облаке или использует сервисы, предоставленные облаком, либо оба варианта, нужно что-то типа платформы для таких приложений. Смотря шире, под платформой для приложений можно понимать все, что предоставляет разработчику службы для создания приложений. Для примера, в локальном мире Windows это включает такие технологии как .NET  Framework, SQL  Server и т.д. Чтобы приложения могли использовать облако должна существовать облачная платформа для приложений. И поскольку есть много разных применений облака для приложений, разные виды облачных платформ полезны в разных ситуациях.

Microsoft  Azure  Services  Platform - это группа облачных технологий, каждая из которых предоставляет определенный набор сервисов для разработчиков. На рис.1, Azure  Services  Platform может использоваться как приложениями, работающими в облаке, так и работающими на локальной системе.

Azure Service Platform поддерживает приложения, работающие как в облаке, так и на локальной системе

Рис.1. Azure  Services  Platform поддерживает приложения, работающие как в облаке, так и на локальной системе.

Компоненты платформы могут использоваться локальными приложениями, работающими на разных системах, включая разные Windows, мобильные устройства и др. Эти компоненты включают:

●     Windows  Azure: Предоставляет основанную на Windows среду для выполнения приложений и хранения данных на серверах в дата центрах Microsoft;

●     Windows  .NET  Services: Предоставляют распределенные инфраструктурные сервисы для облачных и локальных приложений.

●     Microsoft  SQL  Services: Предоставляет сервисы для работы с данными, основанные на SQL Server.

●     Live  Services: Через Live  Framework предоставляет доступ к данным из приложений на Microsoft  Live. Live  Framework также позволяет синхронизировать эти данные между десктопами и устройствами, искать и загружать приложения и другое.

Каждый компонент платформы играет свою собственную роль. Этот обзор описывает их все, вначале вместе на высоком уровне, а потом каждый более детально. Хотя ни один из компонентов еще не в релизе – детали и многое другое может измениться до первоначального выпуска – уже не рано начать понимать этот новый набор платформенных технологий.

Windows Azure

На высоком уровне понять Windows  Azure очень просто: это платформа для запуска Windows приложений и хранения данных приложения в облаке. На рис.2 – основные ее компоненты.

Windows Azure предоставляет сервисы для выполнения ихранения данных облачным приложениям

Рис.2. Windows  Azure предоставляет сервисы для выполнения и
хранения данных облачным приложениям.

Как видно из рисунка, Windows  Azure работает на большом количестве машин, расположенных в дата центрах Microsoft и доступных через интернет. Фабрика Windows  Azure связывает весь этот избыток вычислительной мощи в единое целое. Сервисы хранения данных и выполнения Windows  Azure построены поверх этой фабрики.

Сервисы выполнения Windows  Azure основаны, конечно, на Windows. Для первоначальной доступной версии (CTP стал доступен публике осенью 2008), Microsoft разрешила Windows  Azure запускать только приложения, основанные на .NET  Framework. Компания анонсировала планы по поддержке также и неуправляемого кода, то есть приложений, не построенных на .NET  Framework, в Windows  Azure в 2009.

В CTP версии Windows  Azure, разработчики могут создавать основанные на .NET приложения, такие как ASP.NET приложения и WCF-сервисы. Для этого они могут использовать C# или другие .NET-языки вместе с традиционными средствами разработки типа Visual  Studio  2008. И хотя большинство разработчиков, скорее всего, будет использовать первоначальный версию Windows  Azure для создания web-приложений, платформа так же поддерживает и фоновые процессы, которые работаю независимо от web-части – это не только платформа для web-приложений.

И приложения Windows  Azure, и локальные приложения, могут использовать сервисы хранения данных Windows  Azure, в обоих вариантах одним и тем же способом – с использованием механизма типа REST. Однако, используемое хранилище данных – это не SQL Server. В частности, это даже не реляционная система и ее язык запросов – не SQL. Поскольку система хранения спроектирована для поддержки приложений на Windows  Azure, она предоставляет более простые, более масштабируемые виды хранилищ. Соответственно, оно позволяет хранить большие бинарные объекты (блобы), предоставляет очереди для взаимодействия между компонентами приложений Windows  Azure, и даже представляет что-то типа таблиц с обычным языком запросов.

Выполнения приложений и хранения их данных в облаке может иметь очевидные выгоды. Вместо того, чтобы покупать, устанавливать и обслуживать собственные системы, организация, для примера, может переложить на провайдера услуг в облаке все эти заботы. Также, клиенты платят только за «вычисления» и хранилище, которые они используют, вместо того, чтобы обслуживать огромное количество серверов только для пиковых нагрузок. И если приложения правильно написаны, то они будут легко масштабироваться, используя преимущества огромных дата центров, предоставляемых провайдером услуг в облаке.

Но получение этих выгод требует правильного управления. В Windows  Azure, у каждого приложений есть конфигурационный файл – рис. 2. Изменяя информацию в этом файле, руками или программно, владелец приложения может контролировать различные аспекты его поведения, такие как количество работающих экземпляров Windows  Azure. Фабрика Windows  Azure мониторит приложение, чтобы поддерживать заданное состояние.

Чтобы позволить клиентам создавать, конфигурировать и мониторить приложения, Windows  Azure предоставляет доступный через браузер портал. Клиент предоставляет свой Windows  Live  ID, затем выбирает, создать ли хостинг аккаунт для выполнения приложений или аккаунт хранилища для хранения данных, либо оба. Приложение свободно в выборе способа взимания платы со своих клиентов – подписка, плата за каждое использование или что-то еще.

Windows  Azure это общая платформа, которая может использоваться в различных сценариев. Вот несколько примеров, основанных на том, что позволяет CTP:

●     Стартап, создающий новый сайт, например новый ВКонтакте (в оригинале – Facebook:) , может построить свое приложение на Windows  Azure. Поскольку платформа поддерживает и Web-facing сервисы и фоновые процессы, приложение может предоставить как интерактивный пользовательские интерфейс, так и асинхронное выполнение работ для пользователей. Вместо того, чтобы тратить время и деньги, беспокоясь о инфраструктуре, стартаперы могут сфокусироваться исключительно на создании кода, который значим для их пользователей и инвесторов. Приложение также может стартовать в небольшом размере, требующем небольшие затраты пока у него немного пользователей. Если приложение «пойдет» и его использование возрастет, Windows  Azure смасштабирует приложение как потребуется.

●     ISV создающий SaaS версию существующего локального .NET приложения может построить его на Windows  Azure. Поскольку Windows  Azure в основном предоставляет стандартное .NET окружение, перенос приложения бизнес-логики приложения на облачную платформу не породит множество проблем. И опять же, разработка на существующей платформе, позволит ISV сфокусироваться на бизнес-логике – именно том, что приносит ему деньги – вместо того, чтобы тратить время на инфраструктуру.

●     Корпорация, создающая приложение для своих клиентов может выбрать Windows  Azure. Поскольку Windows  Azure основана на .NET, то и найти подходящих разработчиков будет не сложно, и стоить они будут не «зверски» дорого. Выполнение приложений на площадках Microsoft освобождает корпорацию от ответственности и затрат поддержки своих собственных северов, превращая капитальные затраты в оперативные. Особенно если у приложения есть пики использования – например, если это онлайн магазин цветов, который обязан выдерживать 8-мартовский наплыв (в оригинале – Mother’s  Day) – позволить Microsoft обслуживать большую серверную базу для этого может иметь экономический смысл.

Выполнение приложений в облаке это один из самых важных аспектов облачных вычислений. С Windows  Azure, Microsoft предоставляет платформу для этого, вместе со способом хранения данных приложения.

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

.NET Services

Выполнение приложений в облаке это важная часть облачных вычислений, но это далеко не все, что скрывается под этим термином. Так же можно предоставлять сервисы, основанные на облаке, которые могут использоваться или локальными, или другими облачными приложениями. Решение этой задачи – цель .NET  Services.

Изначально известные как BizTalk  Services, .NET  Services решают основные инфраструктурные проблемы при создании распределенных приложений. На рис.3 – компоненты.

Net Services предоставляют облачную инфраструктуру, которая может использоваться как облачными, так и локальными приложениями

Рис. 3. .NET  Services предоставляют облачную инфраструктуру,
которая может использоваться как облачными, так и локальными приложениями.

Компоненты .NET  Services:

●     Access  Control (контроль доступа): Все более частый способ идентификации – когда каждый пользователь приложению токен, содержащий набор утверждений (claims) . Приложение теперь может решить, что разрешено этому пользователю, основываясь на предоставленных утверждениях.

●     Service  Bus (сервисная шина): Открытие доступа снаружи к сервисам приложения сложнее чем думает большинство. Цель сервисной шины в том, чтобы сделать это проще за счет открытия конечных точек веб-сервисов, которые будут доступными другим локальным или облачным приложениям. Каждой открытой наружу точке доступа назначается URI, который клиенты могут использовать для нахождения и доступа к сервису. Сервисная шина также решает проблемы работы с NAT (Network  Address  Translation) и прохождение через файрволлы без открытия нового порта для каждого открытого наружу приложения.

●     Workflow: Создание композитных приложений, таких как приложения для интеграции enterprise-приложений, требует логики, координирующей взаимодействие между различными частями системы. Такая логика часто лучше всего реализуется за счет workflow, способного поддерживать продолжительные процессы. Построенный поверх Windows  Workflow  Foundation, сервис Workflow позволяет использовать логику такого типа в облаке.

Вот несколько примеров того, как могут использоваться .NET  Services:

●     ISV, который предоставляет приложение, используемое клиентами в различных организациях может использовать Access  Control для упрощения разработки и работы приложения. Для примера, этот компонент .NET  Services может преобразовывать разнообразные утверждения (claims), используемые в различных организациях клиентов, каждая из которых использует у себя разные технологии идентификации, в единообразный набор, который будет использовать разрабатываемое приложение. Также это позволяет перенести работу identity  federation на сервис Access  Control в облаке, что освобождает ISV от необходимости запускать свое локальное federation  software.

●     Представьте корпорацию, желающие дать приложениями своих торговых партнеров доступ к одному из своих приложений. Она может открыть функции приложения через SOAP или REST веб-сервисы, затем зарегистрировать их конечные точки в Service  Bus. Торговые партнеры теперь могут использовать Service  Bus для того, чтобы найти эти открытые сервисы и получить доступ к ним. Поскольку это не требует разрешение новых портов в файрволле организации, то это снижает риск от открытия приложения. Организация также может использовать Access  Control, который разработан для работы с Service  Bus, для приведения к общему виду идентификационных данных, которые клиенты посылают приложению.

●     Вполне вероятно, что рассмотренный выше бизнес-процесс, включающий ее торговых партнеров, обязан выполняться целостно. Для этого можно использовать сервисы Workflow для реализации WF - приложения, которое будет управлять процессом. Приложение может взаимодействовать с партнерами через Service  Bus и положиться на Access  Control в приведении идентификационных данных к общему виду.

Как и при работе с Windows  Azure, есть доступный через браузер портал, который позволяет клиентам подписаться на .NET  Services используя Windows  Live  ID. Цель Microsoft с их .NET  Services проста и понятна: предоставить полезную облачную инфраструктуру для распределенных приложений.

SQL Services

Один из самых привлекательных способов использования доступных в Интернете серверов – это работа с данными. Конечно, обычно это означит предоставление движка баз данных, но не всегда дело ограничивается только этим. Цель SQL  Services – предоставить набор облачных сервисов для хранения и работы с большим количеством разнообразных видов данных, от реляционных до неструктурированных.

Microsoft говорит, что SQL  Services будут включать разные сервисы, связанные с данными, такие как отчеты, анализ данных и т.д. Однако, самый первый компонент - это SQL  Data  Services.

Идея – на рис. 4.

SQL Services предоставляет сервисы для работы с данными в облаке

Рис. 4. SQL  Services предоставляет сервисы для работы с данными в облаке.

SQL  Data  Services, ранее известные как SQL  Server  Data  Services, предоставляют базы данных в облаке. Как видно из рисунка, эта технология позволяет локальным и облачным приложениям хранить и получать доступ к данным на серверах Microsoft в дата центрах Microsoft. Как и с другими облачными технологиями, организация платит только за то, что она использует. Использование (и цена) увеличивается и уменьшается в соответствии с потребностями организации. Использование баз данных в облаке так же позволяет преобразовать то, что было бы капитальными затратами типа инвестиций в жесткие диски или системы управления базами данных, в оперативные затраты.

Основная цель SQL  Services – быть максимально доступными. Для этого она делает доступными интерфейсы как через SOAP, так и через REST, что позволяет подучить доступ к данным самыми разными способами. И поскольку данные доступны через стандартные протоколы, SQL  Data  Services могут использоваться на самых разных системах – это не только Windows технология.

В отличии от сервисов хранения Windows  Azure, SQL  Data  Services построены на Microsoft  SQL  Server. Не смотря на это, сервис не доступен через обычный реляционный интерфейс. Вместо этого, SQL  Data  Services предоставляют иерархическую модель данных, которая не требует предопределенной схемы данных. Каждый элемент данных в этом сервисе хранится как свойство со своим именем, типом и значением. Для запроса этих данных можно использовать запросы в стиле REST или LINQ.

Сразу встает очевидный вопрос, почему бы просто не предложить SQL  Server в облаке? Зачем вместо этого предоставлять облачный сервис баз данных, который использует совсем другие методы, чем те к которым мы все привыкли? Один из ответов состоит в том, что предоставление немного отличный от привычного набор сервисов дает некоторые преимущества. SQL  Data  Services могут предоставить большую масштабируемость, доступность и надежность, чем дал бы простой запуск СУБД в облаке. Тот способ, которым новые сервисы организуют и получают данные, делают репликацию и балансировку нагрузки гораздо более легкой и быстрой, нежели с обычными реляционным способом. Другое преимущество состоит в том, что SQL  Data  Services не требуют от клиентов, чтобы те поддерживали свои собственные СУБД. Вместо того, чтобы заботиться о технических деталях, типа мониторинга использования жестких дисков, обслуживания логов, определения необходимого количества экземпляров и т.д., пользователи SQL  Data  Services могут сфокусироваться на главном – на данных. В конце концов, Microsoft анонсировала планы о добавлении новых реляционных фич в SQL  Data  Service, так что ожидайте роста их функциональности.

SQL  Data  Services могут использоваться самыми разными способами, вот несколько примеров:

●     Приложение может хранить старые архивные данные в SQL  Data  Service. Для примера, представьте приложение, которое предоставляет часто обновляемую RSS ленту. Информация старее, допустим, 30 дней вряд ли будет запрашиваться часто, но она все равно должна быть доступна. Перенос таких данных в SQL  Data  Service может быть дешевой и надежной альтернативой их локальному хранению.

●     Представьте производителя, который хочет сделать информацию о своих продуктах доступной как его сети дилеров, так и клиентам напрямую. Хранения таких данных в SQL  Data  Services позволит обеспечить доступ к данным как приложениям, которые работают у дилеров, так и web-приложению для клиентов, которое работает у самого производителя. Поскольку данные доступны и через REST, и через SOAP, то приложения, которые используют эти данные, могут быть написаны на разных технологиях и для разных систем.

Как и с другими компонентами Azure  Service  Platform, начать использовать SQL  Data  Services просто – нужно идти на портал и заполнить там нужную информацию. Для дешевого архивного хранения, предоставления доступа к данным приложениям, расположенных в разных местах, или с другими целями, облачные базы данных могут быть очень привлекательным решением. С появлением новых технологий под эгидой SQL  Services, компании смогут использовать облако для все большего количества задач, связанных с данными.

Live Services

Если идея облачной платформы относительно нова, то интернет совсем нет. Сотни миллионов людей по всему свету используют его каждый день. Чтобы помочь им в этом, Microsoft предоставляет постоянно расширяющийся набор веб-приложений, включая семейство приложений Windows  Live и другие. Эти приложения предоставляют пользователям возможность слать мгновенные сообщения, хранить контактную данные, получать маршруты и делать другие полезные вещи.

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

Для того, чтобы это стало возможным, Microsoft собрала весь этот разнообразный набор ресурсов в одну группу – Live  Services. Существующие приложения Microsoft, типа семейства Windows  Live, использую Live  Services для хранения и управления своими данными. Чтобы дать возможность новым приложениям использовать эти данные, Microsoft предоставляет Live  Framework. Основные аспекты – на рис. 5.

Live Framework предоставляет приложениям доступ к данным Live Services, при необходимости синхронизируя эти данные между десктопами и мобильными устройствами

Рис.5. Live Framework предоставляет приложениям доступ к данным Live Services,
при необходимости синхронизируя эти данные между десктопами и мобильными устройствами.

ФундаментLive  Framework – это Live  Operating  Environment. Как видно из рисунка, этот компонент выполняется в облаке и приложения получают через него доступ к данным Live  Services. Доступ к данным происходит через HTTP, то есть любые приложения на .NET, Java, javaSAFEscript или других языках могут получить доступ к данным Live Services. Также информация из Live Services может быть получена через Atom или RSS, что позволяет приложениям узнавать об изменениях этих данных. Для настройки и управления функциями Live Services, которые нужны конкретному приложению, разработчик может использовать веб-портал Live  Services  Developer  Portal.

На рис. 5 показан так же другой аспект Live  Framework – Live  Operating  Environment, который так же может выполняться и на системах с Windows  Vista, Windows  XP, Mac  OS  X и Windows  Mobile устройствах. Чтобы использовать эту фичу, пользователь группирует все систему в одну штуку, известную как меш (mesh). Для примера, можно создать меш, который содержит ваш десктоп, ноутбук и сотовый. На каждом из устройств будет выполняться экземпляр Live  Operating  Environment.

Самая главная характеристика меша – это то, что Live  Operating  Environment синхронизирует данные между всеми системами, входящими в него. Пользователи и приложения могут указать, какие данные должны быть синхронизированными, и Live  Operating  Environment автоматически обновит все десктопы, ноуты и мобильные устройства, входящие в меш, данными, которые были изменены на одном из устройств. И поскольку облако это тоже часть любого пользовательского меша – оно представляется там как специальное устройство – то синхронизация работает и для данных Live  Services. Для примера, если пользователь хранит свои контакты в Windows  Live  Hotmail, Windows  Live  Messenger или Windows  Live Contacts, то они будут синхронизированы между всеми устройствами меша. (Правда в ноябрьском CTP  Live  Framework эта возможность еще не работает). Через Live  Operating  Environment также можно давать доступ к каким-то своим данным другим пользователям, что позволяет выборочно делиться какой-либо информацией.

Как показывает рис. 5., приложение может обращаться к данным меша через локальный или облачный экземпляр Live  Operating  Environment. В обоих случаях доступ производится одним и тем же способом – через HTTP-запросы. Такое единообразие доступа дает приложению одинаково работать не зависимо от наличия соединения с облаком, в любом случае данные достуны и обращаться к ним можно тем же способом.

Любое приложение, работает ли оно на Windows или другой операционной системе, может обращаться к данным Live  Services в облаке через Live  Operating  Environment. Если приложение работает на устройстве, которое является частью меша, она может использовать Live  Operating  Environment для обращения к локальным копиям данных Live  Services. Есть и третья возможность – разработчик может сделать штуку, которая называется Mesh-Enabled  Web  Application. Такие приложения создаются с помощью кроссплатформенных технологий типа Silverlight и они обращаются к данным через Live  Operating  Environment. Благодаря таким ограничениям, Mesh-Enabled  Web  Application может потенциально запускаться на любой машине пользовательского меша – Windows машине, Маке, коммуникаторе с Windows  Mobile и она всегда будет иметь доступ к одним и тем же синхронизированным данным. Для поиска таких приложений, среда Live  Framework предоставляет облачное приложение – каталог mesh-enabled web-приложений. Пользователь может посмотреть каталог, выбрать приложение и установить его. И чтобы дать создателям приложений возможность построить бизнес на таких приложениях, Microsoft планирует предоставить встроенную поддержку показа рекламы в их приложениях.

Вот примеры разнообразных способов применения Live  Framework:

●     Java приложение, работающее на Linux, может использовать Live  Framework для работы с контактами пользователя. Приложение не завязывается на какой-то технологии, через которую открыт доступ к этим данным; все, с чем оно работает - это постоянный HTTP интерфейс к пользовательским данным.

●     Приложение на .NET может требовать от пользователя создания меша, а затем использовать Live Framework для кэширования и синхронизации данных. Когда у машины, на которой работает приложение, есть связь с интернетом, приложения работает с копией данных в облаке. Когда связи нет – например при работе на ноутбуке в самолете – приложение использует локальную копию тех же данных. Live Operating  Environmentреплицирует изменения локальных данных в облако.

●     ISV может сделать Mesh-Enabled  Web  Application , которое позволяет пользователям узнавать, чем занимаются их друзья. Это приложение может работать без изменений на всех устройствах пользователя, использовать разные части Live  Framework для социальных приложений. Поскольку Live  Framework поддерживает открытие доступа к пользовательским данным в меше через RSS, то приложение, может, например, подписаться и следить за обновлениями от любого из друзей пользователя. Поскольку Live  Framework предоставляет механизм доставки для mesh-enabled web-приложений, то возможно «вирусное» распространения приложения, когда пользователи приглашают своих друзей пользоваться этим приложением. И поскольку в меше уже есть данные о контактах пользователя из Live  Services, то пользователя может приглашать друзей через само приложение просто по имени, а заботиться о том, чтобы доставить приглашение друзьям, будет уже само приложение.

Live  Framework предоставляет простой способ обращаться к данным Live  Services (причем это не только информация о контактах, как в приведенных упрощенных примерах, а гораздо большее). Возможности по синхронизации так же могут быть применимы в самых разных приложениях. Тем приложениям, которым важны эти функции, эта платформа предлагает уникальный набор функций.

Детальный взгляд на технологии

Получить общее представление о Azure  Service  Platform это важный первый шаг, однако, более глубокое понимание каждой из технологий тоже необходимо. В этом разделе каждый из членов семьи Azure рассматривается немного более детально.

Windows Azure

Windows  Azure делает две основные вещи - выполняет приложения и хранит их данные. Соответственно, этот раздел разделен на две части, посвященный каждой из них. Взаимодействие частей тоже очень важно, поэтому его описание тоже будет частью раздела.

Выполнение приложений

В Windows  Azure приложение обычно имеет несколько экземпляров, каждая из которых выполняет часть или весь код приложения. Каждый из экземпляров работает на своей виртуальной машине. Все виртуалки работают под Windows  Server  2008 и они предоставлены гипервизором, специально разработанным для использования в облаке.

В то же время, приложение на Windows  Azure не видит виртуальную машину, на которой она работает. Разработчик не может предоставить свой образ виртуальной машины, чтобы Windows  Azure работала на нем, но ему и не нужно заботиться о поддержке этой копии Windows. Вместо этого, CTP версия дает разработчикам создавать .NET 3.5 приложения с двумя типа экземпляров – одна выполняет Web  Role другая Worker  Role. На рис.5 – как это все работает.

В CTP версии приложение Windows Azure состоит из экземпляров Web Role и Worker Role, каждая из которых работает на своей виртуальной машине

Рис. 6. В CTP версии приложение Windows  Azure состоит из экземпляров Web  Role и Worker  Role,
каждая из которых работает на своей виртуальной машине.

Как видно из названия, экземпляр Web  Role принимает входящие HTTP (или HTTPS) запросы через InterNET  Information  Services  (IIS) 7. Web  role может быть реализована с помощью ASP.NET, WCF или другой .NET технологии, которая работает с IIS. Как показано на рис. 6, Windows  Azure предоставляет встроенный балансировщик нагрузки, который распределяет запросы между разными экземплярами Web  Role, которые являются частями одного приложения.

Worker  Role, напротив, не принимает запросов напрямую из внешнего мира – она не может иметь внешних входящих сетевых соединений и на ее виртуальных машинах нет IIS. Вместо этого, она получает исходные данные от Web  Role, обычно через очередь в хранилище Windows  Azure. Результат работы экземпляров Worker  Role может писаться в хранилище Windows  Azure или посылаться во внешний мир – исходящие сетевые соединения разрешены. В отличии от экземпляров Web  Role, которые создаются для обработки HTTP-запросов и выключаются после обработки запроса, Worker  Role может работать бесконечно – это фоновое задание. За счет этого отсутствия специализированности, Worker  Role может быть реализована с помощью любой .NET-технологии, поддерживающей метод main() (есть некоторые ограничения, связанные с доверием Windows  Azure, которые будут описаны ниже).

Каждая виртуальная машина, хостящая экземпляр Web  Role или Worker  Role, содержит агента Windows  Azure, через который приложения взаимодействуют с фабрикой Windows  Azure, как на рис.6. Агент доступен через определенный в Windows  Azure  API, через который приложения могут писать в лог, управляемый Windows  Azure, посылать предупреждения своему владельцу через фабрику Windows  Azure и т.д.

Хотя в будущем текущее положение дел может измениться, в CTP каждой виртуальной машине соответствует свое физическое ядро процессора. Благодаря этому производительность каждого приложения может быть гарантирована – каждый экземпляр Web  Role и Worker  Role имеет свое собственное выделенное ядро. Для увеличения производительности всего приложения, его владелец может увеличить количество работающих экземпляров указанное в конфигурационном файле. Фабрика Windows  Azure затем «разгонит» новые виртуальные машины, назначит им ядра, и запустит больше экземпляров приложения. Фабрика также определяет, когда экземпляр Web или Worker  Role падает, и запускает новый.

Обратите внимание на следствие из этого: чтобы обеспечит масштабируемость, экземпляры Web  Role не должны хранить свое состояние. Любое информация о специфичном для клиента состоянии должна писаться в хранилище Windows  Azure или отправляться клиенту с куками. Отсутствие состояния у Web  role необходимо для встроенного в Windows  Azure балансировщика нагрузки. Поскольку нельзя привязываться к определенному экземпляру Web  Role, то нельзя и гарантировать, что разные запросы от одного пользователя будет обрабатывать один и тот же экземпляр.

И Web  Role и Worker  Role реализуются с помощью стандартных .NET технологий. Но перенести существующие приложения на Windows  Azure без изменений скорее всего не получится. С одной стороны, отличается способ доступа к данным. Доступ к хранилищу Windows  Azure реализуется через ADO.NET  Web  Services, относительно новую технологию, которая еще не применяется повсеместно в локальных приложениях. Аналогично, Worker  Role обычно использует очередь хранилища Windows  Azure для получения входных данных, то есть абстракцию, аналогов которой для локальных приложений не существует. Другое ограничение – это то, что приложения Windows  Azure не работают в полностью доверенной среде. Наоборот, они ограничены тем, что Microsoft называет Windows  Azure  trust, что соответствует средней степени доверия, которую используют большинство ASP.NET хостеров.

Для разработчиков, создание Windows  Azure приложений на CTP версии очень схоже с разработкой традиционных .NET приложений. Microsoft предоставляет шаблоны проектов VS2008 для создания Windows  Azure  Web  Role, Worker  Role, и комбинации обеих ролей. Разработчики могут использовать на выбор любой .NET язык (хотя будет справедливым отметить, что фокус Microsoft при разработке Azure был на C#). Также, Windows  Azure  SDK включает версию среды Windows  Azure, запускаемую на компьютере разработчика. Она содержит хранилище, агента Windows  Azure и все остальное, что доступно приложению, запускаемому в облаке. Разработчик может создавать и отлаживать свое приложение в своем локальном подобии облака, а затем распространить его в настоящее облако, когда оно будет готово. В то же время, некоторые вещи в облаке совсем другие. Невозможно подключиться отладчиком к приложению в облаке, для примера, так что отладка облачных приложений производится в основном за счет управляемого Windows  Azure лога через агента.

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

Доступ к данным

Приложения работают с данными самыми разными способами. Иногда, все что нужно – это простые блобы, другие ситуации требуют более структурированного способа хранения информации. В некоторых случаях, все что надо – это механизм обмена данными между различными частями приложения. Хранилища Windows  Azure покрывают все эти требования как показано на рис. 7.

Windows Azure позволяет хранить данные в блобах, таблицах и очередях, доступ которым предоставляется через REST поверх HTTP

Рис. 7. Windows  Azure позволяет хранить данные в блобах, таблицах и очередях,
 доступ к которым предоставляется через REST поверх HTTP.

Самый простой способ хранения данных в Windows  Azure – используя блобы. Как на рис. 7, есть простая иерархия: аккаунт хранилища может иметь один или несколько контейнеров, каждый из которых хранить один или несколько блобов. Блобы могут быть большими – влоть до 50 Гб каждый – а чтобы сделать передачу блобов проще, каждый из них может быть разделен на подблобы. При ошибке передачи, повторная передача может начаться с самого последнего передаваемого подблоба. Блобы могут иметь метаданные, типа информации о том, где была сделана JPEG фотографии, или данные о композиторе песни для MP3 файла.

Для некоторых видов данных блобы – самое то, но во многих ситуациях они оказываются недостаточно структурированными. Чтобы приложения могли работать с данными на уровне мелких структурных единиц, хранилища Windows  Azure предоставляют таблицы. Не смотря на схожесть имен, их не надо путать с реляционными таблицами. В действительности, хотя они и называются таблицами, данные в них хранятся в виде простой иерархии сущностей со свойствами. У таблицы нет определенной схемы данных, вместо этого, свойства могут иметь различные типы, такие как Int, String, Bool или DateTime. И вместо того, чтобы использовать SQL для работы с данными, приложение обращается к данным через язык запросов с синтаксисом LINQ. Одиночная таблица может быть весьма большой, с миллионами сущностей, хранящими терабайты данных, и Windows Azure может разбить таблицу между многими серверами, если это необходимо для обеспечения производительности.

И блобы, и таблицы предназначены для хранения данных. Третий метод хранения данных в хранилище Windows  Azure – очереди – создан немного с другой целью. Основная роль очередей – обеспечить взаимодействие экземпляров Web  Role и Worker  Role. Для примера, пользователь посылает запрос на выполнение какой-то ресурсоемкой задачи через веб-страницу, реализованную в Web  Role. Экземпляр Web  Role, который получает этот запрос, пишет сообщение, описывающее требуемую работу, в очередь. Экземпляр Worker  Role, который ожидает сообщения в очереди, считывает новое сообщение и выполняет требуемую работу. Результаты работы он может вернуть через другую очередь или каким-то другим способом.

В не зависимости от способа хранения – в блобах, очередях или таблицах – для всех данных в Windows  Azure хранятся три копии. Это дает независимость от падений, поскольку потеря одной копии не фатальна. Система также гарантирует целостность, так что приложение, читающее данные, которые оно только что записало, получит именно то, что оно ожидает.

Данные в хранилище Windows  Azure доступны как приложениям Windows  Azure, так и приложениям, выполняющимся в каком-то другом месте. В обоих случаях, для всех трех способов хранения данных доступны они одинаково, используя соглашения REST для идентификации и предоставления доступа к данным. Все именуется URI и доступно через обычные HTTP операции. Клиент на .NET может использовать ADO.NET  Services или LINQ, а из, например, Java-приложения доступ к данным Windows  Azure осуществляется через стандартный REST. Для примера, блоб может быть считан через HTTP  GET к URI, форматированному примерно так:

http://<StorageAcount>.blob.core.windows.NET/<Container>/<BlobName>

<StorageAccount> это идентификатор, который назначается каждой созданной учетной записи хранилища, и он уникально идентифицирует блобы, таблицы и очереди, созданные в этом аккаунте. <Container> и <BlobName> это просто имена контейнера и блоба, к которым идет обращение в запросе.

Аналогично, запрос к определенной таблице выражается через HTTP GET запрос к URI вида:

http://<StorageAcount>.table.core.windows.NET/<TableName>?$filter=<Query>

Здесь <TableName> указывает запрашиваемую таблицу, а <Query>   запрос для выполнения к этой таблице.

Даже очереди доступны приложениям Windows Azure и внешним приложениям через HTTP GET к URI:

http://<StorageAcount>.queue.core.windows.NET/<QueueName>

Плата за вычисления ресурсы и хранилища на платформе Windows  Azure взымается независимо. Это значит, что локальное приложение может использовать только хранилище Windows  Azure, обращаясь к его данным через REST, как было описано. Но всё же, справедливо будет отметить, что основная цель хранилищ Windows  Azure – это работа с данными приложений Azure. И поскольку данные доступны не Azure приложениям напрямую, то они остаются доступны даже тогда, когда использующее их приложение Azure не выполняется.

Основная цель платформ для приложений, облачных ли или локальных, это поддержка приложений и данных. Windows  Azure предоставляет среду и для того, и для другого. Смотря в будущее, можно ожидать, что приложения, которые должны были бы быть локальными Windows приложениями, будут построены на этой новой облачной платформе.

.NET Services

Выполнения приложений в облаке уже само по себе полезно, но не менее полезны и предоставляемые в облаке инфраструктурные сервисы. Эти сервисы могут использовать как локальные, так и облачные приложения, и они решают задачи, которые другим способом решить было бы значительно труднее. Этот раздел рассматривает предложения Microsoft в этой сфере: .NET  Access  Control  Service, .NET  Service  Bus и .NET  Workflow  Service, которые все вместе и известны как .NET  Services.

Access Control Service

Работа с идентификационными данными это фундаментальная часть большинства распределенных приложений. Основываясь на идентификационных данных пользователя, приложение решает, что разрешено этому пользователю. Для передачи этих данных приложение может использовать токены, определенные с помощью Security  Assertion Markup  Language  (SAML). Токен SAML содержит утверждения (claims), каждое из которых представляет определенную информацию о пользователе. Одно утверждение может содержать имя пользователя, другое указывать на его роль, типа «менеджер» или «генеральный директор», третье – содержать его электронную почту. Токены создаются приложениями, известными как security  token  service (STS), которые подписывают цифровыми подписями каждый токен для подтверждения его источника.

Как только клиент (например, Web-браузер) получает токен пользователя, он может предоставить его приложению. Приложение теперь может использовать утверждения из токена для определения, что разрешено этому пользователю. В тоже время, сразу появляется пара проблем:

●     Что если токен не содержит утверждений, которые нужны приложению? С идентификацией, основанной на утверждениях, каждое приложение может определить набор утверждений, которые должны предоставлять пользователи. В то же время, не факт, что STS, создавший токен, добавил в него именно то, что нужно приложению.

●     Что если приложение не доверяет STS, выдавшему токен? Приложение не может принимать все подряд токены, которые выданы любым STS. Вместо этого, у приложения обычно есть список сертификатов доверенных STS, что дает приложению возможность проверить подиси токена. Только токены от доверенных STS будут приняты приложением.

Добавление нового STS в этот процесс может решить обе проблемы. Чтобы быть уверенным, что токен содержит нужные утверждения, этот дополнительный STS производит преобразование утверждений. STS может иметь правила, определяющую связь исходных и итоговых утверждений, и использовать эти правила для создания токена, содержащего именно те утверждения, которые нужны приложению. Решение второй проблемы, обычно называемое identity  federation, требует, чтобы приложения доверяло этому новому STS. Так же требуется установить доверенные отношения между этим STS и STS, выдавшем исходный токен.

Добавление дополнительного STS дает возможности преобразования утверждений и identity  federation, и то и другое очень полезно. Но где должен выполняться этот STS? Можно использовать STS, который работает внутри организации – это услуга, которую предоставляют некоторые вендоры. А почему бы не выполнять STS в облаке? Это сделает его доступным пользователям и приложениям любых организаций. Это также перекладывает заботу об управлении и поддержке STS на провайдера услуги.

Это и есть именно то, что предлагает Access  Control  Service: это STS в облаке. Чтобы представить, как такой STS может использоваться, предположим ISV, который предоставляет приложение, доступное через интернет, с которым могут работать пользователи из разных компаний. Даже если все компании смогут предоставить SAML токены для своих пользователей, маловероятно, что они будут содержать именно тот набор утверждений, который нужен приложению. На рис.8 – то как Access  Control Service решает эту проблему.

Access Control Service предоставляет основанное на правилах преобразование утверждений и identity federation

Рис. 8. Access  Control  Service предоставляет основанное на правилах преобразование утверждений и identity  federation.

Вначале, пользовательское приложение (в этом примере это браузер, но это может быть и WCF клиент или что-то еще) посылает токен пользователя Access  Control  Service (шаг 1). Сервис проверяет подпись токена, проверяет, что токен выдан доверенным STS. После этого сервис создает и подписывает новый SAML токен, который содержит требуемые приложению утверждения.

Чтобы сделать такое преобразование, STS в Access  Control  Service использует правила, определенные владельцем приложения. Для примера, представим приложение, которое дает определенные права любому пользователю, который работает менеджером в своей компании. Хотя каждая компания может включить утверждение в свой токен, которое показывает что пользователь – это менеджер, утверждения разных компаний вполне могут оказаться разными. Одна компания может использовать строку «Manager», другая «Supervisor», а третья вообще специальный код, выраженный целым числом. Чтобы помочь приложениям работать со всем этим многообразием, владелец приложения может определить правило, которое преобразует все три приведенных утверждения в одно, содержащее строку «Decision  Maker». Жизнь приложения после этого становится гораздо проще, поскольку работа с преобразованием утверждений для него уже сделана.

После создания нового токена, Access  Control  Service возвращает новый токен клиенту (шаг 3), который затем предает его приложению (шаг 4). Приложение проверяет подпись токена, чтобы быть уверенным, что она выдано именно STS в Access  Control  Service. Нужно отметить, что хотя STS в Access  Control  Service должен устанавливать доверительные отношения с STS всех компаний пользователей, само приложение должно доверять только STS в Access  Control  Service. Когда доверие к токену подтверждено, приложение использует содержащиеся в нем утверждения для определения прав пользователя.

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

Все взаимодействие с Access  Control  Service производится через стандартные протоколы WS-Trust и WS-Federation. Это делает сервис доступным любым приложениям на любых платформах. Для определения правил, сервис предоставляет как GUI через браузер, так и API для доступа из программ.

Идентификация, основанная на утверждениях, прокладывает свой путь к тому, чтобы стать стандартным механизмом в распределенных приложениях. За счет предоставления STS в облаке, дополненного возможностью преобразования утверждений, Access  Control  Service делает этот новый механизм идентификации все более привлекательным.

Service  Bus

Предположим, что у вас есть приложение, которое работает внутри компании, и доступ к которому вы хотите дать другим компания через интернет. На первый взгляд, это кажется очень простой проблемой. Допустим, что функционал вашего приложение доступен через веб-сервисы (REST или SOAP), тогда вы можете просто сделать эти Веб-сервисы доступными внешнему миру. Когда вы в действительности попытаетесь делать это, сразу возникнут некоторые проблемы.

Во-первых, как приложениям в других компаний (или даже частям вашего приложения) найти точки доступа. через которые они могут связаться с вашими сервисами? Было бы здорово иметь что-то типа реестра, через который можно найти ваше приложение. После того, как ваше приложение было найдено, как запросы от приложений других компаний доберутся до вашего приложения? NETwork  Address  Translation (NAT) – обычное дело, так что приложение часто не имеет фиксированного внешнего IP-адреса. И даже если NAT не используется, как этим запросом пройти через файрволл? Конечно, можно открыть определенные порты для приложения, но большинство сетевых администраторов смотрят на это очень неодобрительно.

Service  Bus решает эти проблемы – рис.9.

Service Bus дает приложениям регистрировать свои точки доступа, затем другие приложения могут их обнаруживать и использовать для доступа к сервисам приложения

Рис. 9. Service  Bus дает приложениям регистрировать свои точки доступа,
затем другие приложения могут их обнаруживать и использовать для доступа к сервисам приложения.

Для начала, ваше приложение регистрирует одну или несколько точек доступа в Service  Bus (шаг 1), которая уже сама открывает доступ к ним в ваших интересах. Service Bus назначает вашей организации корневой URI, внутри которого вы можете создавать любую иерархию имен, какую пожелаете. Это позволяет вашим точкам доступа иметь назначенные им определенные, обнаруживаемые URI. Ваше приложение должно открыть соединение с сервисной шиной для каждой точки доступа, которую она создает. Service  Bus держит это соединения установленным, что решает две проблемы. Во-первых, NAT больше не доставляет неприятностей, поскольку трафик от Service  Bus всегда дойдет до приложения через открытое им соединение. Во-вторых, поскольку соединения было инициировано изнутри сети компании, то не будет и проблем с прохождением информации обратно к приложению - файрволл не будет блокировать этот трафик.

Когда приложению другой компании (или даже другой части вашего приложения) нужно обратиться к вашему приложению, оно обращается к реестру Service Bus (шаг 2). Для запросы используется Atom  Publishing  Protocol, ответ возвращается в виде AtomPub документа с ссылками на точки доступа вашего приложения. Когда эти данные получены, приложение может обратиться к сервисам доступным через эти точки доступа (шаг 3). Каждый запрос получает Service Bus, затем передает его вашему приложению, ответ приложение идет по обратному пути. И хотя на рисунке это и не показано, если возможно, что Service Bus устанавливает прямое соединение между приложением и его клиентом, что делает коммуникацию более эффективной.

Вместе с упрощением коммуникации, Service  Bus может так же повысить безопасность. Поскольку клиенты видят только IP, принадлежащий Service  Bus, нет необходимости открывать IP адреса вашей организации. Это эффективно делает ваше приложение анонимным, поскольку внешний мир не видит его IP. Service  Bus работает как внешний DMZ, предоставляя «слой преобразования адресов» помогающий защищаться от атакующих. Наконец, Service  Bus была разработана для использования вместе с Access  Control  Service. В частности, Service  Bus принимает токены только от STS  Access  Control  Service.

Приложение, которое открывает доступ своим сервисам через Service  Bus, обычно реализуется с помощью WCF. Клиенты могут быть написаны с помощью WCF или других технологий, типа Java, и они могут посылать запросы через SOAP или HTTP. Приложения и их клиенты могут использовать свои собственные механизмы безопасности для защиты своей коммуникации от атакующих и самой Service  Bus.

Открытие доступа к приложениям из внешнего мира не так просто, как может показаться. Цель Service  Bus – сделать реализацию этого полезного поведения максимально простым и очевидным.

Workflow  Service

Windows  Workflow  Foundation это основная технология для создания workflow приложений. Один из классических сценариев для применения Workflow – это контроль протяженного по времени процесса, как это часто происходит при интеграции enterprise-приложений. В более общем случае, WF-приложения могут быть хорошим выбором для координирования многих видов работ. Особенно когда координируемая работа происходит между несколькими компаниями, выполнение контролирующей логики в облаке может быть очень хорошим решением.

Workflow  Service собственно и предоставляет такую возможность. Предоставляя хост-процесс для приложений, основанных на WF 3.5, он дает разработчиком возможность создавать workflows, которые выполняются в облаке. Как это выглядит – на рис. 10

Workflow Service позволяет создавать WF-приложения, которые могут взаимодействовать через HTTP или Service Bus

Рис. 10. Workflow  Service позволяет создавать WF-приложения,
которые могут взаимодействовать через HTTP или Service  Bus.

Каждый WF  workflow реализуется, используя некоторое количество activities, на рисунке они выделены красным цветом. Каждая activity выполняет определенное действие, такие как отправка или получение сообщения, реализация условного выражения, или управление циклом. WF предоставляет стандартный набор activities, известных как Base  Activity  Library  (BAL), и Workflow  Service дает приложениям использовать подмножество BAL. Сервис также предоставляет некоторый набор своих собственных activities. Для примера, приложение, которое выполняется на сервисе, может взаимодействовать с другими приложениями через HTTP или Service  Bus, как на рис. 10, то есть Workflow  Service содержит встроенные activities для реализации и того, и другого. Workflow  Service так же предоставляет activities для работы с XML сообщениями - частое требованияе при организации интеграции приложений.

Однако выполнение в облаке привносит и некоторые ограничения. Основанные на WF приложения, выполняющиеся на Workflow  Service, могут использовать только последовательную модель workflow, для примера. Также и выполнение произвольного кода не разрешено, так что ни Code  Activity из BAL, ни пользовательские activity не могут использоваться.

Для создания приложений для Workflow  Service, разработчики могут использовать стандартный workflow дизайнер из Visual  Studio. После того, как приложение написано, оно может быть опубликовано в облако через портал, доступный через браузер, или программно через предоставляемое API. Выполнение приложений так же может управляться через портал или через приведенное API. И как и в случае с Service Bus, приложение, которое взаимодействует с Workflow Service, обязано вначале получить токен от Access  Control  Service - это единственный доверенный STS.

WF-приложения это не метод для решения любых задач. Однако, когда требуется решение задачи подходящего вида, использование workflow может сделать жизнь разработчика гораздо проще. За счет предоставления управляемого, масштабируемого способа хостить WF-приложений в облаке, Workflow Service делает эту полезную технологию доступнее.

SQL Services

SQL Service это общее название для того, что будет группой облачных технологий. Все они сфокусированы на работе с данными - их хранении, анализе, создании отчетов по данным и т.д. Представленные эти базовые функции баз данных, возможно, самые фундаментальные из всех, и будут первыми появившимися членами семейства под названием SQL  Data  Services.

Базы данных в облаке привлекательны по многим причинам. Для некоторых организаций переложить на провайдера сервиса заботы об обеспечении надёжности, резервного копирования и других функций поддержки может быть очень удобно. Данные в облаке так же легко сделать доступными для приложений, которые выполняются где угодно, в том числе и на мобильных устройствах. И поскольку масштабирование в облаке реализуется на радость  провайдеру гораздо экономичнее, то в итоге и для организаций хранение данных в облаке получается дешевле. Цель SQL Data  Services - предоставить все эти выгоды.

В то же время, реализация надежной, высокопроизводительной базы данных с InterNET-масштабируемостью это совсем не простое дело; нужные какие-то компромиссы. Как было описано выше, для примера, SQL  Data  Services не предоставляют стандартную реляционную базу данных, не дает работать через обычные SQL запросы. Вместо этого, данные организуются, используя структуру как на рис.11.

SQL Data Services дата центры разделены на authorities, каждая из которых содержит контейнеры, которые в свою очередь содержат сущности содержащие свойства

Рис.11. SQL  Data  Services дата центры разделены на authorities,
каждая из которых содержит контейнеры, которые в свою очередь содержат сущности содержащие свойства.

Информация в SQL  Data  Services хранится во многих разных дата центрах. Каждый из центров содержит определенное количество authorities, как на рис.11. Разделение на authority идет по географическому расположению, каждый из них хранится в определенном дата центре Microsoft и имеет уникальное DNS имя. Authority содержит контейнеры, каждый из которых реплицируется внутри своего дата центра. Контейнеры используются для балансировки нагрузки и доступности данных: при ошибке, SQL Data Services автоматически начнет использовать другую реплику контейнера. Каждый запрос выполняется к одному определенному контейнеру - запросы к данным из всего authority не допустимы. Каждый контейнер хранит некоторое количество сущностей, которые в свою очередь содержат свойства. У каждого свойства есть имя, тип, и значение этого типа. Типыподдерживаемые SQL  Data  Services влючают String, DateTime, Base64Binary, Boolean и Decimal. Приложения так же могут хранить блобы с MIME типами.

Для обращения к этим данным, у приложений есть несколько вариантов. Один из них - это использование языка запросов, близкого по синтаксису к LINQ в C#, которые отправляются через SOAP или REST. Другой вариант - использовать ADO.NET  Data  Services, альтернативный способ доступа к данным типа REST. В обоих случаях, приложение делает запросы к контейнерам используя операторы типа ==, !=, >, <, AND, OR или NOT. Запросы так же могут некоторые похожие на SQL операторы, такие как ORDER  BY и JOIN.

Однако для запросов объектами получения или обновления являются сущности, а не их свойства. Запрос возвращает некоторое количество сущностей, для примера, включая все свойства, которые они содержат. Аналогично, нельзя и изменить только одно свойство сущности - нужно заменять всю сущность. И поскольку сущности не имеют предопределенной схемы данных, то свойства в одной сущности могут иметь разные типы. Сущности в одном контейнере так же могут отличаться друг от друга, каждая из них содержать разный набор свойств.

Данные в SQL  Data  Services именуются через URI, очень похоже на Windows  Azure  Storage  Service. Общий формат, для URI, идентифицирующей определенную сущность выглядит примерно так:

http://<Authority>.data.database.windows.NET/v1/<Container>/<Entity>

Не лишним будет еще раз подчеркнуть, что SQL Data Services не требует .NET на клиенте. Данные, которые там содержатся, доступны через REST - то есть обычный HTTP - или через SOAP любому приложению на любой платформе. Вне зависимости от платформы, на которой они выполняются, приложения для обращения к данным должны идентифицировать своих пользователей с определенным SQL  Data  Services именем пользователя и пароля или токеном, созданным Access  Control  Service  STS.

Microsoft анонсировала планы по развитию SQL  Data  Services в более реляционную технологию. Если вспомнить, что в отличие от Windows  Azure  Storage, SQL  Data  Service  Storage реализованы поверх SQL  Server, то такая эволюция становится естественной. В не зависимости от предоставляемой модели, цель технологии остается одна и та же - предоставление масштабируемой, надежной и недорогой облачной базы данных для любых типов приложений. С расширением SQL  Data  Services, которые будут включать новые облачные сервисы по работе с данными, можно ожидать, что все они будут опираться на этого первого представителя семейства.

Live Services

Что является движущей силой создания новой платформы для приложений? Ответ - это изменения, изменения в железе, в софте и изменения в способах того, как мы используем приложения и данные. Мобильные телефоны трансформировались в компьютеры, для примера, и сервера в облаке стали большой частью нашей жизни. Приложения стали более личными, как и данные, которые мы храним в этих приложениях. Собрав эти изменения вместе, получаем основу для создания новой платформы приложений.

Live  Services и Live  Framework дают хороший пример этого. Приложения могут использовать Live Framework для доступа к данным Live  Services, так же они могут положиться на Live  Framework при синхронизации этих данных между десктопами, лаптопами и мобильными устройствами. Рис. 12 показывает как Live  Services и Live  Framework работают вместе.

Live Framework дает приложениям доступ к данным Live Services и т.п.

Рис.12. Live  Framework дает приложениям доступ к данным Live Services и т.п.

Live Services разбиты на несколько категорий, как показано на рисунке. Каждый сервис предоставляет доступ к определенному набору ресурсов, которые могут принадлежать конкретному пользователю или быть общими. Для примера, список контактов пользователей доступен через сервис Directory, а его профиль - это ресурс, предоставляемый сервисом Storage. Оба эти сервисы работают с данными, специфичными для конкретного пользователя, поскольку они открывают доступ к данным, связанным с определенным пользователем. А Geospatial сервис предоставляет ресурсы, содержащие разделяемые данные, типа карт и другой географической информации, так же и как и Search сервис.

Данные в Live  Services используются существующими приложениями Microsoft самыми разными способами, как показано на рисунке. Основная цель Live Framework - упростить создание приложений, которые используют эти же данные. Live  Mesh самого Microsoft - это один из примеров такого приложения, и ISV и конечные пользователя могут без проблем создавать новые другие приложения. Все эти приложения получают доступ к данным через основной компонент Live  Framework - Live  Operating  Environment. Как это выглядит описано ниже.

Доступ к данным

Самый простой способ обратиться к данным Live  Services - сделать это напрямую через Live  Operating  Environment. Рис. 13 показывает, как это выглядит.

Поскольку Live Framework открывает доступ к данным Live Services через HTTP, то приложения, написанные на самых разных технологиях, могут использовать эти данные

Рис. 13. Поскольку Live  Framework открывает доступ к данным Live  Services через HTTP,
то приложения, написанные на самых разных технологиях, могут использовать эти данные.

Все ресурсы, предоставляемые Live  Services, как специфичные для определенного пользователя, так и разделяемые, именуются с помощью URI. Для обращения к этой информации, приложения могут делать REST запросы через HTTP. Так же ресурсы доступны через AtomPub или другими основанными на HTTP способами. Информация передается в XML или JSON, подписка реализуется через RSS или Atom.

Для реализации согласованного способа описания и именования данных Live  Services, Live  Framework определяет модель ресурсов. Эта модель определяет типы и допустимые отношения между экземплярами этих типов, а также и схему именования через URI. Приложения так же могут создавать свои собственные типы для хранения своих видов информации. Цель всего этого - предоставить общую единую схему для обнаружения и навигации по данным Live  Services, равно как и предоставить приложениям нужную им гибкость для хранения самой разной информации. И поскольку каждый пользователь может детально контролировать, какой из его ресурсов доступен какому приложению и в течение какого срока, то ничьи персональные данные не общедоступны.

Надо отметить, что данные, используемые Live приложениями Microsoft доступны уже сейчас через существующее Live  Services  API (иногда это еще называет Windows  Live  Platform). Однако эти API значительно различаются для разных приложений. За счет предоставления общего, основанного на HTTP доступа ко всей этой информации, Live  Framework заменит этот старый способ на более простой и согласованный интерфейс.

Для написания приложений, использующих данные Live  Framework, разработчик может писать код с использованием напрямую HTTP интерфейса. Однако чтобы упростить это, Live  Framework так же включает Live  Framework  Toolkites. Эти библиотеки предоставляют более простой и естественный способ для разработчиков для создания приложений, обращающихся к данным Live  Services через Live  Framework. Microsoft предоставляет тулкиты для .NET  Framework, Silverlight и javaSAFEscript, скорее всего в дальнейшем программистское сообщество создаст тулкиты и для других платформ. Подчеркнем еще раз, ничто в способе доступа к данным в Live  Framework не привязано к технологиям Microsoft, Live F ramework  Toolkits могут быть созданы для любой платформы.

Использование Mesh

До тех пор, пока у него есть правильные разрешения, любое приложение свободно использовать данные Live  Services через Live  Framework. Дополнительно, приложение может работать на системе, которая была сделана частью мэша. Если это так, то у приложения есть некоторые дополнительные возможности.

Как было описано ранее, каждый пользователь может иметь свой собственный мэш, содержащий системы, которые он использует. Для примера, у пользователя может быть рабочий десктоп на Windows  XP, Мак дома, ноутбук на Windows  Vista и телефон, работающий на Windows  Mobile. Все эти системы могут быть собраны в меш, как на рис. 14.

При добавлении системы в меш на эту систему устанавливается Live Operating Environment

Рис. 14. При добавлении системы в меш на эту систему устанавливается Live  Operating  Environment.

Для создания меша, пользователь может залогиниться со своим Live  ID, а затем работать со своим рабочим столом Live  Desktop через браузер. Это облачное приложение используется для добавления приложений в меш пользователя. Чтобы реализовать это, Live  Desktop в облаке загружает и устанавливает Live  Operating Environment на эту машину (шаг 2).

Как было показано выше, Live  Operating  Environment позволяет приложениям обращаться к данным Live Services через HTTP. Однако, когда это происходит в меше, этот компонент делает больше: он синхронизирует пользовательские данные Live  Services между облаком и всеми системами в меше. Рис.15 иллюстрирует эту идею.

Live Operating Environment поддерживает синхроннизированность данных между десктопами, устройствами и облаком

Рис.15. Live  Operating  Environment поддерживает синхронизированность данных между десктопами, устройствами и облаком.

Пользователи и приложения могут указать, какие данные нужно включить в меш, и Live  Operating  Environment возьмет на себя заботу о поддержке этих данных синхронизированными. Для примера, приложение Microsoft  Live  Mesh позволяет пользователю указать определенную папку как часть меша. После того, как это сделано, Live  Operating  Environment будет незаметно распространять изменения, сделанные в этой папке, между всеми системами меша. Аналогично, пользовательские данные Live  Services, типа контактов или профиля, могут поддерживаться синхронизированными внутри всего меша.

Синхронизация в меше сделана так, что пользователь может менять данные на любой системе, нет одной главной, на которой должны производиться все изменения (multi-master). Для этого используется технология FeedSync, это определенный Microsoft, публично доступный протокол, который работает на HTTP. Если возможно, то данные синхронизируются напрямую между связанными системами - peer-to-peer. Однако, поскольку это не всегда возможно, то система может так же синхронизироваться с Live  Operating  Environment в облаке. Этот облачный экземпляр может соединиться напрямую с любой системой в меше - это peer для всех систем, так что он может синхронизироваться со всеми.

Как обычно, приложение, работающее на системе в меше, может обращаться к данным через HTTP-запросы к Live  Operating  Environment в облаке. Так же у приложения есть доступ к локальной копии всех данных Live Services, которые были добавлены в меш. Вместо того, чтобы взаимодействовать с удаленным экземпляром Live  Operating  Environment, приложение может слать те же HTTP-запросы к экземпляру, работающему локально, как на рис. 15. Кроме базовой части URI, эти запросы будут идентичны как для локального, так и для облачного экземпляра Live  Operating  Environment.

Эта симметрия позволяет приложению работать единым способом с локальными и облачными данными. Если приложение работает на десктопе или устройстве, которое в данный момент не соединено с интернетом, для примера, то приложение может обращаться к локальной копии, которая работает как кэш для последнего известного состояния облачных данных. Когда устройство снова соединиться, приложение может обращаться к облачным данным напрямую - все что нужно поменять это URI - или подождать, пока обновится локальная копия за счет синхронизации Live  Operating  Environment.

Системы, на которых не работает Live  Operating  Environment, могут так же участвовать в меше, хотя и более ограниченно. Поскольку Live  Desktop доступен через любой браузер, пользователь, работающий, например, на Linux, может создать меш только с одним облачным компонентом, то есть меш без десктопов и устройств. Приложения, работающие на Linux, могут хранить и обращаться к данным в этом простом меше так же, как и с обычными данными в Live Services - через HTTP. В частности, приложение может даже реализовать поддержку протокола FeedSync для синхронизации данных в облаке с локальной копией. Системы, на которых работает Live  Operating  Environment имеют больше возможностей, но для тех, на которых эта среда не работает, этот аспект Live  Framework может быть полезен.

Mesh-Enabled  Web  Application

Каждое приложение, как основанное на Windows, так и на другой системе, может обратиться к данным Live  Services, - оно не обязательно должно быть частью меша. Если же разработчик создает приложение, которое будет всегда работать на системах из меша, то у него есть дополнительные возможности. Он может создать Mesh-Enabled Web  Application, которое может распространяться и управляться самим Live  Framework. Рис. 16 показывает основы того, как это работает:

Пользователь может найти Mesh-Enabled Web Application и затем установить его в свой меш

Рис. 16. Пользователь может найти Mesh-Enabled Web Application и затем установить его в свой меш.

Как видно из рисунка, Mesh-Enabled Web  Application можно сделать доступным через предоставляемый Microsoft каталог приложений в облаке. Пользователь может обращаться к этому каталогу для обнаружения доступных Mesh-Enabled Web  Application (шаг 1). После того, как пользователь выбрал приложение, он может установить его (шаг 2). Первоначально, при этом только копируется приложение в облачное хранилище пользователя в Live  Services. Потом приложение будет синхронизировано на все десктопы и устройства пользователя, как и другие обычные данные меша (шаг 3). Приложение теперь можно запускать из локального хранилища на любом устройстве меша пользователя (шаг 4). Вообще, это не совсем точно рассматривать Mesh-Enabled  Web  Application как устанавливаемое только на одну систему. Вместо этого, оно ставится на все системы - на весь меш.

Mesh-Enabled  Web  Application должно быть реализовано, используя кросс платформенную технологию типа Microsoft  Silverlight, DHTML или Adobe  Flash. Эти технологии поддерживаются на всех платформах, на которых может работать Live  Framework: Windows  Vista/XP, Mac  OS  X и Windows  Mobile  6. Соответственно, любое Mesh-Enabled Web Application может выполняться на любой системе в меше (хотя все эти возможности еще не реализованы в ноябрьском CTP).

Поскольку Live  Operating  Environment поддерживает синхронизированность всех данных меша, то Mesh-Enabled  Web  Application будет видеть те же данные, в не зависимости от того, где оно выполняется. Это дает новое интересное значение понятию «написал один раз - выполняй где угодно» (write  once, run anywhere): Mesh-Enabled  Web  Application может без изменений работать на любой системе в меше, при этом оно может рассчитывать, что ему всегда доступны одни и те же данные, в не зависимости от того, где оно выполняется.

Как и в других случаях организации доступа к данным Live  Framwork, Mesh-Enabled  Web  Application имеет доступ только к тем данным, для которых пользователь явно указал, что приложение может с ними работать. И как и другие Silverlight, DHTML и Flash приложения, Mesh-Enabled  Web  Application выполняется в своей безопасной песочнице. Кроме случаев, когда пользователь явно разрешил, такие приложения не могут напрямую обращаться к локальному диску или данным других Mesh-Enabled  Web  Application. Однако пользователь может сам разделять Mesh-Enabled  Web  Application с мешем другого пользователя. Для примера, пользователь может сказать Mesh-Enabled  Web  Application, чтобы то пригласило любого из его адресной книге использовать себя. Поскольку контактные данные доступны приложению напрямую - они являются частью меша - то необходимость приложению уметь это делать вполне очевидно.

Чтобы помочь разработчикам создавать Mesh-Enabled  Web  Application, Microsoft предоставляет шаблоны проектов для Visual  Studio  2008. Чтобы упростить обновления приложений, разработчик может загрузить новую версию в каталог приложений, предоставив Live  Framework, заботится об обновлении приложении в меше каждого пользователя, который установил это приложение. И чтобы помочь разработчикам зарабатывать на своих приложениях, Microsoft планирует включение своего собственного центра контекстной рекламы (adCenter) или сервисов других компаний, чтобы Mesh-Enabled  Web  Application могли показывать рекламу.

Live  Framework в значительной степени представляет собой полностью новый вид платформы для приложений. Многие аспекты среды, такие как доступ к данным Live  Services и фокус на десктопах и мобильных устройствах, делают очевидным то, что основная цель этой технологии - это поддержка клиентоориентированных, социальных приложений. В самом прямом смысле, Live  Framework расположен на пересечении новой технологии и новых способах человеческого взаимодействия.

Выводы

Истина очевидна - облачные вычисления уже здесь. Для разработчиков, использование возможностей облака влечет за собой использование каким-либо образом облачной платформы. С Azure  Services  Platform, Microsoft представляет набор платформ для разных потребностей:

●     Windows  Azure предоставляет основанную на Windows среду для вычисления и хранения данных в облаке.

●     .NET  Services предлагают облачную инфраструктуру для облачных и локальных приложений.

●     SQL  Services предоставляют базу данных в облаке через SQL  Data  Services, в дальнейшем планируется появление новых облачных сервисов для работы с данным.

●     Live  Services предоставляют Live  Framework, который позволяет приложениям использовать данные Live  Services, синхронизировать данные между системами, объединенными в меш и другое.

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

 

Источник: Microsoft

Похожие записи
Комментарии (0)
Сейчас обсуждают
Больше комментариев