SRMPSRMP

In diesem Beispiel wird veranschaulicht, wie eine abgewickelte Warteschlangenkommunikation mithilfe von Message Queuing (MSMQ) über HTTP durchgeführt wird.This sample demonstrates how to perform transacted queued communication by using Message Queuing (MSMQ) over HTTP.

In einer Warteschlangenkommunikation kommuniziert der Client über eine Warteschlange mit dem Dienst.In queued communication, the client communicates to the service using a queue. Genauer ausgedrückt bedeutet dies, dass der Client Nachrichten an eine Warteschlange sendet.More precisely, the client sends messages to a queue. Der Dienst empfängt Nachrichten aus der Warteschlange.The service receives messages from the queue. Folglich müssen der Dienst und der Client nicht gleichzeitig ausgeführt werden, um über eine Warteschlange zu kommunizieren.The service and client therefore, do not have to be running at the same time to communicate using a queue.

MSMQ aktiviert die Verwendung des HTTP (einschließlich der Verwendung des HTTPS), um Nachrichten an eine Warteschlange zu senden.MSMQ enables the use of HTTP (including the use of HTTPS) to send messages to a queue. In diesem Beispiel veranschaulichen wir, dass mithilfe von Windows Communication Foundation (WCF) Kommunikation und Senden von Nachrichten über HTTP in die Warteschlange eingereiht.In this example, we demonstrate using Windows Communication Foundation (WCF) queued communication and how to send messages over HTTP. MSMQ verwendet ein Protokoll namens SRMP, das ein SOAP-basiertes Protokoll für Kommunikation über HTTP ist.MSMQ uses a protocol called SRMP, which is a SOAP-based protocol for communication over HTTP.

So können Sie das Beispiel einrichten, erstellen und ausführenTo set up, build, and run the sample

  1. Stellen Sie sicher, dass Sie ausgeführt haben die Setupprozedur für die Windows Communication Foundation-Beispiele zum einmaligen.Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Um die C#- oder Visual Basic .NET-Edition der Projektmappe zu erstellen, befolgen Sie die unter Building the Windows Communication Foundation Samplesaufgeführten Anweisungen.To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  3. Um das Beispiel in einer einzelnen oder computerübergreifenden Konfiguration ausführen möchten, folgen Sie den Anweisungen Ausführen der Windows Communication Foundation-Beispiele.To run the sample in a single- or cross-machine configuration, follow the instructions in Running the Windows Communication Foundation Samples.

  4. Vor dem Ausführen des Beispiels in Windows-Komponenten hinzufügen/entfernen, stellen Sie sicher, dass MSMQ installiert ist mit HTTP-Unterstützung.Before running the sample in Add/Remove Windows Components, ensure that MSMQ is installed with HTTP support. Die Installation der HTTP-Unterstützung installiert automatisch Internetinformationsdienste (IIS) und fügt die Protokollunterstützung in IIS für MSMQ hinzu.Installing HTTP support automatically installs Internet Information Services (IIS) and adds the protocol support in IIS for MSMQ.

  5. Wenn Sie sichergehen möchten, dass HTTP für die Kommunikation verwendet wird, können Sie MSMQ aktivieren, um eine Ausführung im geschützten Modus zu erreichen.If you want to be certain that HTTP is used for communication, you can enable MSMQ to run in hardened mode. Hierdurch wird sichergestellt, dass keine Nachrichten an Warteschlangen, die auf dem Computer gehostet werden, durch Nicht-HTTP-Transporte empfangen werden können.This ensures that no messages to any queue hosted on the machine can arrive using any non-HTTP transport.

  6. Nachdem Sie MSMQ ausgewählt haben, um im geschützten Modus auszuführen, erfordert der Computer auf Windows Server 2003Windows Server 2003 einen Neustart.After you have selected MSMQ to run in hardened mode, the machine requires a re-boot on Windows Server 2003Windows Server 2003.

  7. Führen Sie den Dienst aus.Run the service.

  8. Führen Sie den Client aus.Run the client. Ändern Sie die Endpunktadresse so, dass diese auf den Computernamen oder die IP-Adresse anstelle von "localhost" verweist.Ensure that you change the endpoint address to point to the machine name or IP address instead of localhost. Der Client sendet eine Nachricht und wird beendet.The client sends a message and exits.

