Condividi tramite


Raccomandazioni sui riferimenti alle code

Aggiornamento: novembre 2007

Se si crea un'istanza del componente MessageQueue, è necessario indicare la coda con cui si desidera che comunichi il componente. Esistono tre metodi per fare riferimento a una coda nel codice:

  • In base al percorso: il percorso di una coda identifica in modo univoco il nome del computer e della coda a cui si è interessati.

  • In base al nome formattato: un identificatore univoco per la coda generato da MSMQ quando la coda viene creata o generata in un momento successivo dall'applicazione.

  • In base all'etichetta: un nome descrittivo e potenzialmente non univoco per la coda assegnato dall'amministratore durante la creazione della coda.

Quando si crea una nuova coda, anziché una nuova istanza del componente MessageQueue, è necessario utilizzare il percorso. Il nome di formato e l'etichetta vengono assegnati dal sistema di Accodamento messaggi dopo la creazione della coda. Quando si fa riferimento a una coda esistente nel codice o dalla Casella degli strumenti, è tuttavia possibile scegliere il metodo di riferimento desiderato. Il metodo scelto viene memorizzato nella proprietà Path del componente.

Riferimento a una coda mediante il percorso

Il percorso di una coda assume il formato servername\queuename. I percorsi di una coda sono sempre univoci. Nella tabella riportata di seguito sono elencate le informazioni sul percorso utilizzate per ciascun tipo di coda.

Tipo di coda

Sintassi utilizzata nel percorso

Coda pubblica

MachineName\QueueName

Coda privata

MachineName\Private$\QueueName

Coda diari

MachineName\QueueName\Journal$

Coda diari del computer

MachineName\Journal$

Coda di messaggi non consegnati del computer

MachineName\Deadletter$

Coda transazionale di messaggi non consegnati del computer

MachineName\XactDeadletter$

Per indicare il nome del computer locale, è possibile utilizzare ".". "YourMachine\MyQueue" è pertanto equivalente a ".\MyQueue".

Di seguito sono riportati alcuni suggerimenti relativi all'utilizzo di un percorso per fare riferimento alle code.

  • Quando sul controller di dominio in un server di Accodamento messaggi viene ricevuta un'operazione per una coda a cui si fa riferimento in base al percorso, quest'ultimo deve essere risolto e deve essere determinato il nome di formato della coda in questione. Le prestazioni fornite utilizzando questo metodo potrebbero risultare leggermente più lente rispetto a quelle fornite qualora si facesse riferimento alla coda direttamente in base al nome di formato.

  • Se si progetta il componente da utilizzare come servizio Web XML, si otterranno prestazioni ottimali servendosi del metodo del nome di formato anziché del metodo del percorso per fare riferimento alle code.

  • Se si desidera inviare messaggi a una coda quando è disconnessa, non sarà possibile fare riferimento a essa mediante il percorso. È necessario inviare i messaggi disconnessi mediante il nome di formato.

È possibile recuperare il percorso di una coda eseguendo una query e combinando i risultati restituiti da due proprietà distinte della classe base MessageQueue: MachineName e QueueName.

Il codice utilizzato per fare riferimento a una coda mediante il percorso è analogo al seguente:

MessageQueue1.Path = "YourMachine\MyQueue"
     MessageQueue1.Path = @"YourMachine\MyQueue";
Nota:

La sintassi @".\MyQueue" per C# è equivalente all'utilizzo di ".\\MyQueue". Il segno @ indica una stringa letterale. Per ulteriori informazioni, vedere string (Riferimenti per C#).

Riferimento a una coda mediante il nome di formato

I nomi di formato assumono la forma di una stringa, in cui è specificato se una coda è pubblica o privata, seguita da un identificatore GUID generato per la coda e da altri identificatori, se necessario. Nella tabella riportata di seguito sono elencate le informazioni sul percorso utilizzate per ciascun tipo di coda.

Tipo di coda

Sintassi utilizzata nel nome di formato

Coda pubblica

FORMATNAME:PUBLIC=QueueGUID

Coda privata

FORMATNAME:PRIVATE=MachineGUID\QueueNumber

Coda diari

FORMATNAME:PUBLIC=QueueGUID;JOURNAL   

-oppure-

FORMATNAME:PRIVATE=MachineGUID\QueueNumber;JOURNAL

Il nome di formato non viene assegnato a una coda dall'utente, ma questo valore viene generato dal gestore della coda durante la creazione della coda stessa. Il riferimento a una coda mediante il nome di formato rappresenta il metodo più diretto di accesso a una coda, in quanto il controller di dominio sul server non deve interpretare il riferimento, così come avviene quando si fa riferimento alla coda mediante il percorso.

Di seguito sono riportati alcuni suggerimenti relativi ai riferimenti alle code in base al nome di formato.

  • Se si desidera inviare messaggi a una coda disconnessa, sarà necessario fare riferimento alla coda mediante il nome di formato anziché mediante il percorso, in quanto, se la coda non è in linea, il percorso non sarà disponibile per la risoluzione.

  • I nomi di formato possono diventare non validi quando la topografia della rete viene modificata o una coda viene eliminata e ricreata.

È possibile recuperare un nome di formato di una coda eseguendo una query sulla proprietà FormatName della classe MessageQueue.

Il codice utilizzato per fare riferimento a una coda mediante il nome di formato è analogo al seguente:

MessageQueue1.Path = _
   "FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75"
     MessageQueue1.Path =
           "FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75";

Riferimento a una coda mediante le etichette

È, inoltre, possibile fare riferimento a una coda mediante la relativa etichetta, che è un'etichetta di testo descrittiva assegnata alla coda dall'amministratore. Poiché le etichette non sono sempre univoche, se esiste un conflitto di nomi durante il tentativo di connessione a una specifica coda mediante la relativa etichetta, verrà generato un errore.

Le etichette possono risultare utili nei casi in cui si desidera eseguire lo spostamento di una coda da un computer a un altro. Se si fa riferimento alla coda solo mediante l'etichetta, tutte le operazioni continueranno a essere eseguite correttamente dopo lo spostamento della coda nella nuova posizione, purché sul nuovo computer non esistano altre code con quell'etichetta. In caso contrario, il metodo Send genera un errore.

È possibile recuperare l'etichetta di una coda eseguendo una query sulla proprietà Label della classe MessageQueue.

Il codice utilizzato per fare riferimento a una coda mediante l'etichetta è analogo al seguente:

MessageQueue1.Path = "LABEL:MyQueue"
     MessageQueue1.Path = "LABEL:MyQueue";

Vedere anche

Attività

Procedura: creare code

Procedura: creare istanze del componente MessageQueue

Altre risorse

Creazione, eliminazione e amministrazione delle code