Condividi tramite


SRMP

In questo esempio viene illustrato come eseguire comunicazioni transazionali in coda utilizzando Accodamento messaggi (MSMQ) su HTTP.

Nella comunicazione in coda, il client comunica al servizio mediante una coda. Più precisamente, il client invia messaggi a una coda. Il servizio riceve messaggi dalla coda. Di conseguenza, per comunicare mediante una coda il servizio e il client non devono essere in esecuzione contemporaneamente.

MSMQ consente di utilizzare HTTP (e HTTPS) per inviare messaggi a una coda. In questo esempio, viene descritto come utilizzare le comunicazioni in coda di Windows Communication Foundation (WCF) e come inviare messaggi su HTTP. MSMQ utilizza un protocollo chiamato SRMP, protocollo basato su SOAP per la comunicazione su HTTP.

Per impostare, compilare ed eseguire l'esempio

  1. Assicurarsi di aver eseguito la Procedura di installazione singola per gli esempi di Windows Communication Foundation.

  2. Per compilare l'edizione in C# o Visual Basic .NET della soluzione, seguire le istruzioni in Generazione degli esempi Windows Communication Foundation.

  3. Per eseguire l'esempio su una configurazione con un solo computer o tra computer diversi, seguire le istruzioni in Running the Windows Communication Foundation Samples.

  4. Prima di eseguire l'esempio in Installazione componenti di Windows, assicurarsi che MSMQ sia installato con supporto HTTP. L'installazione del supporto HTTP installa automaticamente Internet Information Services (IIS) e aggiunge il supporto dei protocolli per MSMQ in IIS.

  5. Per essere sicuri che venga utilizzato HTTP per la comunicazione, è possibile abilitare MSMQ per l'esecuzione in modalità di protezione avanzata. In questo modo si garantisce che i messaggi inviati alla coda sul computer ospitato utilizzando un trasporto diverso da HHTP non arrivino a destinazione.

  6. Dopo avere selezionato la modalità di protezione avanzata di MSMQ, il computer richiede di riavviare in Windows Server 2003.

  7. Eseguire il servizio.

  8. Eseguire il client. Assicurarsi di modificare l'indirizzo endpoint in modo che punti al nome del computer o all'indirizzo IP, anziché a localhost. Il client invia un messaggio e viene chiuso.

Requisiti

Per eseguire questo esempio è necessario che, oltre a MSMQ, IIS sia installato sul computer del servizio e su quello del client,

Dimostrazione

Nell'esempio viene illustrato come inviare messaggi in coda di WCF utilizzando MSMQ su HTTP. Questa procedura viene anche chiamata messaggistica SRMP. Quando viene inviato un messaggio in coda, MSMQ sul computer mittente trasferisce i messaggi al gestore code di destinazione utilizzando il trasporto TCP o HTTP. Se sceglie SRMP, l'utente sceglie HTTP come tipo di trasporto per il trasferimento della coda. Il protocollo SRMP protetto consente l'utilizzo di HTTPS.

Esempio

L'esempio di codice si basa sull'esempio transazionale. L'invio di un messaggio alla coda e la ricezione di un messaggio dalla coda mediante SRMP sono uguali all'invio e alla ricezione di messaggi mediante un protocollo nativo.

La configurazione per il client viene modificata per indicare la scelta del protocollo di trasferimento dalla coda. Il protocollo di trasferimento dalla coda può essere nativo, SRMP o SrmpSecure. Per impostazione predefinita, il protocollo di trasferimento è nativo. Nella configurazione di questo esempio il client e il servizio specificano di utilizzare SRMP.

L'utilizzo del protocollo SRMP presenta alcuni limiti relativi alla sicurezza del trasporto. La sicurezza del trasporto MSMQ predefinita richiede Active Directory che richiede a sua volta che il gestore delle code mittente e il gestore delle code di destinazione risiedano nello stesso dominio Windows. Questo non è possibile quando si inviano messaggi mediante HTTP. Per questa ragione, la sicurezza del trasporto predefinita non funziona. Se si desidera che il trasporto sia protetto, è necessario impostare la sicurezza del trasporto su Certificato. È possibile inoltre utilizzare la sicurezza dei messaggi per proteggere il messaggio. In questo esempio, il trasporto e la sicurezza dei messaggi sono disattivati per illustrare la messaggistica SRMP.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <system.serviceModel>

    <client>
      <!-- Define NetMsmqEndpoint -->
      <endpoint name="OrderProcessorEndpoint"
           address=
          "net.msmq://localhost/private/ServiceModelSamplesSrmp" 
           bindingConfiguration="srmpBinding" 
           binding="netMsmqBinding" 
           contract="IOrderProcessor" />
    </client>
    <bindings>
      <netMsmqBinding>
        <binding name="srmpBinding"
                 queueTransferProtocol="Srmp">
          <security mode="None"></security>
        </binding>
      </netMsmqBinding>
    </bindings>
  </system.serviceModel>

</configuration>

L'esecuzione dell'esempio produce l'output seguente.

Processing Purchase Order: 556b70be-31ee-4a3b-8df4-ed5e538015a4 
Customer: somecustomer.com 
OrderDetails 
    Order LineItem: 54 of Blue Widget @unit price: $29.99 
    Order LineItem: 890 of Red Widget @unit price: $45.89 
    Total cost of this order: $42461.56 
    Order status: Pending
Aa395217.Important(it-it,VS.100).gif Nota:
È possibile che gli esempi siano già installati nel computer. Verificare la directory seguente (impostazione predefinita) prima di continuare.

<UnitàInstallazione>:\WF_WCF_Samples

Se questa directory non esiste, vedere la pagina relativa agli esempi di Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti gli esempi di Windows Communication Foundation (WCF) e WF. Questo esempio si trova nella directory seguente.

<UnitàInstallazione>:\WF_WCF_Samples\WCF\Basic\Binding\Net\MSMQ\SRMP