Esempio di tecnologia relativa ai componenti in coda
Aggiornamento: novembre 2007
In questo esempio viene illustrata l'interazione delle applicazioni .NET con la tecnologia MSMQ (Microsoft Message Queuing) e con la funzionalità COM+ relativa ai componenti in coda. MSMQ consente alle applicazioni di comunicare attraverso reti e sistemi che potrebbero essere temporaneamente non in linea. I messaggi generati dalle applicazioni di origine vengono archiviati in code in modo da poter essere successivamente recuperati dalle applicazioni di destinazione. La funzionalità relativa ai componenti in coda si basa su MSMQ per consentire la chiamata e l'esecuzione asincrone di componenti server.
Nota importante: |
---|
Per generare ed eseguire l'esempio, è necessario che nel computer sia installato MSMQ in modalità gruppo di lavoro. |
Per informazioni sull'utilizzo degli esempi, vedere i seguenti argomenti:
Per generare l'esempio utilizzando il prompt dei comandi
Aprire una finestra del prompt dei comandi, quindi spostarsi in una delle sottodirectory specifiche del linguaggio della directory Technologies\ComponentServices\QueuedComponents.
Dalla riga di comando digitare msbuild QueuedComponentsCS.sln o msbuild QueuedComponentsVB.sln, a seconda del linguaggio di programmazione che si desidera utilizzare.
Per generare l'esempio utilizzando Visual Studio
Aprire Esplora risorse, quindi spostarsi in una delle sottodirectory specifiche del linguaggio della directory Technologies\ComponentServices\QueuedComponents.
Fare doppio clic sull'icona relativa a QueuedComponentsCS.sln o QueuedComponentsVB.sln, a seconda del linguaggio di programmazione che si desidera utilizzare, per aprire il file in Visual Studio.
Scegliere Build Solution dal menu Build.
Per registrare e installare l'assembly nella Global Assembly Cache
Spostarsi nella directory contenente l'assembly generato.
Digitare regsvcs QCDemoSvr.dll dalla riga di comando per registrare l'assembly.
Digitare gacutil –i QCDemoSvr.dll dalla riga di comando per installare l'assembly nella Global Assembly Cache.
Per eseguire l’esempio
Aprire una finestra del prompt dei comandi o Esplora risorse, quindi spostarsi nella directory contenente il nuovo eseguibile.
Digitare QCDemo.exe dalla riga di comando oppure fare doppio clic sul file QCDemo.exe in Esplora risorse per avviarlo.
Fare clic sul pulsante Send Queued Msg. Modificare il valore stringa nel campo di modifica del testo, quindi fare clic sul pulsante Send Queued Msg una seconda volta. In questo modo, nella coda verranno inserite due chiamate a metodi compattate come messaggi.
Esaminare i messaggi nella coda QCDemoSvr. Fare clic con il pulsante destro del mouse su Risorse del computer, quindi scegliere Manage dal menu di scelta rapida. Nella console Gestione computer espandere la struttura Servizi e applicazioni\Accodamento messaggi\Code pubbliche. Nel nodo verrà visualizzata una coda denominata qcdemosvr. Il nome della coda corrisponde al nome dell'applicazione COM+ in cui è incluso il componente accodato. L'applicazione verrà descritta in uno dei passaggi successivi.
Espandere qcdemosvr, quindi selezionare Messaggi coda. Nel riquadro destro verranno visualizzati due messaggi, corrispondenti alle due chiamate a metodi del componente accodate che sono state eseguite dall'applicazione client.
Avviare lo strumento di amministrazione Servizi componenti.
Individuare l'applicazione COM+ QCDemoSvr espandendo la struttura Servizi componenti\Computer\Risorse del computer\Applicazioni COM+ nel riquadro sinistro della finestra di esplorazione COM+.
Fare clic con il pulsante destro del mouse sull'applicazione QCDemoSvr, quindi scegliere Start dal menu di scelta rapida. In questo modo viene attivato il componente server. L'elemento listener/player estrae i messaggi dalla coda qcdemosvr ed esegue una chiamata al server. Verranno visualizzate due finestre di messaggio contenenti le stringhe di testo delle chiamate originali eseguite dall'applicazione client di esempio.
È possibile tornare alla console Gestione computer e osservare che in qcdemosvr non sono più presenti messaggi accodati. Le chiamate successive eseguite dall'applicazione client verranno passate direttamente al server e le finestre di messaggio verranno visualizzate ogni volta che verrà fatto clic sul pulsante.
Nota: In Windows 2000, per tornare all'accodamento messaggi, è necessario chiudere l'applicazione COM+ QCDemoSvr. A tale scopo, fare clic con il pulsante destro del mouse sull'applicazione nella finestra di esplorazione COM+, quindi scegliere Shut Down. Prima della chiusura dell'applicazione COM+ QCDemoSvr, è necessario che sia stato chiuso l'eseguibile client QCDemo.
Per disinstallare l'esempio
Spostarsi nella directory da cui è stato eseguito il file msbuild.exe o da cui è stato avviato il file sln.
Al prompt dei comandi digitare msbuild.exe QueuedComponentsCS.sln /t:Clean o msbuild.exe QueuedComponentsVB.sln /t:Clean, a seconda del linguaggio di programmazione che si desidera utilizzare. In questo modo vengono chiamati lo Strumento di installazione dei servizi .NET (Regsvcs.exe) e lo Strumento Global Assembly Cache (Gacutil.exe) con l'opzione /u per rimuovere i file di esempio dal catalogo COM+ e dalla Global Assembly Cache.
Requisiti
Piattaforma: Windows 2000, Windows XP, Windows Server 2003
Versione di .NET Framework: 2.0, 1.1, 1.0
Osservazioni
Per ulteriori informazioni sulle fasi di registrazione e creazione di file binari di esempio, vedere i commenti nei file di codice sorgente.
La funzionalità COM+ relativa ai componenti in coda si basa su MSMQ (Message Queuing Services) e fornisce un meccanismo per la chiamata e l'esecuzione asincrone di componenti. Quando un client effettua una chiamata a un oggetto accodato, la chiamata viene effettivamente inviata a un elemento recorder, che la compatta come messaggio e inserisce quest'ultimo in una coda. Un listener legge il messaggio dalla coda e lo invia al player, che esegue le effettive chiamate a metodi sull'oggetto server. Nella versione C# il nome del componente è QCDemoServerCS.QComponent, come visualizzato nello strumento di amministrazione Servizi componenti, mentre nella versione Visual Basic il nome del componente è QCDemoServerVB.QComponent.
Nota: |
---|
È necessario registrare l'assembly QCDemoSvr.dll per impostare la coda dei messaggi e installarlo nella Global Assembly Cache. Lo strumento di installazione dei servizi .NET (regsvcs.exe) si trova nella directory %system root%\Microsoft.Net\Framework\<versione runtime>, mentre lo strumento Global Assembly Cache (gacutil.exe) si trova nella directory \SDK\<versione>\Bin. |
Per ricevere i messaggi accodati, il server deve essere attivato. I componenti server possono essere attivati manualmente, mediante script e utilità di pianificazione oppure a livello di codice. Nell'esempio il componente server viene attivato manualmente.
L'esempio è costituito da un'applicazione client e da un oggetto gestito contrassegnato per InterfaceQueuing. Il listener è attivato mediante un attributo di classe. Durante la generazione dell'applicazione, COM+ crea una coda con lo stesso nome dell'applicazione COM+ specificata.
L'applicazione client contiene un unico pulsante. Quando viene fatto clic sul pulsante, viene richiamato il recorder del componente accodato mediante un moniker di coda. Tutte le chiamate eseguite tramite il riferimento restituito vengono compattate come messaggio e inserite nella coda dei messaggi appropriata.
Successivamente, le chiamate a metodi accodate vengono estratte e inviate al componente server effettivo quando questo è attivato nello strumento di amministrazione Servizi componenti. Nel server dell'esempio viene visualizzata una finestra di messaggio per segnalare che il server ha ricevuto la chiamata.
Vedere anche
Riferimenti
System.Runtime.InteropServices
Altre risorse
Creazione di code di componenti