Messaggi e connessioni in Servizio Azure SignalR

Il modello di fatturazione per Servizio Azure SignalR si basa sul numero di connessioni e sul numero 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

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

Dimensione del messaggio

Per i messaggi di Servizio Azure SignalR si applicano i limiti seguenti:

  • Messaggi client:
    • Per eventi di polling o lato server lunghi, 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 serverless, la dimensione del messaggio è limitata dall'implementazione upstream, ma è consigliabile meno di 1 MB.
  • Messaggi del server:
    • Non è previsto alcun limite per le dimensioni dei messaggi del server, ma è consigliabile meno di 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:
      • API REST: 1 MB per il corpo del messaggio, 16 KB per le intestazioni.
      • Non è previsto alcun limite per WebSocket, SDK di gestione persis modalità tenda, ma è consigliabile meno di 16 MB.

Per i client WebSocket, i messaggi di grandi dimensioni vengono suddivisi in messaggi più piccoli che non sono più di 2 KB ciascuno 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. Vengono conteggiati solo i messaggi in uscita da Servizio Azure SignalR per la fatturazione. 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 il client A invia un messaggio in ingresso di 1 KB al client B, senza passare attraverso il server app, il messaggio è un messaggio in ingresso gratuito. Il messaggio indirizzato dal servizio al client B viene fatturato come messaggio in uscita.

  • Se sono presenti tre client e un server applicazioni, quando un client invia un messaggio di 4 KB per la trasmissione del server a tutti i client, il conteggio 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 nella portale di Azure include connessioni server, client, diagnostica e traccia in tempo reale. I tipi di connessione sono definiti nell'elenco seguente:

  • Connessione server: Connessione Servizio Azure SignalR e il server app.
  • Connessione client: Connessione Servizio Azure SignalR e l'app client.
  • Connessione 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 in tempo reale: Connessione all'endpoint di traccia in tempo reale e riceve tracce live di 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, ogni server applicazioni richiede cinque connessioni server iniziali. Il numero di connessioni iniziale per l'hub predefinito rimane coerente con 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 visualizzate modifiche al numero di connessioni server nel servizio in esecuzione.