AnforderungenRequirements

Zum Ausführen dieses Beispiels muss IIS zusätzlich zu MSMQ sowohl auf dem Dienst- als auch auf dem Clientcomputer installiert sein.To run this sample, IIS must be installed on both the service and the client machines in addition to MSMQ.

VeranschaulichtDemonstrates

Das Beispiel veranschaulicht das Senden von WCF in der Warteschlange Nachrichten mit MSMQ über HTTP.The sample demonstrates sending WCF queued messages using MSMQ over HTTP. Dies wird auch als SRMP-Messaging bezeichnet.This is also called SRMP messaging. Wenn eine in der Warteschlange befindliche Nachricht gesendet wird, überträgt MSMQ auf dem sendenden Computer die Nachrichten über TCP- oder HTTP-Transport an den empfangenden Warteschlangen-Manager.When a queued message is sent, MSMQ on the sending machine transfers the messages to the receiving queue manager over TCP or HTTP transport. Indem er SRMP auswählt, gibt der Benutzer die Auswahl von HTTP als Transport für Warteschlangenübertragung an.By choosing SRMP, the user indicates the choice of HTTP as a transport for queue transfer. SRMP Secure aktiviert die Verwendung von HTTPS.SRMP Secure enables the use of HTTPS.

BeispielExample

Der Beispielcode basiert auf dem durchgeführten Beispiel.The sample code is based on the transacted sample. Wie über SRMP eine Nachricht zu einer Warteschlange gesendet und wie eine Nachricht aus einer Warteschlange empfangen wird, entspricht dem Senden und Empfangen von Nachrichten mithilfe eines systemeigenen Protokolls.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.

Die Konfiguration für den Client wird geändert, um die Auswahl des Warteschlangen-Übertragungsprotokolls anzugeben.The configuration for the client is changed to indicate the choice of the queue transfer protocol. Das Warteschlangen-Übertragungsprotokoll kann systemeigen, SRMP oder SrmpSecure sein.The queue transfer protocol can be one of Native, SRMP or SrmpSecure. Standardmäßig ist das Übertragungsprotokoll systemeigen.By default, the transfer protocol is Native. Der Client und der Dienst legen in diesem Beispiel in der Konfiguration die Verwendung von SRMP fest.The client and service specify in the configuration to use SRMP in this example.

Bei SRMP gibt es Einschränkungen in Bezug auf die Transportsicherheit.There are limitations to SRMP in relation to transport security. Die Standard-MSMQ-Transportsicherheit erfordert Active Directory. Daher müssen sich der sendende und der empfangende Warteschlangen-Manager auf der gleichen Windows-Domäne befinden.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. Dies ist beim Senden von Nachrichten über die HTTP-Grenze nicht möglich.This is not possible when sending messages over HTTP boundary. Auf diese Weise funktioniert die Standardtransportsicherheit nicht.As such, the default transport security does not work. Die Transportsicherheit muss auf Zertifikat (Certificate) festgelegt werden, wenn Transportsicherheit gewünscht wird.The transport security must be set to Certificate if transport security is desired. Nachrichtensicherheit kann auch genutzt werden, um die Nachricht zu schützen.Message security can also be used to secure the message. In diesem Beispiel werden sowohl Transport- als auch Nachrichtensicherheit ausgeschaltet, um SRMP-Messaging zu illustrieren.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>  

Die Durchführung des Beispiels führt zu folgender Ausgabe.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  

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your machine. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, fahren Sie mit Windows Communication Foundation (WCF) und Windows Workflow Foundation (WF) Samples for .NET Framework 4 aller Windows Communication Foundation (WCF) herunterladen und WFWF Beispiele.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. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

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

Siehe auchSee Also