Esporta (0) Stampa
Espandi tutto
Informazioni
L'argomento richiesto è visualizzato di seguito, ma non è incluso in questa libreria.

Utilizzo di Service Bus da .NET con AMQP 1.0

Download di Service Bus SDK

In Service Bus SDK 2.1 o versioni successive è disponibile il supporto per AMQP 1.0. È possibile eseguire il download dell'ultima versione dell'SDK da NuGet all'indirizzo http://nuget.org/packages/WindowsAzure.ServiceBus/.

Configurazione delle applicazioni .NET per l'utilizzo di AMQP 1.0

Per impostazione predefinita, la libreria client .NET di Service Bus comunica con il servizio di Service Bus utilizzando un protocollo dedicato basato su SOAP. Per utilizzare AMQP 1.0 anziché il protocollo predefinito, è necessaria una configurazione esplicita sulla stringa di connessione di Service Bus, come illustrato nella sezione riportata di seguito. Inoltre, il codice dell'applicazione rimane invariato durante l'utilizzo di AMQP 1.0.

Nella versione corrente alcune funzionalità API non sono supportate durante l'utilizzo di AMQP. Tali funzionalità sono elencate più avanti nella sezione "Funzionalità non supportate, restrizioni e differenze di comportamento". Anche alcune delle impostazioni di configurazione avanzate assumono un significato differente quando si utilizza AMQP.

Configurazione con App.config

È una procedura consigliata per le applicazioni utilizzare il file di configurazione App.config per l'archiviazione delle impostazioni. Per le applicazioni di Service Bus, il file App.config può essere utilizzato per archiviare le impostazioni per il valore ConnectionString di Service Bus. Segue un esempio del file App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="Microsoft.ServiceBus.ConnectionString"
             value="Endpoint=sb://[namespace].servicebus.windows.net;SharedSecretIssuer=[issuer name];SharedSecretValue=[issuer key];TransportType=Amqp" />
    </appSettings>
</configuration>

Il valore dell'impostazione Microsoft.ServiceBus.ConnectionString è la stringa di connessione di Service Bus utilizzata per configurare la connessione con Service Bus. Il formato è il seguente:

Endpoint=sb://[namespace].servicebus.windows.net;SharedSecretIssuer=[issuer name];SharedSecretValue=[issuer key];TransportType=Amqp

Dove [namespace], [issuer name] e [issuer key] si ottengono dal portale di gestione Windows Azure. Per ulteriori informazioni, vedere la pagina relativa all'utilizzo delle code di Service Bus.

Quando si utilizza AMQP, aggiungere alla stringa di connessione ;TransportType=Amqp. Questa notazione indica alla libreria client di effettuare la connessione a Service Bus utilizzando AMQP 1.0.

Serializzazione dei messaggi

Quando si utilizza il protocollo predefinito, il comportamento di serializzazione predefinito della libreria client .NET prevede l'utilizzo del tipo DataContractSerializer per serializzare un'istanza BrokeredMessage per il trasporto tra la libreria client e il servizio Service Bus. Quando si utilizza la modalità di trasporto AMQP, la libreria client utilizza il sistema di tipi AMQP per la serializzazione di BrokeredMessage in un messaggio AMQP. Questa serializzazione consente al messaggio di essere ricevuto e interpretato da un'applicazione di ricezione potenzialmente eseguita su una piattaforma diversa, ad esempio un'applicazione Java che utilizza l'API JMS per accedere a Service Bus.

Quando si costruisce un'istanza BrokeredMessage, è possibile fornire al costruttore come parametro un oggetto .NET da utilizzare come corpo del messaggio. Per gli oggetti che possono essere mappati a tipi primitivi AMQP, il corpo viene serializzato nei tipi di dati AMQP. Se non è possibile mappare direttamente l'oggetto a un tipo primitivo AMQP, ovvero un tipo personalizzato definito dall'applicazione, l'oggetto verrà serializzato utilizzando DataContractSerializer e i byte serializzati verranno inviati in un messaggio Data AMQP.

Per facilitare l'interoperabilità con client non .NET, utilizzare solo tipi .NET che possono essere serializzati direttamente in tipi AMQP per il corpo del messaggio. Nella tabella riportata di seguito vengono elencati questi tipi e il corrispondente mapping con il sistema di tipi AMQP.

 

Tipo di oggetto corpo .NET Tipo AMQP mappato Tipo di sezione corpo AMQP

bool

boolean

