Messaggi e connessioni in Servizio Azure SignalR

Il modello di fatturazione per il Servizio Azure SignalR è basato sul numero di connessioni e di messaggi in uscita dal servizio. Questo articolo illustra come vengono definiti e conteggiati i messaggi e le connessioni ai fini della fatturazione.

Formati di messaggi

Il Servizio Azure SignalR supporta gli stessi formati di ASP.NET Core SignalR: JSON e MessagePack.

Dimensione del messaggio

I limiti seguenti si applicano ai messaggi del Servizio Azure SignalR:

  • Messaggi client:
    • Per il polling prolungato o eventi lato server il client non può inviare messaggi di dimensioni superiori a 1 MB.
    • Non è previsto alcun limite di dimensioni per WebSocket per il servizio.
    • Il server app può impostare un limite per le dimensioni dei messaggi client. Il valore predefinito è 32 KB. Per altre informazioni, vedere Considerazioni sulla sicurezza in ASP.NET Core SignalR.
    • Per la modalità serverless, le dimensioni dei messaggi sono limitate dall'implementazione upstream, ma è consigliabile un valore inferiore a 1 MB.
  • Messaggi del server:
    • Non è previsto alcun limite per le dimensioni dei messaggi del server, ma è consigliabile un valore inferiore a 16 MB.
    • Il server app può impostare un limite per le dimensioni dei messaggi client. Il valore predefinito è 32 KB. Per altre informazioni, vedere Considerazioni sulla sicurezza in ASP.NET Core SignalR.
    • Serverless:

Per i client WebSocket, i messaggi di grandi dimensioni vengono divisi in messaggi più piccoli, di dimensioni pari a non più di 2 KB ognuno, e trasmessi separatamente. La divisione e l'assemblaggio dei messaggi vengono gestiti dagli SDK. Non è necessario alcun intervento da parte degli sviluppatori.

I messaggi di grandi dimensioni influiscono negativamente sulle prestazioni della messaggistica. Usare messaggi di dimensioni inferiori quando è possibile e cercare di determinare le dimensioni ottimali per ogni scenario di caso d'uso.

Come vengono conteggiati i messaggi per la fatturazione

I messaggi inviati al servizio sono messaggi in ingresso e i messaggi inviati dal servizio sono messaggi in uscita. Per la fatturazione vengono conteggiati solo i messaggi in uscita da Servizio Azure SignalR. I messaggi ping tra client e server vengono ignorati.

I messaggi di dimensioni maggiori di 2 KB vengono conteggiati come più messaggi di 2 KB ognuno. Il grafico del numero di messaggi nel portale di Azure viene aggiornato ogni 100 messaggi per hub.

Si supponga, ad esempio, di avere un server applicazioni e tre client:

  • Quando il server applicazioni trasmette un messaggio da 1 KB a tutti i client connessi, il messaggio dal server applicazioni al servizio viene considerato un messaggio in ingresso gratuito. I tre messaggi inviati dal servizio a ognuno dei client sono messaggi in uscita e vengono fatturati.

  • Quando client A invia un messaggio in ingresso di 1 KB a client B, senza passare attraverso il server app, il messaggio è un messaggio in ingresso gratuito. Il messaggio instradato dal servizio a client B viene fatturato come messaggio in uscita.

  • Quando un client invia un messaggio di 4 KB per la trasmissione del server a tutti i client e sono presenti tre client e un server applicazioni, il numero dei messaggi fatturati è otto:

    • Un messaggio dal servizio al server applicazioni.
    • Tre messaggi dal servizio ai client. Ogni messaggio viene conteggiato come due messaggi di 2 KB.

Come vengono conteggiate le connessioni

Il Servizio Azure SignalR crea connessioni client e server applicazioni. Per impostazione predefinita, ogni server applicazioni inizia con cinque connessioni iniziali per hub e ogni client ha una connessione client.

Si supponga, ad esempio, di avere due server applicazioni e di definire cinque hub nel codice. Il numero di connessioni server è 50: (2 server app * 5 hub * 5 connessioni per hub).

Il numero di connessioni visualizzato nel portale di Azure include connessioni server, client, diagnostica e traccia dinamica. I tipi di connessione sono definiti nell'elenco seguente:

  • Connessione server: connette il Servizio Azure SignalR e il server app.
  • Connessione client: connette il Servizio Azure SignalR e l'app client.
  • Connessione di diagnostica: tipo speciale di connessione client che può produrre un log più dettagliato, che potrebbe influire sulle prestazioni. Questo tipo di client è progettato per la risoluzione dei problemi.
  • Connessione di traccia dinamica: si connette all'endpoint di traccia dinamica e riceve tracce in tempo reale del Servizio Azure SignalR.

Una connessione di traccia dinamica non viene conteggiata come connessione client o come connessione server.

ASP.NET SignalR il calcola le connessioni server in modo diverso. Include un hub predefinito in aggiunta agli hub definiti dall'utente. Per impostazione predefinita, per ogni server applicazioni sono necessarie altre cinque connessioni server iniziali. Il numero delle connessioni iniziali per l'hub predefinito rimane coerente con quello degli altri hub.

Il servizio e il server applicazioni mantengono la sincronizzazione dello stato della connessione e apportano modifiche alle connessioni server per ottenere prestazioni e stabilità del servizio migliori. È quindi possibile che vengano rilevate modifiche al numero di connessioni server nel servizio in esecuzione.