Mô hình mà các thiết bị được kết nối IoT Hub sử dụng là chúng sẽ không bao giờ chấp nhận các kết nối đến. Các thiết bị IoT Hub không bao giờ hoạt động như một 'máy chủ' và đây là một phần quan trọng của mô hình bảo mật trong Azure IoT. Mô hình dứt khoát về điều này được gói gọn trong 'Truyền thông hỗ trợ dịch vụ' của Clemens Vasters .
Do đó, các thiết bị luôn 'bỏ phiếu' một dịch vụ bên ngoài để gửi dữ liệu hoặc nhận lệnh. Các API làm cho nó trông giống như dữ liệu đang được gửi đến một thiết bị, nhưng nó luôn là thiết bị tạo kết nối đi.
Trung tâm IoT thực hiện điều này theo hai cách:
- Bằng cách gửi dữ liệu đến điểm cuối của thiết bị
/devices/{deviceId}/messages/devicebound
. Đây là điểm cuối nhắn tin AMQP, tương tự như đăng ký hàng đợi hoặc chủ đề. Thiết bị, khi đọc lệnh, cần xác nhận đã nhận nếu cần, là một phần của giao thức AMQP cơ bản. Điều này hoạt động tương tự với MQTT và https là một dự phòng hợp lệ. API kết thúc tất cả những điều này cho bạn. Có các khái niệm bổ sung, chẳng hạn như 'phương thức trực tiếp', là một trình bao bọc API xung quanh về cơ bản cùng một giao thức thông báo cơ bản
- Bằng cách sử dụng song sinh thiết bị phía máy chủ, đây là cách để giữ các thuộc tính đồng bộ giữa thiết bị và máy chủ. Bạn đặt một thuộc tính trên thiết bị sinh đôi và khi thiết bị đồng bộ hóa thuộc tính đó sẽ được đồng bộ hóa với thiết bị. Điều này ít dựa trên thông điệp và được xây dựng dựa trên giao thức quản lý thiết bị LWM2M.
Rất nhiều 'bỏ phiếu', kết nối, chia sẻ kết nối, biên lai, v.v. nên được coi là một phần của giao thức AMQP (hoặc MQTT), lần lượt được gói trong SDK Hub của IoT. Vì vậy, cách trên rất đơn giản, nhưng để nhắc lại, IoT Hub không thể và sẽ không (bao giờ) thử và gửi dữ liệu đến địa chỉ IP / cổng trên thiết bị của bạn.