Valore AMQP

byte

ubyte

Valore AMQP

ushort

ushort

Valore AMQP

uint

uint

Valore AMQP

ulong

ulong

Valore AMQP

sbyte

byte

Valore AMQP

short

short

Valore AMQP

int

int

Valore AMQP

long

long

Valore AMQP

virgola mobile

virgola mobile

Valore AMQP

double

double

Valore AMQP

decimal

decimal128

Valore AMQP

char

char

Valore AMQP

DateTime

timestamp

Valore AMQP

Guid

uuid

Valore AMQP

byte[]

binary

Valore AMQP

string

string

Valore AMQP

System.Collections.IList

list

Valore AMQP

Gli elementi contenuti nella raccolta possono essere solo quelli definiti nella tabella.

System.Array

array

Valore AMQP

Gli elementi contenuti nella raccolta possono essere solo quelli definiti nella tabella.

System.Collections.IDictionary

mappa

Valore AMQP

Gli elementi contenuti nella raccolta possono essere solo quelli definiti nella tabella.

Nota: sono supportate solo le chiavi String.

Uri

Descrizione string

(vedere la tabella seguente)

Valore AMQP

DateTimeOffset

Descrizione long

(vedere la tabella seguente)

Valore AMQP

TimeSpan

Descrizione long

(vedere quanto segue)

Valore AMQP

Stream

binary

Data AMQP (possono essere multipli)

Nelle sezioni Data sono contenuti i byte non elaborati letti dall'oggetto Stream.

Altro oggetto

binary

Data AMQP (possono essere multipli)

Contiene i dati binary serializzati dell'oggetto che utilizza DataContractSerializer o un serializzatore fornito dall'applicazione.

 

Tipo .NET Descrizione tipo AMQP mappato Note

Uri

<type name=”uri” class=restricted source=”string”>

<descriptor name=”com.microsoft:uri” />

</type>

Uri.AbsoluteUri

DateTimeOffset

<type name=”datetime-offset” class=restricted source=”long”>

<descriptor name=”com.microsoft:datetime-offset” />

</type>

DateTimeOffset.UtcTicks

TimeSpan

<type name=”timespan” class=restricted source=”long”>

<descriptor name=”com.microsoft:timespan” />

</type>

TimeSpan.Ticks

Funzionalità non supportate, restrizioni e differenze di comportamento

Le seguenti funzionalità dell'API .NET di Service Bus non sono al momento supportate durante l'utilizzo di AMQP:

  • Transazioni

  • Invio tramite destinazione del trasferimento

  • Ricezione in base al numero di sequenza del messaggio

  • Esplorazione di messaggio e sessione

  • Stato sessione

  • API basate su batch

  • Ricezione con scalabilità orizzontale

  • Manipolazione runtime delle regole di sottoscrizione

  • Rinnovo del blocco della sessione

In particolare, le seguenti API non sono al momento supportate durante l'utilizzo di AMQP:

Quando si utilizza AMQP, s verificano anche alcune piccole differenze di comportamento dell'API .NET di Service Bus rispetto al protocollo predefinito:

  • La proprietà OperationTimeout viene ignorata.

  • L'elemento MessageReceiver.Receive(TimeSpan.Zero) viene implementato come MessageReceiver.Receive(TimeSpan.FromSeconds(10)).

Controllo delle impostazioni del protocollo AMQP

Le API .NET espongono diverse impostazioni per il controllo del comportamento del protocollo AMQP:

  • MessageReceiver.PrefetchCount: controlla il credito iniziale applicato a un collegamento. L'impostazione predefinita è 0.

  • MessagingFactorySettings.AmqpTransportSettings.MaxFrameSize: controlla la dimensione di frame massima di AMQP offerta durante la negoziazione al momento dell'apertura della connessione. L'impostazione predefinita è 65.536 byte.

  • MessagingFactorySettings.AmqpTransportSettings.BatchFlushInterval: se i trasferimenti possono essere suddivisi in batch, questo valore determina il ritardo massimo per l'invio delle disposizioni. Per impostazione predefinita, questo valore è ereditato da mittenti/destinatari. Il singolo mittente/destinatario può ignorare il valore predefinito, ovvero 20 millisecondi.

  • MessagingFactorySettings.AmqpTransportSettings.UseSslStreamSecurity: controlla se le connessioni AMQP vengono stabilite su una connessione SSL. Il valore predefinito è true.

Aggiunte alla community

Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft