Panoramica dell'API .NET Standard per Connessioni ibride di Inoltro di AzureAzure Relay Hybrid Connections .NET Standard API overview

In questo articolo vengono riepilogate alcune delle principali API client .NET Standard per Connessioni ibride di Inoltro di Azure.This article summarizes some of the key Azure Relay Hybrid Connections .NET Standard client APIs.

Generatore di stringhe di connessione di InoltroRelay Connection String Builder

La classe RelayConnectionStringBuilder genera stringhe in un formato specifico per Connessioni ibride di inoltro di Azure.The RelayConnectionStringBuilder class formats connection strings that are specific to Relay Hybrid Connections. È possibile usarla per verificare il formato di una stringa di connessione o per generarne una da zero.You can use it to verify the format of a connection string, or to build a connection string from scratch. Per un esempio, vedere il codice seguente.See the following code for an example:

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.You can also pass a connection string directly to the RelayConnectionStringBuilder method. Questa operazione consente di verificare che il formato della stringa di connessione sia valido.This operation enables you to verify that the connection string is in a valid format. Se uno dei parametri non è valido, il costruttore genera un'eccezione ArgumentException.If any of the parameters are invalid, the constructor generates an 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 ibridaHybrid connection stream

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.The HybridConnectionStream class is the primary object used to send and receive data from an Azure Relay endpoint, whether you are working with a HybridConnectionClient, or a HybridConnectionListener.

Ottenere un flusso di connessione ibridaGetting a Hybrid connection stream

ListenerListener

Tramite HybridConnectionListener è possibile ottenere un oggetto HybridConnectionStream nel modo seguente:Using a HybridConnectionListener, you can obtain a HybridConnectionStream object as follows:

// 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();

ClientClient

Tramite HybridConnectionClient è possibile ottenere un oggetto HybridConnectionStream nel modo seguente:Using a HybridConnectionClient, you can obtain a HybridConnectionStream object as follows:

// 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 datiReceiving data

La classe HybridConnectionStream consente la comunicazione bidirezionale.The HybridConnectionStream class enables two-way communication. Nella maggior parte dei casi si ha una ricezione costante dal flusso.In most cases, you continuously receive from the stream. Se si legge testo da un flusso, è anche possibile usare un oggetto StreamReader per usufruire di una più semplice analisi dei dati.If you are reading text from the stream, you may also want to use a StreamReader object, which enables easier parsing of the data. Ad esempio, è possibile leggere i dati come testo anziché come byte[].For example, you can read data as text, rather than as byte[].

Il codice seguente legge singole righe di testo dal flusso fino a quando non viene richiesto l'annullamento.The following code reads individual lines of text from the stream until a cancellation is requested:

// 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 datiSending data

Dopo aver stabilito una connessione, è possibile inviare un messaggio all'endpoint di Inoltro di Azure.Once you have a connection established, you can send a message to the Relay endpoint. Poiché l'oggetto connessione eredita Stream, inviare i dati come un byte[].Because the connection object inherits Stream, send your data as a byte[]. L'esempio seguente illustra come farlo:The following example shows how to do this:

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.However, if you want to send text directly, without needing to encode the string each time, you can wrap the hybridConnectionStream object with a StreamWriter object.

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

Passaggi successiviNext steps

Per altre informazioni su Inoltro di Azure, visitare i collegamenti seguenti:To learn more about Azure Relay, visit these links: