SRMPSRMP

In questo esempio viene illustrato come eseguire comunicazioni transazionali in coda usando Accodamento messaggi (MSMQ) su HTTP.This sample demonstrates how to perform transacted queued communication by using Message Queuing (MSMQ) over HTTP.

Nella comunicazione in coda, il client comunica al servizio usando una coda.In queued communication, the client communicates to the service using a queue. Più precisamente, il client invia messaggi a una coda.More precisely, the client sends messages to a queue. Il servizio riceve messaggi dalla coda.The service receives messages from the queue. Di conseguenza, per comunicare mediante una coda il servizio e il client non devono essere in esecuzione contemporaneamente.The service and client therefore, do not have to be running at the same time to communicate using a queue.

MSMQ consente di usare HTTP (e HTTPS) per inviare messaggi a una coda.MSMQ enables the use of HTTP (including the use of HTTPS) to send messages to a queue. In questo esempio viene descritto come utilizza Windows Communication Foundation (WCF) in coda le comunicazioni e procedura per inviare messaggi su HTTP.In this example, we demonstrate using Windows Communication Foundation (WCF) queued communication and how to send messages over HTTP. MSMQ usa un protocollo chiamato SRMP, protocollo basato su SOAP per la comunicazione su HTTP.MSMQ uses a protocol called SRMP, which is a SOAP-based protocol for communication over HTTP.

Per impostare, compilare ed eseguire l'esempioTo set up, build, and run the sample

  1. Assicurarsi di avere eseguito la procedura di installazione singola per gli esempi di Windows Communication Foundation.Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Per compilare l'edizione in C# o Visual Basic .NET della soluzione, seguire le istruzioni in Building the Windows Communication Foundation Samples.To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  3. Per eseguire l'esempio in una configurazione singola o tra computer, seguire le istruzioni in esegue gli esempi di Windows Communication Foundation.To run the sample in a single- or cross-machine configuration, follow the instructions in Running the Windows Communication Foundation Samples.

  4. Prima di eseguire l'esempio in Installazione componenti di Windows, verificare che MSMQ sia installato con supporto HTTP.Before running the sample in Add/Remove Windows Components, ensure that MSMQ is installed with HTTP support. L'installazione del supporto HTTP installa automaticamente Internet Information Services (IIS) e aggiunge il supporto dei protocolli per MSMQ in IIS.Installing HTTP support automatically installs Internet Information Services (IIS) and adds the protocol support in IIS for MSMQ.

  5. Per essere sicuri che venga usato HTTP per la comunicazione, è possibile abilitare MSMQ per l'esecuzione in modalità di protezione avanzata.If you want to be certain that HTTP is used for communication, you can enable MSMQ to run in hardened mode. In questo modo si garantisce che i messaggi inviati alla coda sul computer ospitato usando un trasporto diverso da HTTP non arrivino a destinazione.This ensures that no messages to any queue hosted on the machine can arrive using any non-HTTP transport.

  6. Dopo avere selezionato la modalità di protezione avanzata di MSMQ, il computer richiede di riavviare in Windows Server 2003Windows Server 2003.After you have selected MSMQ to run in hardened mode, the machine requires a re-boot on Windows Server 2003Windows Server 2003.

  7. Eseguire il servizio.Run the service.

  8. Eseguire il client.Run the client. Assicurarsi di modificare l'indirizzo endpoint in modo che punti al nome del computer o all'indirizzo IP, anziché a localhost.Ensure that you change the endpoint address to point to the machine name or IP address instead of localhost. Il client invia un messaggio e viene chiuso.The client sends a message and exits.

RequisitiRequirements

Per eseguire questo esempio è necessario che, oltre a MSMQ, IIS sia installato sul computer del servizio e su quello del client,To run this sample, IIS must be installed on both the service and the client machines in addition to MSMQ.

DimostrazioneDemonstrates

Nell'esempio viene illustrato l'invio di WCF usando MSMQ su HTTP messaggi in coda.The sample demonstrates sending WCF queued messages using MSMQ over HTTP. Questa procedura viene anche chiamata messaggistica SRMP.This is also called SRMP messaging. Quando viene inviato un messaggio in coda, MSMQ sul computer mittente trasferisce i messaggi al gestore code di destinazione usando il trasporto TCP o HTTP.When a queued message is sent, MSMQ on the sending machine transfers the messages to the receiving queue manager over TCP or HTTP transport. Se sceglie SRMP, l'utente sceglie HTTP come tipo di trasporto per il trasferimento della coda.By choosing SRMP, the user indicates the choice of HTTP as a transport for queue transfer. Il protocollo SRMP protetto consente l'uso di HTTPS.SRMP Secure enables the use of HTTPS.

EsempioExample

L'esempio di codice si basa sull'esempio transazionale.The sample code is based on the transacted sample. 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.How you send a message to the queue and receive a message from the queue using SRMP is the same as sending and receiving messages using a Native protocol.

La configurazione per il client viene modificata per indicare la scelta del protocollo di trasferimento dalla coda.The configuration for the client is changed to indicate the choice of the queue transfer protocol. Il protocollo di trasferimento dalla coda può essere nativo, SRMP o SrmpSecure.The queue transfer protocol can be one of Native, SRMP or SrmpSecure. Per impostazione predefinita, il protocollo di trasferimento è nativo.By default, the transfer protocol is Native. Nella configurazione di questo esempio il client e il servizio specificano di usare SRMP.The client and service specify in the configuration to use SRMP in this example.

L'uso del protocollo SRMP presenta alcuni limiti relativi alla sicurezza del trasporto.There are limitations to SRMP in relation to transport security. 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.The default MSMQ transport security requires Active Directory that requires that the sending queue manager and the receiving queue manager reside in the same Windows domain. Questo non è possibile quando si inviano messaggi mediante HTTP.This is not possible when sending messages over HTTP boundary. Per questa ragione, la sicurezza del trasporto predefinita non funziona.As such, the default transport security does not work. Se si desidera che il trasporto sia protetto, è necessario impostare la sicurezza del trasporto su Certificato.The transport security must be set to Certificate if transport security is desired. È possibile inoltre usare la sicurezza dei messaggi per proteggere il messaggio.Message security can also be used to secure the message. In questo esempio, il trasporto e la sicurezza dei messaggi sono disattivati per illustrare la messaggistica SRMP.In this sample, both transport and message security is turned off to illustrate SRMP messaging.

<?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.Running the sample yields the following output.

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  

Importante

È possibile che gli esempi siano già installati nel computer.The samples may already be installed on your machine. Verificare la directory seguente (impostazione predefinita) prima di continuare.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Se questa directory non esiste, andare al Windows Communication Foundation (WCF) e gli esempi di Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti i Windows Communication Foundation (WCF) e WFWF esempi.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Questo esempio si trova nella directory seguente.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Binding\Net\MSMQ\SRMP

Vedere ancheSee Also