Alljoyn что это
Перейти к содержимому

Alljoyn что это

AllJoyn и Windows 10 — делаем так, чтобы наши устройства говорили на одном языке

Не так давно мы уже затрагивали тему IoT или «Интернета Вещей» в рамках прошедшей конференции WinHEC (Hardware Engineering Conference) 2015.

Одна из главных проблем, волнующих многих, это вопрос обеспечения связности и обнаружения устройств, говорящих на разных языках, протоколах и др. Эту проблему призван решить фреймворк AllJoyn, в совокупности с протоколом Thread, к рабочей группе над которым Microsoft присоединился 1 июля. Об AllJoyn и пойдёт наша речь.

Отдельно мы решили рассмотреть одну из очень важных частей этой концепции в разрезе Windows 10 (но, конечно, не ограничивающейся этой ОС) — популярный протокол взаимодействия устройств AllJoyn, который уже стал де-факто стандартом. Тем более, что Windows 10 и сопутствующий Windows 10 SDK предоставляют специальную поддержку данного протокола.

Что за AllJoyn?

AllJoyn — это фреймворк (и протокол) с открытым исходным кодом, предназначенный для взаимодействия приложений, устройств и пользователей через WiFi и Bluetooth (и другие типы сетей) вне зависимости от типа устройства.

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

Архитектурно это выглядит следующим образом – AllJoyn-сеть состоит из виртуальных роутеров (Routers) и приложений (Apps). Приложения общаются со своим роутером, а роутеры, в свою очередь, с другими роутерами и другими приложениям, относящимися к данному роутеру. Таким образом, приложения могут общаться друг с другом посредством сети этих виртуальных роутеров. При этом приложение и вирутальный роутер, к которому он прикреплен, могут находится на разных физических устройствах.

Подробнее про архитектуру AllJoyn можно почитать тут (общая информация) и тут (Windows 10 IoT).

Windows 10 IoT AllJoyn

Спешу порадовать — в Windows 10 включена полная поддержка данного протокола, а именно:
Во-первых, вам не нужно заботиться об AllJoyn-роутере, описанном выше, так как Windows 10 включает специальный сервис AllJoyn Router Service, который может использоваться как вашими приложениями, так и другими устройствами в сети.

