Разработка информационных систем для Windows Store

Публикация приложений. Расширенное взаимодействие с облачными интерфейсами

Разбить на страницы
Показывать лекцию целиком

Приложение написано, теперь настало время его опубликовать. Но чтобы приступить к публикации, необходимо выполнить ряд действий, которые позволят подготовить пакет для успешного прохождения сертификации.

Первым делом необходимо определиться с возможностями приложения. Если приложение будет получать доступ к ресурсам пользователя, аппаратным возможностям платформы и внешним устройствам, то возникает необходимость указать все требуемые возможности в манифесте приложения. Для этого можно воспользоваться редактором манифеста и выбрать все необходимые возможности на вкладке Capabilities. Если Вы решили редактировать файл манифеста в обычном текстовом редакторе, можно воспользоваться одноименным разделом:

<Capabilities>
<Capability Name="internetClient" />
<DeviceCapability Name="webcam" />
</Capabilities> 

Рассмотрим, какие возможности можно указать в редакторе манифеста и для чего они используются:

  • Documents Library (documentsLibrary) - мы писали об этой возможности в прошлой главе. Библиотека Documents является одним из хранилищ, ссылку на которое можно получить через класс KnownFolders. При этом программный доступ к файлам можно получить только в том случае, если их типы (расширения) заявлены в виде расширения File Type Associations, которое устанавливается в том же манифесте. Это сделано специально, чтобы приложение не могло перебирать все типы файлов и каким-то образом вредить пользователю;
  • Music Library (musicLibrary) - эта возможность позволяет получить доступ к библиотеке Music;
  • Pictures Library (picturesLibrary) - эта возможность позволяет получить доступ к библиотеке Pictures;
  • Videos Library (videosLibrary) - эта возможность позволяет получить доступ к библиотеке Videos;
  • Microphone (microphone) - позволяет получить доступ к микрофону;
  • Webcam (webcam) - пример работы этой возможности представлен в главе, в которой описана работа с медиа. Позволяет получить доступ к камере;
  • Removable Storage (removableStorage) - позволяет получить программный доступ к файлам на внешних устройствах. При этом принцип работы такой же, как и для Documents библиотеки - доступны только файлы заявленных расширений;
  • Location (location) -- позволяет получить доступ к механизмам определения местоположения пользователя (через сеть оператора, WiFi или GPS датчик);
  • Proximity (proximity) - эта возможность позволяет взаимодействовать с другими устройствами, находящимися в непосредственной близости. При этом может использоваться Bluetooth, Wi Fi или прямое подключение через кабель;
  • Internet and public networks (internetClient и internetClientServer) - возможность позволяет использовать исходящее соединение (или входящее и исходящее) для взаимодействия с сервером;
  • Text messaging or SMS (sms) - предоставляет программный доступ к устройству, которое может отправлять SMS;
  • Domain credentials (enterpriseAuthentication) - эта возможность позволяет взаимодействовать с ресурсами в корпоративном окружении, используя данные аутентификации пользователя;
  • Home and work networks (privateNetworkClientServer) - позволяет получить доступ к домашней сети (ресурсам, которые открыты для доступа);
  • Certifi cates (sharedUserCertifi cates) - предоставляет доступ к сертификатам пользователя.
  • Указав все возможности приложения, можно перейти к декларациям расширений. В нескольких лекциях упоминалось о контактах, которые может устанавливать приложение с системой или с другим приложением. Для того, чтобы ОС Windows 8 четко могла определять, какие контакты поддерживает приложение, необходимо задекларировать все его расширения. Вот список возможных расширений:

  • Account Picture Provider - это расширение позволяет использовать приложение для установки изображения, ассоциированного с профилем прользователя. Это можно делать только в том случае, если приложение позволяет создавать изображения с помощью камеры и дополняет его какими-то эффектами;
  • AutoPlay Content - если Ваше приложение позволяет работать с контентом, размещенном на DVD носителях, картах памяти и т. д., то данное расширение можно использовать для отображения приложения в списке, отображаемом при вставке нового носителя;
  • AutoPlay Device - у пользователя появляется возможность активировать приложение при подключении нового внешнего устройства;
  • Background Tasks - это расширение позволяет указать имя библиотеки в приложении (точку входа), чтобы обеспечить запуск одной или нескольких задач в фоне;
  • Camera Settings - позволяет приложению заменить стандартное окно настроек камеры своим собственным;
  • Certificates - позволяет приложению установить сертификат, чтобы использовать его для внутренних целей;
  • Contact Picker - регистрирует Ваше приложение как один из источников контактов, предоставляя к ним доступ из других приложений;
  • File Open Picker - регистрирует Ваше приложение как источник файлов для других приложений;
  • File Save Picker - регистрирует возможность приложения принимать внешние файлы для последующей работы в стандартном режиме (после запуска);
  • File Type Associations - позволяет настроить типы файлов, с которыми приложение ассоциировано;
  • Game Explorer - регистрирует рейтинг приложения, который используется в службе родительского контроля Windows и позволяет родителям блокировать доступ к некоторым приложениям для детей;
  • Print Task Settings - позволяет приложение заменить стандартное окно по настройке печати своим собственным;
  • Protocol - регистрирует URL-протокол, используемый приложением:
  • Search - регистрирует приложение как предоставляющее механизм поиска, который интегрируется с панелью операционной системы;
  • Share Target - настроив эту декларацию, можно сделать приложение потенциальным потребителем данных, которые предоставляют другие приложения через пункт Share.
  • После того, как Вы выбрали возможности и декларации, а также настроили пиктограммы, экран-заставку, поддерживаемую ориентацию дисплея при запуске, можно переходить к подписи пакета сертификатом.

    Подписание пакета

    После создания пакета его необходимо подписать сертификатом, чтобы гарантировать его целостность и принадлежность организации или пользователю. Сертификат генерируется автоматически, если используете Visual Studio, но можете использовать и свой сертификат. Для этого можно воспользоваться вкладкой Packaging редактора манифеста: (рис 12.1)

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

    Локализация манифеста

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

    <Properties>
    <Property>
    <DisplayName>ms-resource:dName</DisplayName>
    <Description>ms-resource:dDescription</Description>
    <Logo>tile.png</Logo>
    </Property>
    </Properties> 

    Как видно из примера, используется специальное расширение ms-resource, которое указывает, что значение необходимо взять из активного файла ресурсов с заданным ключом.

    Тестирование пакета

    Тестирование приложения можно разбить на несколько этапов. Но одним из завершающих этапов является использование утилиты Windows App Certification Kit, которая устанавливается вместе с Windows 8 SDK. Данная утилита позволит проверить приложение в автоматическом режиме по многим параметрам (начиная от времени запуска и заканчивая списком возможностей) и это первое, что будет делаться, когда приложение отправится на сертификацию.

    Запустив утилиту, можно увидеть, что она достаточно функциональна. Но все таки, необходимо выбирать раздел Validate Metro style App:

    (рис 12.2)

    Утилита сама найдет установленные приложения в Вашей системе (Launch- контракт) и предложит протестировать одно из них:

    (рис 12.3)

    После этого утилита начинает многократно запускать Ваше приложение и собирать статистику. В конечном итоге Вы должны получить отчет о том, готово ли ваше приложение к публикации или нужно поработать над устранением проблем:

    (рис 12.4)

    Подключение к облаку

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

  • Azure - реализует модель Platform as a service, когда платформа предоставляется клиенту как сервис. Платформа Windows Azure предоставляет возможность разработки и выполнения приложений и хранения данных на серверах, расположенных в распределенных датацентрах. Платформа как сервис также включает и инфраструктуру как сервис (Infrastructure as Service, IaaS).
  • Технологии, основные на LiveID - сервис идентификации и аутентификации предоставляемый системой Windows Live. Используется для единого входа на всех сетевых сервисах Microsoft.
  • Строго говоря, облачным решением является только Azure, которое ориентированное в первую очередь на коммерческие структуры.

    Сервис идентификации LiveID формально облачным решением не является, однако совокупность приложений и веб-сайтов, к которым сервис предоставляет доступ, позволяет говорить об определенной степени "облачности" LiveID. Большинство продуктов использующих Windows Live ID являются продуктами Microsoft, такими как Hotmail, MSNBC, MSN, Xbox 360's Xbox Live, the .NET Messenger Service, Zune или MSN подписки, но есть также ряд других компаний, аффилированных с Microsoft, которые используют его, например Hoyts.

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

    Рассмотренные выше возможности реализуются внутри приложения, и механизм их работы также запускается из приложения. Такой механизм не позволяет применить уведомление во всех сценариях приложения. Например, если необходимая информация для отображения на плитке находится на сервере. В таких случаях удобно использовать push-уведомления, которые позволяют приложению, расположенному на сервере, отправить на клиент всплывающее уведомление, плитку или обновление эмблемы. Push-уведомления работают даже тогда, когда приложение неактивно.

    Для отправки push-уведомлений сервер должен пройти аутентификацию в Windows Push Notification Services (WNS) с удостоверяющими его данными. Эти данные предоставляются при регистрации приложения на сайте WindowsLive Application Management. Для регистрации необходимо иметь учетную запись LiveId. На странице регистрации необходимо указать отображаемое имя пакета и издателя, объявленных в манифесте нашего проекта. Далее необходимо согласиться с условиями использования. На следующем шаге будут предоставлены необходимые данные для аутентификации сервиса:

  • Package Security Identifier (SID) - у каждого приложения есть уникальный PackageSID, который необходимо использовать для аутентификации сервиса и WNS, когда служба отсылает уведомление приложению. Это значение необходимо записать в параметр clientid при запросе OAuth ключа доступа;
  • Secret Key - параметр client_seсret при запросе OAuth ключа доступа. Эти данные необходимо хранить в безопасном месте. Иначе злоумышленники, получив доступ к Package SID и Secret Key, смогут рассылать уведомления пользователям приложения. После прохождения аутентификации сервер получает маркер доступа, который позволяет ему отправлять уведомления приложению через WNS.
  • Алгоритм взаимодействия между приложением, службой и WNS происходит следующим образом (Рис. 12.5): (рис 12.5)

  • Приложение отправляет запрос Notification Client Platform на получение канала push-уведомления;
  • Notification Client Platform запрашивает канал WNS. Канал возвращается в виде URI;
  • Канал push-уведомления возвращается в приложение;
  • Приложение отправляет URI на службу. Данный механизм необходимо выполнять самостоятельно;
  • Когда служба готова отправить обновление, она уведомляет WNS, используя канал URI. Это происходит путем отправки запроса POST с необходимым контентом для уведомления. Взаимодействие происходит через https. Здесь сервису необходимо проходить аутентификацию;
  • Служба WNS получает сообщение и переправляет его на соответствующее устройство.
  • Статический метод CreatePushNotificationChannelForApplicationAsync класса Windows.Networking.PushNotifications.PushNotificationChannelManager создает канал подключения с WNS и возвращает объект класса PushNotificationChannel с данными для отправки уведомлений. При каждом запуске приложения обязательно обновлять данные уведомлений, так как они не являются постоянными.

    Этот объект предоставляет событие OnPushNotificationReceived. Подписавшись на него, приложение может соответствующим образом реагировать на различные виды уведомлений.

    void OnPushNotificationReceived(PushNotificationChannel sender, 
    PushNotificationReceivedEventArgs e)
       {
           string typeString = String.Empty;
           string notificationContent = String.Empty;
           switch (e.NotificationType)
           {
               case PushNotificationType.Badge:
                   typeString = "Badge";
                   notificationContent = e.BadgeNotification.
    Content.GetXml();
                   break;
               case PushNotificationType.Tile:
                   notificationContent = e.TileNotification.
    Content.GetXml();
                   typeString = "Tile";
                        break;
               case PushNotificationType.Toast:
                   notificationContent = e.ToastNotification.
    Content.GetXml();
                   typeString = "Toast";
                   break;
           }
           // отменяет визуальное уведомление в интерфейсе
           e.Cancel = true;
       } 

    Push-уведомления не следует использовать для отправки конфиденциальных данных, так как они не гарантируют безопасности соответствующего уровня. И гарантированной доставки обеспечить они не могут. В случае когда устройство пользователя с приложением работает в автономном режиме, WNS может хранить до 5 обновлений плитки, если приложение использует очередь уведомлений плитки, одно уведомление с эмблемой, но не всплывающие уведомления.

    Расширяемость и совместимость с существующими платформами

    Новые версии приложений Windows 8 обладают собственной расширяемостью, которую возможно использовать для создания своих библиотек компонентов. Сначала создаются собственные настраиваемые компоненты с помощью C++, C# или Visual Basic и компилируете их в виде переносимых библиотек. Затем можно использовать любой поддерживаемый язык для вызова этих компонентов из своих приложений.

    Среда выполнения Windows (WinRT) - это простой набор API, используемый для построения приложений для Windows Store. API-интерфейсы WinRT доступны во всех поддерживаемых языках, включая JavaScript, C++, C# и Visual Basic. Эти API-интерфейсы доступны другим платформам программирования Майкрософт, таким как .NET Framework или Windows C Runtime Library. Традиционные приложения Windows в дополнение к традиционным API-интерфейсам Win32 и .NET также могут получать доступ к части новых функциональных возможностей WinRT.

    Приложения для Windows Store с HTML5 и JavaScript используют преимущества усовершенствованных веб-технологий, основанных на современных стандартах. XAML позволяет использовать C#, Visual Basic и C++. Также поддерживаются технологии Silverlight или WPF. Новые элементы управления Windows 8 были полностью реализованы на XAML, благодаря появились механизмы взаимодействия с пользователями, отражающие новые индивидуальные особенности Windows.

    Графика DirectX - это один из основных компонентов Windows 8. DirectX позволяет полноэкранным приложениям для Windows Store, созданным с помощью HTML5 или XAML, отображать плавную графику без мерцаний. Независимо от выбранной модели разработки приложения для Windows Store, оно всегда будет использовать аппаратное ускорение, если аппаратное обеспечение поддерживает такую возможность. Новые графические модули Windows 8 лучше интегрированы, что облегчает совместное использование компонентов Direct2D, Direct3D и DirectCompute и позволяет использовать меньше ресурсов. Разработчикам приложений для Windows Store теперь доступны новые возможности для создания интерактивных приложений с эффектом погружения, в том числе DirectXMath, XAudio2 и XInput. В Visual Studio Express 2012 RC для Windows 8 интегрированы компоненты для создания качественной графики и отладки, среди них полностью интегрированная поддержка языка HLSL, просмотр активов Direct3D и поддержка PIX. Воспользуйтесь преимуществами современного графического оборудования для создания реалистичной графики, игр и видео. Добавьте в свои приложения для Windows Store новые возможности, например стереоскопический трехмерный просмотр с помощью DirectX 11.1.

    Разработка бизнес-приложений Windows 8 предоставляет новые возможности для бизнес-приложений, особенно для планшетных компьютеров. Бизнес-приложения для Windows 8 позволяют повысить производительность труда благодаря поддержке полноэкранного режима, более удобного для взаимодействия с контентом приложения. Переключение между приложениями осуществляется крайне просто, а поддержка "прикрепленного" представления на треть экрана позволяет сотрудникам работать в многозадачном режиме. Кроме того, корпоративные разработчики могут создавать бизнес-приложения для Windows 8, используя уже знакомые им языки программирования.

    Приложение для Windows Store может выполнять доступ к ресурсам пользователя или возможностям системы, только если оно специально объявляет о потребности в этих ресурсах. В результате обеспечивается четкое разграничение между приложениями и типами ресурсов, к которым каждое из них может получить доступ. Использование контрактов приложений в Windows 8 позволяет организациям упростить совместный доступ к данным из разных приложений и повысить его эффективность. Введение контрактов означает, что при доступе к данным, созданным или хранящимся в другом приложении, больше не нужно работать с различными стандартами или API, характерными для отдельных приложений. review.windows.com Развертывание в организациях

    Для организаций, использующих приложения для Windows Store, Магазин Windows предоставляет варианты покупки, позволяющие напрямую управлять развертыванием приложений. Компании могут ограничивать доступ своих сотрудников к каталогу Магазина Windows или разрешать доступ только к определенным приложениям. Кроме того, организации могут развертывать приложения для Windows Store непосредственно на компьютерах, не используя инфраструктуру магазина Windows. Такой процесс называется "загрузка неопубликованного приложения". При этом созданное в организации приложение остается внутри корпоративной сети, и операции по его распространению, управлению и обновлению могут выполняться централизованно. ИТ-администраторы сохраняют контроль над установкой приложений на компьютеры пользователей и могут управлять доступом к Магазину Windows с помощью групповой политики. Используя компонент AppLocker, можно разрешить или заблокировать любое приложение из Магазина Windows.

    Hyper-V

    Microsoft Hyper-V в Windows 8 Профессиональная представляет собой гибкую и надежную технологию виртуализации. Она позволяет корпоративным разработчикам тестировать несколько конфигураций приложений и операционных систем на одном компьютере вместо использования отдельного компьютера для каждой конфигурации. Используя Windows 8 Профессиональная, разработчики могут тестировать и контролировать несколько сред на одном компьютере, проверять совместимость приложений и тестировать процессы развертывания без риска внесения изменений на компьютере, который активно используется.

    Введение в Live Connect

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

    В интерфейсах Live Connect API используются протоколы отраслевых стандартов, например OAuth 2.0, JavaScript Object Notation (JSON) и Extensible Messaging and Presence Protocol (XMPP). Как правило, для вызова интерфейсов API вы будете использовать запросы Representational State Transfer (REST), возвращающие информацию в формате JSON. Такая архитектура позволяет нам поддерживать множество платформ, включая предназначенные для веб-приложений, настольных и мобильных приложений, подобных приложениям для операционных систем iOS и Android. Помимо этого, имеются пакеты Microsoft SDK, позволяющие разрабатывать приложения для Windows Phone и Windows 8.

    Live Connect предоставляет информацию из следующих служб:

  • SkyDrive для работы с документами и мультимедиа. Ваши приложения могут вызывать интерфейсы Live Connect API для создания, чтения, обновления и удаления папок, файлов, альбомов, фотографий и видеороликов пользователя SkyDrive, а также для чтения, создания и удаления любых связанных с ними тегов и комментариев.
  • Hotmail для работы с контактами и календарями. С помощью интерфейсов Live Connect API ваши приложения могут создавать и читать контакты пользователя Hotmail, а также создавать, читать, обновлять и удалять календари пользователя и связанные с ними события.
  • Messenger для мгновенного обмена сообщениями. Ваши приложения могут обмениваться мгновенными сообщениями с контактами пользователя Messenger, сообщать о присутствии пользователя, отображать сообщение о его текущем статусе и многое другое.
  • Live для проверки подлинности пользователей и доступа к сведениям их профиля.
  • В данном руководстве мы начнем с краткого обзора открытых стандартов, которые мы используем в Live Connect. Затем опишем, как начать интеграцию ваших собственных приложений с Live Connect, и продемонстрируем код с примерами некоторых возможностей интерфейсов Live Connect API. В конце руководства мы укажем ссылки на полную документацию и примеры кода.

    Открытые стандарты

    Использование открытых стандартов позволит вам тратить меньше времени на изучение новых понятий и больше - на написание кода и другие продуктивные действия. Вот почему интерфейсы Live Connect построены на множестве открытых стандартов, которые вы, возможно, уже применяете в создаваемых вами приложениях. А если вы впервые добавляете в приложение социальный компонент, вероятно, что код, который вы пишете с использованием Live Connect, можно также использовать с интерфейсами API других служб.

    Перед началом написания кода вам следует ознакомиться с несколькими открытыми стандартами, важными для работы с Live Connect: OAuth 2.0, Representational State Transfer (REST), JSON и XMPP.

  • OAuth 2.0 - это новейшая версия протокола OAuth, открытого стандарта проверки подлинности учетных данных пользователей. В Live Connect, наряду с другими интерфейсами API социальных сетей, в качестве стандарта проверки подлинности принят OAuth 2.0. В своей основе OAuth 2.0 позволяет проверять подлинность пользователей с помощью веб-служб авторизации Live Connect, не разглашая приложениям конфиденциальные входные учетные данные. Несмотря на то, что спецификация OAuth 2.0 содержит сведения о различных сценариях проверки подлинности (так называемых потоках), Live Connect фокусируется на трех из них:
  • неявный поток предоставления для проверки подлинности в режиме клиент-сервер;
  • поток кода авторизации для проверки подлинности в режиме сервер-сервер;
  • поток управления входом - специфическая для Live Connect реализация потока неявного предоставления прав, позволяющая использовать наши интерфейсы API для запуска процесса проверки подлинности из ваших приложений.
  • REST - это тип архитектуры, который стал популярным в веб-службах. Использование нами REST облегчает запрос пользовательской информации через интерфейсы Live Connect API. Эта реализация REST поддерживает стандартные методы HTTP, такие как GET, PUT, POST и DELETE. Также мы включили несколько сокращений для дальнейшего упрощения реализации определенных запросов. Например, для получения сведений о пользователе, выполнившем вход, вы можете использовать в запросе сокращение me.
  • JSON - распространенное средство представления информации в веб-службах. Live Connect обменивается пользовательскими данными в формате JSON. Например, когда ваше предложение запрашивает дату рождения пользователя, эти сведения возвращаются в объекте response, который содержит структуры birth_day, birth_month и birth_year.
  • XMPP - это открытый стандарт для обмена данными в режиме реального времени. Он может использоваться вашими приложениями для взаимодействия с пользователем Messenger и его контактами.
  • Для того чтобы служба Live Connect распознала приложение, необходимо задать для него несколько настроек в зависимости от типа приложения. Для приложений для Windows Store эти настройки содержатся в информационной панели магазина Windows. Для всех остальных типов приложения эти настройки содержатся на сайте управления приложениями Live Connect. На любой из сайтов следует войти с учетной записью Майкрософт и выполнить приведенные на экране указания. Для получения дополнительных сведений см. раздел Настройка вашего приложения.

    Получение разрешения пользователя

    После получения идентификатора клиента необходимо решить, какая пользовательская информация требуется информационной системе. Live Connect организует пользовательскую информацию по категориям - областями. Например, если приложение должно работать со списком контактов пользователя Hotmail, оно будет запрашивать область wl.basic с помощью Live Connect. Live Connect предлагает пользователю выполнить вход в Hotmail (или другую службу, совместимую с Live Connect, в зависимости от области, запрашиваемой вашим приложением). В процессе входа пользователя также отображается страница с запросом разрешения на доступ приложения к запрошенным частям его информации. Когда пользователь предоставит разрешение или согласие, Live Connect выдаст приложению уникальную строку символов - маркер доступа. Маркер доступа используется приложением для получения запрошенной пользовательской информации из службы, совместимой с Live Connect (в данном случае Hotmail). Маркер доступа уникальным образом представляет сочетание идентификатора клиента, конкретного пользователя, выполнившего вход, а также набора областей, на которые требуются пользователю. Маркер доступа действителен только в течение определенного периода времени.

    Рекомендуется придерживаться минимального количества областей в запросе, поскольку это улучшит процесс взаимодействия с пользователем. Возможно создать приложение, которое просто запрашивает доступ к любой возможной информации пользователя, которая когда-либо может ему понадобиться. Однако вероятно, что пользователи не решатся предоставить приложению доступ, когда увидят, к какому большому числу областей он требуется. Лучшим решением будет запросить согласие только на несколько ключевых областей - тех, которые непосредственно соответствуют контексту вашего приложения. Например, если создается приложение для обмена фотографиями, имеет смысл запросить доступ к области wl.photos, wl.contacts_photos или wl.skydrive. Впоследствии, если пользователь захочет использовать ту часть приложения, которой требуется другая область - доступ к календарю Hotmail, например - запросить в соответствующий момент согласие пользователя на область wl.calendars или wl.calendars_update. Если у пользователя запрашивается дополнительное согласие, то приложение должно также запросить новый маркер доступа, который затем должен использоваться приложением вместо старого.

    Вход пользователей

    Персонализированная среда взаимодействия с пользователями повышает качетсво информационной системы: повышается лояльность пользователей и степень удовлетворения от работы с приложением.

    Live Connect включает несколько способов добавления в приложение функции входа на языках JavaScript, C#, Objective-C, Java и REST. Вкратце опишем их.

    Чтобы запустить процесс входа, при написании приложения для Windows Store или клиентской веб-страницы на JavaScript можно отобразить элемент управления Live Connect для входа. Также для запуска процесса входа можно использовать существующий элемент HTML, например кнопку.

    Добавить элемент управления для входа можно с помощью метода WL.ui (JavaScript). Пример исходного кода:

    WL.Event.subscribe("auth.login", onLogin);
    WL.init({
        client_id: APP_CLIENT_ID,
        redirect_uri: REDIRECT_URL,
        scope: "wl.signin", 
        response_type: "token"
    });
    
    WL.ui({
        name: "signin",
        element: "signin"
    });
    
    
    function onLogin() {
        document.getElementById("infoLabel").innerText = "Signed in.";
    } 

    Чтобы подключить элемент управления для входа к элементу HTML на веб-странице, можно просто добавить тег <div> с атрибутом id, имеющим в данном случае значение "signin".

    Чтобы запустить процесс входа из элемента HTML, например кнопки, упомянутой ранее, следует использовать метод WL.login. Ниже приведен соответствующий код.

    function moreScopes_onClick() {
        WL.login({
            scope: ["wl.signin", "wl.basic"]
        }).then(
            function (session) {
                document.getElementById("infoLabel").innerText = "Signed in.";
            },
            function (sessionError) {
                document.getElementById("infoLabel").innerText = 
                    "Error signing in: " + sessionError.error_description;
            }
        );
    } 

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

    Рассмотрим исходный код. Метод WL.Event.subscribe указывает приложению использовать метод обратного вызова onLogin после того, как пользователь завершит процесс входа и даст свое согласие; метод WL.login использует вместо этого встроенные функции. (Обратите внимание, что события auth.login инициируются всякий раз при изменении статуса входа пользователя с "unknown" (неизвестный) или "notConnected" (не подключен) на "connected" (подключен).) Чтобы определить, успешно ли пользователь выполнил вход и предоставил ли согласие на запрошенные области, метод WL.login дает коду команду использовать анонимные методы после .then. Области представляются анонимным методом после .then с параметром session. Область wl.signin позволяет пользователю автоматически входить в службы Live из приложения, если он уже вошел в службы Live. Дополнительная область wl.basic в методе WL.init предоставляет доступ к базовой информации, такой как отображаемое имя пользователя.

    После входа пользователя можно использовать область wl.basic, наряду с методом WL.api, чтобы приветствовать пользователя по имени, как показано в следующем примере.

    function greetUser_onClick() {
        WL.login({
            scope: "wl.basic"
        }).then(
            function (response)
            {
                WL.api({
                    path: "me",
                    method: "GET"
                }).then(
                    function (response){
                        document.getElementById("infoArea").innerText =
                            "Hello, " + response.first_name + " " +
                            response.last_name + "!";
                    },
                    function (responseFailed){
                        document.getElementById("infoArea").innerText =
                            "Error calling API: " + responseFailed.error.message;
                    }
                );
            },
            function (responseFailed){
                document.getElementById("infoArea").innerText =
                    "Error signing in: " + responseFailed.error_description;
            }
        );
    } 

    В данном примере метод WL.api использует наше сокращение me для вызова интерфейсов Live Connect API с целью получения информации о вошедшем пользователе. Если метод HTTP GET успешно вызовет интерфейсы API, отобразятся имя и фамилия пользователя, взятые из содержимого объекта response.

    SkyDrive: файлы и фотографии

    Пользователи хранят на SkyDrive множество документов и мультимедиа. Предоставление пользователям доступа к их документам и мультимедиа из приложения поможет увеличить степень использования приложения и побудить пользователей поделиться им со своими контактами. С помощью интерфейсов Live Connect API в SkyDrive можно выполнять следующие действия:

  • Создавать, читать, обновлять и удалять папки и альбомы. (Альбом - это специальный тип папки SkyDrive, предназначенный для повышения удобства работы с фото- и видеофайлами.)
  • Загружать файлы на сервер и скачивать их оттуда.
  • Читать и обновлять свойства файла.
  • Получить внедренную ссылку, ссылку только для чтения или ссылку для чтения и записи в папку или файл.
  • Перемещать и копировать папки и файлы.
  • Читать теги, добавляемые пользователями к фотографиям и видеозаписям.
  • Читать комментарии, добавляемые пользователями к папкам, файлам, альбомам, фотографиям, видеозаписям и звуковым файлам.
  • Краткие итоги

    В лекции представлены основные положения об основных способах взаимодействия информационных систем с облачными решениями. Показаны способы взаимодействия с такими сервисами как SkyDrive, HotMail. Рассмотрена технология идентификации LiveID способы использования данной технологии в информационных системах.

    Вопросы

  • Облачные технологии фирмы Microsoft?
  • Какие настройки используются для идентификации сервисом LiveID пользовательских приложений?
  • Какие методы используются при разработке приложений для создания персонализированного входа в LiveID?
  • Какими способами повышается степень использования приложения?
  • Страницы:

    Приложение написано, теперь настало время его опубликовать. Но чтобы приступить к публикации, необходимо выполнить ряд действий, которые позволят подготовить пакет для успешного прохождения сертификации.

    Первым делом необходимо определиться с возможностями приложения. Если приложение будет получать доступ к ресурсам пользователя, аппаратным возможностям платформы и внешним устройствам, то возникает необходимость указать все требуемые возможности в манифесте приложения. Для этого можно воспользоваться редактором манифеста и выбрать все необходимые возможности на вкладке Capabilities. Если Вы решили редактировать файл манифеста в обычном текстовом редакторе, можно воспользоваться одноименным разделом:

    <Capabilities>
    <Capability Name="internetClient" />
    <DeviceCapability Name="webcam" />
    </Capabilities> 

    Рассмотрим, какие возможности можно указать в редакторе манифеста и для чего они используются:

  • Documents Library (documentsLibrary) - мы писали об этой возможности в прошлой главе. Библиотека Documents является одним из хранилищ, ссылку на которое можно получить через класс KnownFolders. При этом программный доступ к файлам можно получить только в том случае, если их типы (расширения) заявлены в виде расширения File Type Associations, которое устанавливается в том же манифесте. Это сделано специально, чтобы приложение не могло перебирать все типы файлов и каким-то образом вредить пользователю;
  • Music Library (musicLibrary) - эта возможность позволяет получить доступ к библиотеке Music;
  • Pictures Library (picturesLibrary) - эта возможность позволяет получить доступ к библиотеке Pictures;
  • Videos Library (videosLibrary) - эта возможность позволяет получить доступ к библиотеке Videos;
  • Microphone (microphone) - позволяет получить доступ к микрофону;
  • Webcam (webcam) - пример работы этой возможности представлен в главе, в которой описана работа с медиа. Позволяет получить доступ к камере;
  • Removable Storage (removableStorage) - позволяет получить программный доступ к файлам на внешних устройствах. При этом принцип работы такой же, как и для Documents библиотеки - доступны только файлы заявленных расширений;
  • Location (location) -- позволяет получить доступ к механизмам определения местоположения пользователя (через сеть оператора, WiFi или GPS датчик);
  • Proximity (proximity) - эта возможность позволяет взаимодействовать с другими устройствами, находящимися в непосредственной близости. При этом может использоваться Bluetooth, Wi Fi или прямое подключение через кабель;
  • Internet and public networks (internetClient и internetClientServer) - возможность позволяет использовать исходящее соединение (или входящее и исходящее) для взаимодействия с сервером;
  • Text messaging or SMS (sms) - предоставляет программный доступ к устройству, которое может отправлять SMS;
  • Domain credentials (enterpriseAuthentication) - эта возможность позволяет взаимодействовать с ресурсами в корпоративном окружении, используя данные аутентификации пользователя;
  • Home and work networks (privateNetworkClientServer) - позволяет получить доступ к домашней сети (ресурсам, которые открыты для доступа);
  • Certifi cates (sharedUserCertifi cates) - предоставляет доступ к сертификатам пользователя.
  • Указав все возможности приложения, можно перейти к декларациям расширений. В нескольких лекциях упоминалось о контактах, которые может устанавливать приложение с системой или с другим приложением. Для того, чтобы ОС Windows 8 четко могла определять, какие контакты поддерживает приложение, необходимо задекларировать все его расширения. Вот список возможных расширений:

  • Account Picture Provider - это расширение позволяет использовать приложение для установки изображения, ассоциированного с профилем прользователя. Это можно делать только в том случае, если приложение позволяет создавать изображения с помощью камеры и дополняет его какими-то эффектами;
  • AutoPlay Content - если Ваше приложение позволяет работать с контентом, размещенном на DVD носителях, картах памяти и т. д., то данное расширение можно использовать для отображения приложения в списке, отображаемом при вставке нового носителя;
  • AutoPlay Device - у пользователя появляется возможность активировать приложение при подключении нового внешнего устройства;
  • Background Tasks - это расширение позволяет указать имя библиотеки в приложении (точку входа), чтобы обеспечить запуск одной или нескольких задач в фоне;
  • Camera Settings - позволяет приложению заменить стандартное окно настроек камеры своим собственным;
  • Certificates - позволяет приложению установить сертификат, чтобы использовать его для внутренних целей;
  • Contact Picker - регистрирует Ваше приложение как один из источников контактов, предоставляя к ним доступ из других приложений;
  • File Open Picker - регистрирует Ваше приложение как источник файлов для других приложений;
  • File Save Picker - регистрирует возможность приложения принимать внешние файлы для последующей работы в стандартном режиме (после запуска);
  • File Type Associations - позволяет настроить типы файлов, с которыми приложение ассоциировано;
  • Game Explorer - регистрирует рейтинг приложения, который используется в службе родительского контроля Windows и позволяет родителям блокировать доступ к некоторым приложениям для детей;
  • Print Task Settings - позволяет приложение заменить стандартное окно по настройке печати своим собственным;
  • Protocol - регистрирует URL-протокол, используемый приложением:
  • Search - регистрирует приложение как предоставляющее механизм поиска, который интегрируется с панелью операционной системы;
  • Share Target - настроив эту декларацию, можно сделать приложение потенциальным потребителем данных, которые предоставляют другие приложения через пункт Share.
  • После того, как Вы выбрали возможности и декларации, а также настроили пиктограммы, экран-заставку, поддерживаемую ориентацию дисплея при запуске, можно переходить к подписи пакета сертификатом.

    Подписание пакета

    После создания пакета его необходимо подписать сертификатом, чтобы гарантировать его целостность и принадлежность организации или пользователю. Сертификат генерируется автоматически, если используете Visual Studio, но можете использовать и свой сертификат. Для этого можно воспользоваться вкладкой Packaging редактора манифеста: (рис 12.1)

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

    Локализация манифеста

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

    <Properties>
    <Property>
    <DisplayName>ms-resource:dName</DisplayName>
    <Description>ms-resource:dDescription</Description>
    <Logo>tile.png</Logo>
    </Property>
    </Properties> 

    Как видно из примера, используется специальное расширение ms-resource, которое указывает, что значение необходимо взять из активного файла ресурсов с заданным ключом.

    Тестирование пакета

    Тестирование приложения можно разбить на несколько этапов. Но одним из завершающих этапов является использование утилиты Windows App Certification Kit, которая устанавливается вместе с Windows 8 SDK. Данная утилита позволит проверить приложение в автоматическом режиме по многим параметрам (начиная от времени запуска и заканчивая списком возможностей) и это первое, что будет делаться, когда приложение отправится на сертификацию.

    Запустив утилиту, можно увидеть, что она достаточно функциональна. Но все таки, необходимо выбирать раздел Validate Metro style App:

    (рис 12.2)

    Утилита сама найдет установленные приложения в Вашей системе (Launch- контракт) и предложит протестировать одно из них:

    (рис 12.3)

    После этого утилита начинает многократно запускать Ваше приложение и собирать статистику. В конечном итоге Вы должны получить отчет о том, готово ли ваше приложение к публикации или нужно поработать над устранением проблем:

    (рис 12.4)

    Подключение к облаку

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

  • Azure - реализует модель Platform as a service, когда платформа предоставляется клиенту как сервис. Платформа Windows Azure предоставляет возможность разработки и выполнения приложений и хранения данных на серверах, расположенных в распределенных датацентрах. Платформа как сервис также включает и инфраструктуру как сервис (Infrastructure as Service, IaaS).
  • Технологии, основные на LiveID - сервис идентификации и аутентификации предоставляемый системой Windows Live. Используется для единого входа на всех сетевых сервисах Microsoft.
  • Строго говоря, облачным решением является только Azure, которое ориентированное в первую очередь на коммерческие структуры.

    Сервис идентификации LiveID формально облачным решением не является, однако совокупность приложений и веб-сайтов, к которым сервис предоставляет доступ, позволяет говорить об определенной степени "облачности" LiveID. Большинство продуктов использующих Windows Live ID являются продуктами Microsoft, такими как Hotmail, MSNBC, MSN, Xbox 360's Xbox Live, the .NET Messenger Service, Zune или MSN подписки, но есть также ряд других компаний, аффилированных с Microsoft, которые используют его, например Hoyts.

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

    Рассмотренные выше возможности реализуются внутри приложения, и механизм их работы также запускается из приложения. Такой механизм не позволяет применить уведомление во всех сценариях приложения. Например, если необходимая информация для отображения на плитке находится на сервере. В таких случаях удобно использовать push-уведомления, которые позволяют приложению, расположенному на сервере, отправить на клиент всплывающее уведомление, плитку или обновление эмблемы. Push-уведомления работают даже тогда, когда приложение неактивно.

    Для отправки push-уведомлений сервер должен пройти аутентификацию в Windows Push Notification Services (WNS) с удостоверяющими его данными. Эти данные предоставляются при регистрации приложения на сайте WindowsLive Application Management. Для регистрации необходимо иметь учетную запись LiveId. На странице регистрации необходимо указать отображаемое имя пакета и издателя, объявленных в манифесте нашего проекта. Далее необходимо согласиться с условиями использования. На следующем шаге будут предоставлены необходимые данные для аутентификации сервиса:

  • Package Security Identifier (SID) - у каждого приложения есть уникальный PackageSID, который необходимо использовать для аутентификации сервиса и WNS, когда служба отсылает уведомление приложению. Это значение необходимо записать в параметр clientid при запросе OAuth ключа доступа;
  • Secret Key - параметр client_seсret при запросе OAuth ключа доступа. Эти данные необходимо хранить в безопасном месте. Иначе злоумышленники, получив доступ к Package SID и Secret Key, смогут рассылать уведомления пользователям приложения. После прохождения аутентификации сервер получает маркер доступа, который позволяет ему отправлять уведомления приложению через WNS.
  • Алгоритм взаимодействия между приложением, службой и WNS происходит следующим образом (Рис. 12.5): (рис 12.5)

  • Приложение отправляет запрос Notification Client Platform на получение канала push-уведомления;
  • Notification Client Platform запрашивает канал WNS. Канал возвращается в виде URI;
  • Канал push-уведомления возвращается в приложение;
  • Приложение отправляет URI на службу. Данный механизм необходимо выполнять самостоятельно;
  • Когда служба готова отправить обновление, она уведомляет WNS, используя канал URI. Это происходит путем отправки запроса POST с необходимым контентом для уведомления. Взаимодействие происходит через https. Здесь сервису необходимо проходить аутентификацию;
  • Служба WNS получает сообщение и переправляет его на соответствующее устройство.
  • Статический метод CreatePushNotificationChannelForApplicationAsync класса Windows.Networking.PushNotifications.PushNotificationChannelManager создает канал подключения с WNS и возвращает объект класса PushNotificationChannel с данными для отправки уведомлений. При каждом запуске приложения обязательно обновлять данные уведомлений, так как они не являются постоянными.

    Этот объект предоставляет событие OnPushNotificationReceived. Подписавшись на него, приложение может соответствующим образом реагировать на различные виды уведомлений.

    void OnPushNotificationReceived(PushNotificationChannel sender, 
    PushNotificationReceivedEventArgs e)
       {
           string typeString = String.Empty;
           string notificationContent = String.Empty;
           switch (e.NotificationType)
           {
               case PushNotificationType.Badge:
                   typeString = "Badge";
                   notificationContent = e.BadgeNotification.
    Content.GetXml();
                   break;
               case PushNotificationType.Tile:
                   notificationContent = e.TileNotification.
    Content.GetXml();
                   typeString = "Tile";
                        break;
               case PushNotificationType.Toast:
                   notificationContent = e.ToastNotification.
    Content.GetXml();
                   typeString = "Toast";
                   break;
           }
           // отменяет визуальное уведомление в интерфейсе
           e.Cancel = true;
       } 

    Push-уведомления не следует использовать для отправки конфиденциальных данных, так как они не гарантируют безопасности соответствующего уровня. И гарантированной доставки обеспечить они не могут. В случае когда устройство пользователя с приложением работает в автономном режиме, WNS может хранить до 5 обновлений плитки, если приложение использует очередь уведомлений плитки, одно уведомление с эмблемой, но не всплывающие уведомления.

    Расширяемость и совместимость с существующими платформами

    Новые версии приложений Windows 8 обладают собственной расширяемостью, которую возможно использовать для создания своих библиотек компонентов. Сначала создаются собственные настраиваемые компоненты с помощью C++, C# или Visual Basic и компилируете их в виде переносимых библиотек. Затем можно использовать любой поддерживаемый язык для вызова этих компонентов из своих приложений.

    Среда выполнения Windows (WinRT) - это простой набор API, используемый для построения приложений для Windows Store. API-интерфейсы WinRT доступны во всех поддерживаемых языках, включая JavaScript, C++, C# и Visual Basic. Эти API-интерфейсы доступны другим платформам программирования Майкрософт, таким как .NET Framework или Windows C Runtime Library. Традиционные приложения Windows в дополнение к традиционным API-интерфейсам Win32 и .NET также могут получать доступ к части новых функциональных возможностей WinRT.

    Приложения для Windows Store с HTML5 и JavaScript используют преимущества усовершенствованных веб-технологий, основанных на современных стандартах. XAML позволяет использовать C#, Visual Basic и C++. Также поддерживаются технологии Silverlight или WPF. Новые элементы управления Windows 8 были полностью реализованы на XAML, благодаря появились механизмы взаимодействия с пользователями, отражающие новые индивидуальные особенности Windows.

    Графика DirectX - это один из основных компонентов Windows 8. DirectX позволяет полноэкранным приложениям для Windows Store, созданным с помощью HTML5 или XAML, отображать плавную графику без мерцаний. Независимо от выбранной модели разработки приложения для Windows Store, оно всегда будет использовать аппаратное ускорение, если аппаратное обеспечение поддерживает такую возможность. Новые графические модули Windows 8 лучше интегрированы, что облегчает совместное использование компонентов Direct2D, Direct3D и DirectCompute и позволяет использовать меньше ресурсов. Разработчикам приложений для Windows Store теперь доступны новые возможности для создания интерактивных приложений с эффектом погружения, в том числе DirectXMath, XAudio2 и XInput. В Visual Studio Express 2012 RC для Windows 8 интегрированы компоненты для создания качественной графики и отладки, среди них полностью интегрированная поддержка языка HLSL, просмотр активов Direct3D и поддержка PIX. Воспользуйтесь преимуществами современного графического оборудования для создания реалистичной графики, игр и видео. Добавьте в свои приложения для Windows Store новые возможности, например стереоскопический трехмерный просмотр с помощью DirectX 11.1.

    Разработка бизнес-приложений Windows 8 предоставляет новые возможности для бизнес-приложений, особенно для планшетных компьютеров. Бизнес-приложения для Windows 8 позволяют повысить производительность труда благодаря поддержке полноэкранного режима, более удобного для взаимодействия с контентом приложения. Переключение между приложениями осуществляется крайне просто, а поддержка "прикрепленного" представления на треть экрана позволяет сотрудникам работать в многозадачном режиме. Кроме того, корпоративные разработчики могут создавать бизнес-приложения для Windows 8, используя уже знакомые им языки программирования.

    Приложение для Windows Store может выполнять доступ к ресурсам пользователя или возможностям системы, только если оно специально объявляет о потребности в этих ресурсах. В результате обеспечивается четкое разграничение между приложениями и типами ресурсов, к которым каждое из них может получить доступ. Использование контрактов приложений в Windows 8 позволяет организациям упростить совместный доступ к данным из разных приложений и повысить его эффективность. Введение контрактов означает, что при доступе к данным, созданным или хранящимся в другом приложении, больше не нужно работать с различными стандартами или API, характерными для отдельных приложений. review.windows.com Развертывание в организациях

    Для организаций, использующих приложения для Windows Store, Магазин Windows предоставляет варианты покупки, позволяющие напрямую управлять развертыванием приложений. Компании могут ограничивать доступ своих сотрудников к каталогу Магазина Windows или разрешать доступ только к определенным приложениям. Кроме того, организации могут развертывать приложения для Windows Store непосредственно на компьютерах, не используя инфраструктуру магазина Windows. Такой процесс называется "загрузка неопубликованного приложения". При этом созданное в организации приложение остается внутри корпоративной сети, и операции по его распространению, управлению и обновлению могут выполняться централизованно. ИТ-администраторы сохраняют контроль над установкой приложений на компьютеры пользователей и могут управлять доступом к Магазину Windows с помощью групповой политики. Используя компонент AppLocker, можно разрешить или заблокировать любое приложение из Магазина Windows.

    Hyper-V

    Microsoft Hyper-V в Windows 8 Профессиональная представляет собой гибкую и надежную технологию виртуализации. Она позволяет корпоративным разработчикам тестировать несколько конфигураций приложений и операционных систем на одном компьютере вместо использования отдельного компьютера для каждой конфигурации. Используя Windows 8 Профессиональная, разработчики могут тестировать и контролировать несколько сред на одном компьютере, проверять совместимость приложений и тестировать процессы развертывания без риска внесения изменений на компьютере, который активно используется.

    Введение в Live Connect

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

    В интерфейсах Live Connect API используются протоколы отраслевых стандартов, например OAuth 2.0, JavaScript Object Notation (JSON) и Extensible Messaging and Presence Protocol (XMPP). Как правило, для вызова интерфейсов API вы будете использовать запросы Representational State Transfer (REST), возвращающие информацию в формате JSON. Такая архитектура позволяет нам поддерживать множество платформ, включая предназначенные для веб-приложений, настольных и мобильных приложений, подобных приложениям для операционных систем iOS и Android. Помимо этого, имеются пакеты Microsoft SDK, позволяющие разрабатывать приложения для Windows Phone и Windows 8.

    Live Connect предоставляет информацию из следующих служб:

  • SkyDrive для работы с документами и мультимедиа. Ваши приложения могут вызывать интерфейсы Live Connect API для создания, чтения, обновления и удаления папок, файлов, альбомов, фотографий и видеороликов пользователя SkyDrive, а также для чтения, создания и удаления любых связанных с ними тегов и комментариев.
  • Hotmail для работы с контактами и календарями. С помощью интерфейсов Live Connect API ваши приложения могут создавать и читать контакты пользователя Hotmail, а также создавать, читать, обновлять и удалять календари пользователя и связанные с ними события.
  • Messenger для мгновенного обмена сообщениями. Ваши приложения могут обмениваться мгновенными сообщениями с контактами пользователя Messenger, сообщать о присутствии пользователя, отображать сообщение о его текущем статусе и многое другое.
  • Live для проверки подлинности пользователей и доступа к сведениям их профиля.
  • В данном руководстве мы начнем с краткого обзора открытых стандартов, которые мы используем в Live Connect. Затем опишем, как начать интеграцию ваших собственных приложений с Live Connect, и продемонстрируем код с примерами некоторых возможностей интерфейсов Live Connect API. В конце руководства мы укажем ссылки на полную документацию и примеры кода.

    Открытые стандарты

    Использование открытых стандартов позволит вам тратить меньше времени на изучение новых понятий и больше - на написание кода и другие продуктивные действия. Вот почему интерфейсы Live Connect построены на множестве открытых стандартов, которые вы, возможно, уже применяете в создаваемых вами приложениях. А если вы впервые добавляете в приложение социальный компонент, вероятно, что код, который вы пишете с использованием Live Connect, можно также использовать с интерфейсами API других служб.

    Перед началом написания кода вам следует ознакомиться с несколькими открытыми стандартами, важными для работы с Live Connect: OAuth 2.0, Representational State Transfer (REST), JSON и XMPP.

  • OAuth 2.0 - это новейшая версия протокола OAuth, открытого стандарта проверки подлинности учетных данных пользователей. В Live Connect, наряду с другими интерфейсами API социальных сетей, в качестве стандарта проверки подлинности принят OAuth 2.0. В своей основе OAuth 2.0 позволяет проверять подлинность пользователей с помощью веб-служб авторизации Live Connect, не разглашая приложениям конфиденциальные входные учетные данные. Несмотря на то, что спецификация OAuth 2.0 содержит сведения о различных сценариях проверки подлинности (так называемых потоках), Live Connect фокусируется на трех из них:
  • неявный поток предоставления для проверки подлинности в режиме клиент-сервер;
  • поток кода авторизации для проверки подлинности в режиме сервер-сервер;
  • поток управления входом - специфическая для Live Connect реализация потока неявного предоставления прав, позволяющая использовать наши интерфейсы API для запуска процесса проверки подлинности из ваших приложений.
  • REST - это тип архитектуры, который стал популярным в веб-службах. Использование нами REST облегчает запрос пользовательской информации через интерфейсы Live Connect API. Эта реализация REST поддерживает стандартные методы HTTP, такие как GET, PUT, POST и DELETE. Также мы включили несколько сокращений для дальнейшего упрощения реализации определенных запросов. Например, для получения сведений о пользователе, выполнившем вход, вы можете использовать в запросе сокращение me.
  • JSON - распространенное средство представления информации в веб-службах. Live Connect обменивается пользовательскими данными в формате JSON. Например, когда ваше предложение запрашивает дату рождения пользователя, эти сведения возвращаются в объекте response, который содержит структуры birth_day, birth_month и birth_year.
  • XMPP - это открытый стандарт для обмена данными в режиме реального времени. Он может использоваться вашими приложениями для взаимодействия с пользователем Messenger и его контактами.
  • Для того чтобы служба Live Connect распознала приложение, необходимо задать для него несколько настроек в зависимости от типа приложения. Для приложений для Windows Store эти настройки содержатся в информационной панели магазина Windows. Для всех остальных типов приложения эти настройки содержатся на сайте управления приложениями Live Connect. На любой из сайтов следует войти с учетной записью Майкрософт и выполнить приведенные на экране указания. Для получения дополнительных сведений см. раздел Настройка вашего приложения.

    Получение разрешения пользователя

    После получения идентификатора клиента необходимо решить, какая пользовательская информация требуется информационной системе. Live Connect организует пользовательскую информацию по категориям - областями. Например, если приложение должно работать со списком контактов пользователя Hotmail, оно будет запрашивать область wl.basic с помощью Live Connect. Live Connect предлагает пользователю выполнить вход в Hotmail (или другую службу, совместимую с Live Connect, в зависимости от области, запрашиваемой вашим приложением). В процессе входа пользователя также отображается страница с запросом разрешения на доступ приложения к запрошенным частям его информации. Когда пользователь предоставит разрешение или согласие, Live Connect выдаст приложению уникальную строку символов - маркер доступа. Маркер доступа используется приложением для получения запрошенной пользовательской информации из службы, совместимой с Live Connect (в данном случае Hotmail). Маркер доступа уникальным образом представляет сочетание идентификатора клиента, конкретного пользователя, выполнившего вход, а также набора областей, на которые требуются пользователю. Маркер доступа действителен только в течение определенного периода времени.

    Рекомендуется придерживаться минимального количества областей в запросе, поскольку это улучшит процесс взаимодействия с пользователем. Возможно создать приложение, которое просто запрашивает доступ к любой возможной информации пользователя, которая когда-либо может ему понадобиться. Однако вероятно, что пользователи не решатся предоставить приложению доступ, когда увидят, к какому большому числу областей он требуется. Лучшим решением будет запросить согласие только на несколько ключевых областей - тех, которые непосредственно соответствуют контексту вашего приложения. Например, если создается приложение для обмена фотографиями, имеет смысл запросить доступ к области wl.photos, wl.contacts_photos или wl.skydrive. Впоследствии, если пользователь захочет использовать ту часть приложения, которой требуется другая область - доступ к календарю Hotmail, например - запросить в соответствующий момент согласие пользователя на область wl.calendars или wl.calendars_update. Если у пользователя запрашивается дополнительное согласие, то приложение должно также запросить новый маркер доступа, который затем должен использоваться приложением вместо старого.

    Вход пользователей

    Персонализированная среда взаимодействия с пользователями повышает качетсво информационной системы: повышается лояльность пользователей и степень удовлетворения от работы с приложением.

    Live Connect включает несколько способов добавления в приложение функции входа на языках JavaScript, C#, Objective-C, Java и REST. Вкратце опишем их.

    Чтобы запустить процесс входа, при написании приложения для Windows Store или клиентской веб-страницы на JavaScript можно отобразить элемент управления Live Connect для входа. Также для запуска процесса входа можно использовать существующий элемент HTML, например кнопку.

    Добавить элемент управления для входа можно с помощью метода WL.ui (JavaScript). Пример исходного кода:

    WL.Event.subscribe("auth.login", onLogin);
    WL.init({
        client_id: APP_CLIENT_ID,
        redirect_uri: REDIRECT_URL,
        scope: "wl.signin", 
        response_type: "token"
    });
    
    WL.ui({
        name: "signin",
        element: "signin"
    });
    
    
    function onLogin() {
        document.getElementById("infoLabel").innerText = "Signed in.";
    } 

    Чтобы подключить элемент управления для входа к элементу HTML на веб-странице, можно просто добавить тег <div> с атрибутом id, имеющим в данном случае значение "signin".

    Чтобы запустить процесс входа из элемента HTML, например кнопки, упомянутой ранее, следует использовать метод WL.login. Ниже приведен соответствующий код.

    function moreScopes_onClick() {
        WL.login({
            scope: ["wl.signin", "wl.basic"]
        }).then(
            function (session) {
                document.getElementById("infoLabel").innerText = "Signed in.";
            },
            function (sessionError) {
                document.getElementById("infoLabel").innerText = 
                    "Error signing in: " + sessionError.error_description;
            }
        );
    } 

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

    Рассмотрим исходный код. Метод WL.Event.subscribe указывает приложению использовать метод обратного вызова onLogin после того, как пользователь завершит процесс входа и даст свое согласие; метод WL.login использует вместо этого встроенные функции. (Обратите внимание, что события auth.login инициируются всякий раз при изменении статуса входа пользователя с "unknown" (неизвестный) или "notConnected" (не подключен) на "connected" (подключен).) Чтобы определить, успешно ли пользователь выполнил вход и предоставил ли согласие на запрошенные области, метод WL.login дает коду команду использовать анонимные методы после .then. Области представляются анонимным методом после .then с параметром session. Область wl.signin позволяет пользователю автоматически входить в службы Live из приложения, если он уже вошел в службы Live. Дополнительная область wl.basic в методе WL.init предоставляет доступ к базовой информации, такой как отображаемое имя пользователя.

    После входа пользователя можно использовать область wl.basic, наряду с методом WL.api, чтобы приветствовать пользователя по имени, как показано в следующем примере.

    function greetUser_onClick() {
        WL.login({
            scope: "wl.basic"
        }).then(
            function (response)
            {
                WL.api({
                    path: "me",
                    method: "GET"
                }).then(
                    function (response){
                        document.getElementById("infoArea").innerText =
                            "Hello, " + response.first_name + " " +
                            response.last_name + "!";
                    },
                    function (responseFailed){
                        document.getElementById("infoArea").innerText =
                            "Error calling API: " + responseFailed.error.message;
                    }
                );
            },
            function (responseFailed){
                document.getElementById("infoArea").innerText =
                    "Error signing in: " + responseFailed.error_description;
            }
        );
    } 

    В данном примере метод WL.api использует наше сокращение me для вызова интерфейсов Live Connect API с целью получения информации о вошедшем пользователе. Если метод HTTP GET успешно вызовет интерфейсы API, отобразятся имя и фамилия пользователя, взятые из содержимого объекта response.

    SkyDrive: файлы и фотографии

    Пользователи хранят на SkyDrive множество документов и мультимедиа. Предоставление пользователям доступа к их документам и мультимедиа из приложения поможет увеличить степень использования приложения и побудить пользователей поделиться им со своими контактами. С помощью интерфейсов Live Connect API в SkyDrive можно выполнять следующие действия:

  • Создавать, читать, обновлять и удалять папки и альбомы. (Альбом - это специальный тип папки SkyDrive, предназначенный для повышения удобства работы с фото- и видеофайлами.)
  • Загружать файлы на сервер и скачивать их оттуда.
  • Читать и обновлять свойства файла.
  • Получить внедренную ссылку, ссылку только для чтения или ссылку для чтения и записи в папку или файл.
  • Перемещать и копировать папки и файлы.
  • Читать теги, добавляемые пользователями к фотографиям и видеозаписям.
  • Читать комментарии, добавляемые пользователями к папкам, файлам, альбомам, фотографиям, видеозаписям и звуковым файлам.
  • Краткие итоги

    В лекции представлены основные положения об основных способах взаимодействия информационных систем с облачными решениями. Показаны способы взаимодействия с такими сервисами как SkyDrive, HotMail. Рассмотрена технология идентификации LiveID способы использования данной технологии в информационных системах.

    Вопросы

  • Облачные технологии фирмы Microsoft?
  • Какие настройки используются для идентификации сервисом LiveID пользовательских приложений?
  • Какие методы используются при разработке приложений для создания персонализированного входа в LiveID?
  • Какими способами повышается степень использования приложения?
  • Вернуться к учебному плану