Scegliere un protocollo di comunicazione del dispositivo

l'hub IoT consente ai dispositivi di usare i protocolli seguenti per le comunicazioni lato dispositivo:

Nota

hub IoT ha un supporto limitato delle funzionalità per MQTT. Se la soluzione richiede il supporto MQTT v3.1.1 o v5, è consigliabile supportare MQTT in Griglia di eventi di Azure. Per altre informazioni, vedere Confrontare il supporto MQTT in hub IoT e Griglia di eventi.

Per informazioni sulle modalità di supporto dei protocolli alle funzionalità specifiche dell'hub IoT, vedere Indicazioni sulle comunicazioni da dispositivo a cloud e Indicazioni sulle comunicazioni da cloud a dispositivo.

Nella tabella seguente vengono fornite le indicazioni generali per la scelta del protocollo:

Protocollo Quando scegliere questo protocollo
MQTT
MQTT su WebSocket
Usare in tutti i dispositivi che non richiedono la connessione a più dispositivi, ognuno con le proprie credenziali per dispositivo, tramite la stessa connessione TLS.
AMQP
AMQP su WebSockets
Usare in gateway cloud e sul campo per sfruttare il vantaggio della connessione multiplexing tra dispositivi.
HTTPS Usare per i dispositivi che non possono supportare altri protocolli.

Nella scelta del protocollo per le comunicazioni sul lato dispositivo occorre prendere in considerazione quanto segue:

  • Modello da cloud a dispositivo. HTTPS non offre un modo efficiente per implementare il push del server. Di conseguenza, quando si usa HTTPS, i dispositivi eseguano il polling hub IoT per i messaggi da cloud a dispositivo. Questo approccio è inefficiente sia per il dispositivo che per l'hub IoT. In base alle attuali linee guida di HTTPS, ogni dispositivo dovrebbe eseguire il polling almeno ogni 25 minuti. La generazione di altre ricezioni HTTPS comporta la limitazione delle richieste da parte dell'hub IoT. MQTT e AMQP supportano il push del server quando si ricevono messaggi da cloud a dispositivo, consentendo il push immediato dei messaggi dall'hub IoT al dispositivo. Se la latenza di recapito rappresenta un problema, è consigliabile usare il protocollo MQTT o AMQP. Per i dispositivi che si connettono raramente, è possibile usare anche il protocollo HTTPS.

  • Gateway sul campo. MQTT e HTTPS supportano solo una singola identità del dispositivo (ID dispositivo e credenziali) per ogni connessione TLS. Per questo motivo, questi protocolli non sono supportati per gli scenari del gateway sul campo che richiedono il multiplexing dei messaggi, usando più identità del dispositivo, in una singola connessione o in un pool di connessioni upstream a hub IoT. Tali gateway possono usare un protocollo che supporta più identità dei dispositivi per ogni connessione, ad esempio AMQP, per il traffico upstream.

  • Dispositivi con risorse ridotte. Le raccolte di MQTT e HTTPS hanno un'impronta inferiore rispetto alle raccolte di AMQP. Di conseguenza, se il dispositivo ha risorse limitate (ad esempio, meno di 1 MB di RAM), questi protocolli potrebbero essere l'unica implementazione del protocollo disponibile.

  • Attraversamento rete. Il protocollo standard AMQP usa la porta 5671, mentre il protocollo MQTT è in ascolto sulla porta 8883. L'uso di queste porte può causare problemi nelle reti chiuse ai protocolli non HTTPS. In un simile scenario, usare MQTT su WebSockets, AMQP su WebSockets o HTTPS.

  • Dimensioni del payload. MQTT e AMQP sono protocolli binari, quindi hanno payload più compatti rispetto a HTTPS.

Avviso

Quando si usa HTTPS, ogni dispositivo deve eseguire il polling dei messaggi da cloud a dispositivo non più di una volta ogni 25 minuti. In fase di sviluppo, ogni dispositivo può eseguire il polling più frequentemente, se necessario.

Importante

Le funzionalità seguenti per i dispositivi che usano l'autenticazione dell'autorità di certificazione X.509 non sono ancora disponibili a livello generale e la modalità di anteprima deve essere abilitata:

  • HTTPS, MQTT su WebSocket e AMQP su protocolli WebSocket.
  • Caricamenti di file (tutti i protocolli).

Queste funzionalità sono disponibili a livello generale nei dispositivi che usano l'autenticazione con identificazione personale X.509. Per altre informazioni sull'autenticazione X.509 con hub IoT, vedere Certificati X.509 supportati.

Numeri di porta

I dispositivi possono comunicare con l'hub IoT in Azure tramite una serie di protocolli. In genere, la scelta del protocollo è determinata dai requisiti specifici della soluzione. Nella tabella seguente sono elencate le porte in uscita che devono essere aperte affinché un dispositivo possa utilizzare un protocollo specifico:

Protocollo Port
MQTT 8883
MQTT su WebSocket 443
AMQP 5671
AMQP su WebSockets 443
HTTPS 443

L'indirizzo IP di un hub IoT è soggetto a modifiche senza preavviso. Per informazioni su come attenuare gli effetti delle modifiche degli indirizzi IP dell'hub IoT nella soluzione e nei dispositivi IoT, vedere la sezione Procedure consigliate di hub IoT indirizzi IP.

Passaggi successivi

Per altre informazioni su come hub IoT implementa il protocollo MQTT, vedere Comunicare con l'hub IoT usando il protocollo MQTT.