Во-вторых, Windows 10 включает специальный API для работы с AllJoyn-протоколом, который находится в пространстве имен Windows.Devices.AllJoyn (https://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.alljoyn.aspx) (поддерживаются С++, C#, JavaScript). Таким образом, вам не нужно ставить дополнительные SDK и инструменты, все уже готово и работает.

И, конечно же, дополнительные инструменты для разработчиков:

  • AllJoynCodeGen — часть Windows 10 SDK (лежит в C:\Program Files (x86)\Windows Kits\10\bin\x64\), позволяет сгенерировать полностью готовую Windows Runtime библиотеку для работы с AllJoyn-сервисом, используя описание сервиса в формате xml (AllJoyn Introspection XML). Посмотреть и послушать подробнее.
  • getajxml — специальная утилита, которая позволяет обнаружить все AllJoyn-устройства в сети, получить детальную информацию, в том числе сгенерировать AllJoyn Introspection XML, который можно использовать для автогенерации кода. Подробнее можно посмотреть на видео выше.
  • AllJoyn Explorer — похожая утилита, выполненная в виде Windows приложения и позволяющая не только увидеть интерфейс, но и динамически вызвать методы. Скачать можно здесь.

Пример создания AllJoyn-приложения на Windows 10

Ниже мы будем использовать Windows 10 Insider Preview и бесплатную версию Visual Studio 2015 Community Edition (RC) (скачать).

Одним из популярных примеров AllJoyn является проект Connected Lighting Project, который представляет ни что иное, как лампочку, реализующую AllJoyn-интерфейс для получения информации и управления устройством.
Ниже посмотрим на процесс создания Windows 10-клиета для управления такой умной лампочкой.

Полный исходный код приложения можно найти на GitHub. Итак…

Шаг 1. Создаем новый Widows Runtime C++ компонент и используем AllJoynCodeGen (см. выше) для автогенерации кода.
Публичный AllJoyn Introspection XML для данного проекта можно найти тут.

Детальные инструкции лежат здесь.
Шаг 2. Создаем новое Windows 10 C#/XAML приложение и добавляем в зависимости только что созданный Windows Runtime компонент.
Шаг 3. Теперь мы можем реализовать логику по нахождению и управлению нашей лампочкой
Для того, чтобы найти и подсоединиться к лампочке:

Чтобы изменить яркость:

Это действительно весь код 🙂 Основные AllJoyn классы были предоставлены Windows 10 API, остальные сгенерированы c помощью AllJoynCodeGen.

Шаг 4. Тестируем:
В качестве тестовой лампочки можно использовать Lamp Simulator Application (Android, скачать). Итак, запускаем наше приложение на Windows Phone 10 телефоне и Lamp Simulator на Android, и смотрим, как это все работает вместе.

Служба маршрутизатора AllJoyn — что это такое?

Служба перенаправляет сообщения AllJoyn для локальных клиентов AllJoyn. В большинстве случаев — можно отключить.

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

В интернете встречал сообщения, то эту службу можно отключить.

AllJoyn — что это вообще такое?

Оказывается это фреймворк (и протокол), предназначенный для взаимодействия программ, устройств и пользователей через Wi-Fi и Bluetooth (а также другие сети) и все это не зависит от типа устройства.

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

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

Судя по этой картинке, возможно что AllJoyn нужно для работы некой умной системы, возможно умного дома, где устройства, в том числе автомобиль, машина, холодильник, часы и другие — все могут обмениваться данными. PS: думаю что устройства, которые это умеют — продвинутый и стоят недешево.

Что можно сказать в итоге? Что если вы не знаете что такое AllJoyn — то вам это вряд ли нужно и службу можно отключить.

Служба маршрутизатора AllJoyn — как отключить?

У меня она была отключена. Но я ее отключил полностью, выбрав в Тип запуска — Отключена. Сделал перезагрузку, никаких проблем в итоге нет.

Итак, отключаем службу:

  1. Зажимаем Win + R, пишем команду services.msc, нажимаем ОК.
  2. Откроется окно со списком служб, находим здесь Служба маршрутизатора AllJoyn, нажимаем два раза по ней.
  3. Появится окошко свойств, где в Тип запуска выбираем Отключено, а потом нажимаем кнопку Остановить.

Окошко свойств службы:

Как видите, она работает под процессом svchost.exe, который запускается из системной папки C:\Winodws\system32 и с параметром -k LocalServiceNetworkRestricted -p

Windows. Devices. All Joyn Пространство имен

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

AllJoyn — это платформа с открытым исходным кодом, подобная DCOM, а также протокол для удаленных вызовов методов, удаленное чтение или запись свойств и отправка односторонних "сигналов" между приложениями (называемыми "узлами") на распределенной шине. Он предназначен для использования в основном для Интернет вещей таких сценариев, как включение и выключение индикаторов или считывание температур.

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

Чтобы приступить к работе, ознакомьтесь со следующими статьями.

  • Для описания всей системы AllJoyn перейдите на веб-сайт Open Connectivity Foundation .
  • Дополнительные сведения также можно найти на вики- сайте GitHub по проекту с открытым исходным кодом.

Классы

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

Используется для просмотра данных о другом приложении и устройстве, на котором оно работает.

Содержит сведения о запросе сеанса присоединения, который используется для определения того, будет ли запрос принят и инициируется подключение к сеансу.

Содержит сведения об успешном или неудачном завершении операции проверки подлинности.

Представляет подключение к базовому конвейеру связи (не зависящему от транспорта), используемому AllJoyn для связи с другими конечными точками независимо от транспорта.

Содержит сведения об изменениях состояния и состояния подключения к шине AllJoyn, управляемому AllJoynBusAttachment объектом.

Представляет объект шины, доступный в конвейере не зависящей от транспорта связи.

Содержит сведения об остановленной AllJoynBusObject.

Определяет свойства, используемые при передаче учетных данных во время проверки подлинности.

Содержит сведения о запросе учетных данных для проверки подлинности в одноранговом узле.

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

Предоставляет сведения об отправителе обрабатываемого сообщения.

Содержит сведения о состоянии, указывающие, почему приложение производителя было остановлено.

Предоставляет уникальные сведения об имени и транспорте для рекламного приложения.

Содержит сведения, определяющие рекламное приложение, которое больше не доступно.

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

Содержит сведения, определяющие сеанс, присоединенный.

Содержит сведения, определяющие причину потери сеанса.

Содержит сведения о одноранговом элементе, добавленном в сеанс.

Содержит сведения об удаленном приложении, удаленном из сеанса.

Определяет коллекцию свойств, используемых для передачи значения для кодов состояния AllJoyn. Возможные значения состояния см. в стандартной документации по AllJoyn.

Содержит сведения об объекте наблюдателя за остановленными сеансами.

Интерфейсы

Используйте этот интерфейс для приема запросов от одноранговых узлов для присоединения к сеансу.

Представляет производителя AllJoyn для использования с AllJoynBusObject.

Перечисления

Определяет значения, используемые для указания механизма, используемого в операциях проверки подлинности.

Определяет значения, используемые для указания состояния соединения с шиной AllJoyn, управляемой AllJoynBusAttachment объектом.

Определяет значения, используемые для AllJoynSessionLostEventArgs указания причины потери сеанса.

Определяет значения, используемые для указания типа данных, перевозимых в трафике сеанса.

Добавить комментарий

Ваш адрес email не будет опубликован.