IoT Hub 연결 장치가 사용하는 모델은 들어오는 연결을 절대 받아들이지 않을 것입니다. IoT Hub 장치는 절대 '서버'로 작동하지 않으며 이는 Azure IoT 보안 모델의 중요한 부분입니다. 이에 대한 결정적인 모델은 Clemens Vasters의 'Service Assisted Communication'에 캡슐화되어 있습니다.
따라서 장치는 데이터를 보내거나 명령을 받기 위해 항상 외부 서비스를 '폴링'합니다. API는 데이터가 장치로 전송되는 것처럼 보이지만 항상 나가는 연결을 만드는 장치입니다.
IoT 허브는 두 가지 방식으로이를 수행합니다.
- 장치 엔드 포인트로 데이터를 전송합니다
/devices/{deviceId}/messages/devicebound
. 큐 또는 토픽 구독과 유사한 AMQP 메시징 엔드 포인트입니다. 장치는 명령을 읽을 때 필요한 경우 승인을 받아야하며 이는 기본 AMQP 프로토콜의 일부입니다. 이는 MQTT와 동일하게 작동하며 https는 유효한 폴백입니다. API가이 모든 것을 마무리합니다. 본질적으로 동일한 기본 메시지 프로토콜을 중심으로 API 래퍼 인 '직접 메서드'와 같은 추가 개념이 있습니다.
- 서버 측 장치 쌍을 사용하면 장치와 서버간에 속성을 논리적으로 동기화 할 수 있습니다. 장치 쌍에서 속성을 설정하면 장치가 동기화 될 때 해당 속성이 장치에 동기화됩니다. 이것은 메시지 기반이 적으며 LWM2M 장치 관리 프로토콜 위에 구축됩니다.
많은 '폴링', 연결, 공유 연결, 영수증 등은 AMQP (또는 MQTT) 프로토콜의 일부로 처리해야하며, 이는 IoT Hub SDK에 포함되어 있습니다. 따라서 위의 내용은 매우 단순하지만 반복하기 위해 IoT Hub는 장치의 IP 주소 / 포트로 데이터를 보내려고 시도하지 않습니다.