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.

Generatore di stringhe di connessione di Inoltro

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 Connessioni ibride

La classe HybridConnectionStream è l'oggetto principale usato per inviare e ricevere dati da un endpoint di Inoltro di Azure, sia che si lavori con un HybridConnectionClient o un HybridConnectionListener.

Ottenere un flusso di Connessioni ibride

Listener

Tramite 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 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 da un flusso, è anche possibile usare un oggetto StreamReader per usufruire di una più semplice analisi dei 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 farlo:

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 su Inoltro di Azure, visitare i collegamenti seguenti: