Panoramica dell'API .NET Standard per Connessioni ibride di Inoltro di Azure

In questo articolo vengono riepilogate alcune delle principali API client .NET Standard per Connessioni ibride di Inoltro di Azure.

Classe RelayConnectionStringBuilder

La classe RelayConnectionStringBuilder genera stringhe in un formato specifico per Connessioni ibride di inoltro di Azure. È possibile usarla per verificare il formato di una stringa di connessione o per generarne una da zero. Per un esempio, vedere il codice seguente.

var endpoint = "[Relay namespace]";
var entityPath = "[Name of the Hybrid Connection]";
var sharedAccessKeyName = "[SAS key name]";
var sharedAccessKey = "[SAS key value]";

var connectionStringBuilder = new RelayConnectionStringBuilder()
{
    Endpoint = endpoint,
    EntityPath = entityPath,
    SharedAccessKeyName = sasKeyName,
    SharedAccessKey = sasKeyValue
};

È inoltre possibile passare direttamente una stringa di connessione al metodo RelayConnectionStringBuilder. Questa operazione consente di verificare che il formato della stringa di connessione sia valido. Se uno dei parametri non è valido, il costruttore genera un'eccezione ArgumentException.

var myConnectionString = "[RelayConnectionString]";
// Declare the connectionStringBuilder so that it can be used outside of the loop if needed
RelayConnectionStringBuilder connectionStringBuilder;
try
{
    // Create the connectionStringBuilder using the supplied connection string
    connectionStringBuilder = new RelayConnectionStringBuilder(myConnectionString);
}
catch (ArgumentException ae)
{
    // Perform some error handling
}

Flusso di connessione ibrida

La classe Hybrid Connessione ionStream è l'oggetto primario usato per inviare e ricevere dati da un endpoint di inoltro di Azure, indipendentemente dal fatto che si stia usando un hybrid Connessione ionClient o un hybrid Connessione ionListener.

Ottenere un flusso di connessione ibrida

Listener

Tramite un oggetto HybridConnectionListener è possibile ottenere un oggetto HybridConnectionStream nel modo seguente:

// Use the RelayConnectionStringBuilder to get a valid connection string
var listener = new HybridConnectionListener(csb.ToString());
// Open a connection to the Relay endpoint
await listener.OpenAsync();
// Get a `HybridConnectionStream`
var hybridConnectionStream = await listener.AcceptConnectionAsync();

Client

Tramite un oggetto HybridConnectionClient è possibile ottenere un oggetto HybridConnectionStream nel modo seguente:

// Use the RelayConnectionStringBuilder to get a valid connection string
var client = new HybridConnectionClient(csb.ToString());
// Open a connection to the Relay endpoint and get a `HybridConnectionStream`
var hybridConnectionStream = await client.CreateConnectionAsync();

Ricezione di dati

La classe HybridConnectionStream consente la comunicazione bidirezionale. Nella maggior parte dei casi si ha una ricezione costante dal flusso. Se si legge testo dal flusso, è anche possibile usare un oggetto StreamReader , che consente di analizzare più facilmente i dati. Ad esempio, è possibile leggere i dati come testo anziché come byte[].

Il codice seguente legge singole righe di testo dal flusso fino a quando non viene richiesto l'annullamento.

// Create a CancellationToken, so that we can cancel the while loop
var cancellationToken = new CancellationToken();
// Create a StreamReader from the hybridConnectionStream
var streamReader = new StreamReader(hybridConnectionStream);

while (!cancellationToken.IsCancellationRequested)
{
    // Read a line of input until a newline is encountered
    var line = await streamReader.ReadLineAsync();
    if (string.IsNullOrEmpty(line))
    {
        // If there's no input data, we will signal that 
        // we will no longer send data on this connection
        // and then break out of the processing loop.
        await hybridConnectionStream.ShutdownAsync(cancellationToken);
        break;
    }
}

Invio di dati

Dopo aver stabilito una connessione, è possibile inviare un messaggio all'endpoint di Inoltro di Azure. Poiché l'oggetto connessione eredita Stream, inviare i dati come un byte[]. L'esempio seguente illustra come eseguire questa operazione:

var data = Encoding.UTF8.GetBytes("hello");
await clientConnection.WriteAsync(data, 0, data.Length);

Tuttavia, se si desidera inviare testo direttamente e senza dover codificare la stringa ogni volta, è possibile eseguire il wrapping dell'oggetto hybridConnectionStream con un oggetto StreamWriter.

// The StreamWriter object only needs to be created once
var textWriter = new StreamWriter(hybridConnectionStream);
await textWriter.WriteLineAsync("hello");

Passaggi successivi

Per altre informazioni sul servizio di inoltro di Azure, vedere i collegamenti seguenti: