Модель, яку використовують пристрої, підключені до IoT Hub, полягає в тому, що вони ніколи не приймуть вхідні з'єднання. Пристрої IoT Hub ніколи не виступають як "сервер", і це важлива частина моделі безпеки в Azure IoT. Остаточна модель щодо цього вкладена у "Спілкування за допомогою сервісу" Клеменса Вастерса .
Тому пристрої завжди "опитують" зовнішню службу для того, щоб надсилати дані або отримувати команди. API дозволяє виглядати так, що дані надсилаються на пристрій, але це завжди пристрій, який здійснює вихідне з'єднання.
IoT-центр робить це двома способами:
- Відправляючи дані в кінцеву точку пристрою
/devices/{deviceId}/messages/devicebound
. Це кінцева точка обміну повідомленнями AMQP, подібна до підписки на чергу чи тему. Пристрій, читаючи команди, потребує підтвердження отримання, якщо це потрібно, що є частиною базового протоколу AMQP. Це працює так само і з MQTT, а https - дійсна резервна версія. API перераховує все це для вас. Існують додаткові поняття, такі як "прямі методи", які є обгорткою API навколо, по суті, одного і того ж базового протоколу повідомлення
- Використовуючи серверний пристрій twin, це спосіб логічно зберігати властивості в синхронізації між пристроєм і сервером. Ви встановите властивість на пристрої близнюк, і коли пристрій синхронізує цю властивість, буде синхронізовано з пристроєм. Це менш на основі повідомлень і побудовано на основі протоколу управління пристроєм LWM2M.
Про частину опитування, підключення, спільного доступу, квитанцій тощо слід потурбуватись як частину протоколу AMQP (або MQTT), який, в свою чергу, перетворений в SDK IoT Hub SDK. Отже, вищесказане дуже спрощено, але повторити, IoT Hub не може і не намагатиметься (ніколи) надсилати дані на ip-адресу / порт вашого пристрою.