Delen via


SRMP

Het SRMP-voorbeeld laat zien hoe u getransacteerde communicatie in de wachtrij uitvoert met behulp van Message Queuing (MSMQ) via HTTP.

Bij communicatie in de wachtrij communiceert de client met de service via een wachtrij. De client verzendt precies berichten naar een wachtrij. De service ontvangt berichten uit de wachtrij. De service en client hoeven daarom niet tegelijkertijd te worden uitgevoerd om te communiceren met behulp van een wachtrij.

MSMQ maakt het gebruik van HTTP (inclusief het gebruik van HTTPS) mogelijk om berichten naar een wachtrij te verzenden. In dit voorbeeld laten we zien hoe u communicatie in de wachtrij van Windows Communication Foundation (WCF) gebruikt en hoe u berichten verzendt via HTTP. MSMQ maakt gebruik van een protocol met de naam SRMP, een SOAP-protocol voor communicatie via HTTP.

Het voorbeeld instellen, compileren en uitvoeren

  1. Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.

  2. Als u de C# of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in het bouwen van de Windows Communication Foundation-voorbeelden.

  3. Als u het voorbeeld wilt uitvoeren in een configuratie met één of meerdere computers, volgt u de instructies in Het uitvoeren van de Windows Communication Foundation-voorbeelden.

  4. Voordat u het voorbeeld uitvoert in Windows-onderdelen toevoegen/verwijderen, moet u ervoor zorgen dat MSMQ is geïnstalleerd met HTTP-ondersteuning. Als u HTTP-ondersteuning installeert, wordt Internet Information Services (IIS) automatisch geïnstalleerd en wordt de protocolondersteuning toegevoegd in IIS voor MSMQ.

  5. Als u zeker wilt zijn dat HTTP wordt gebruikt voor communicatie, kunt u MSMQ inschakelen om te worden uitgevoerd in de beperkte modus. Dit zorgt ervoor dat er geen berichten naar een wachtrij die op de computer worden gehost, kan binnenkomen met elk niet-HTTP-transport.

  6. Nadat u MSMQ hebt geselecteerd om te worden uitgevoerd in de beperkte modus, moet de computer opnieuw worden opgestart op Windows Server 2003.

  7. Voer de service uit.

  8. Voer de client uit. Zorg ervoor dat u het eindpuntadres wijzigt zodat deze verwijst naar de computernaam of het IP-adres in plaats van localhost. De client verzendt een bericht en sluit af.

Vereisten

Als u dit voorbeeld wilt uitvoeren, moet IIS worden geïnstalleerd op zowel de service als op de clientcomputers, naast MSMQ.

Demonstreert

In het voorbeeld ziet u hoe u WCF-berichten in de wachtrij verzendt met BEHULP van MSMQ via HTTP. Dit wordt ook wel SRMP-berichten genoemd. Wanneer een bericht in de wachtrij wordt verzonden, worden de berichten door MSMQ op de verzendende machine overgebracht naar de ontvangende wachtrijbeheerder via TCP- of HTTP-transport. Door SRMP te kiezen, geeft de gebruiker de keuze van HTTP aan als transport voor wachtrijoverdracht. SRMP Secure maakt het gebruik van HTTPS mogelijk.

Opmerking

De voorbeeldcode is gebaseerd op het transacted sample. Hoe u een bericht naar de wachtrij verzendt en een bericht van de wachtrij ontvangt met behulp van SRMP, is hetzelfde als het verzenden en ontvangen van berichten met behulp van een systeemeigen protocol.

De configuratie voor de client wordt gewijzigd om de keuze van het protocol voor wachtrijoverdracht aan te geven. Het protocol voor wachtrijoverdracht kan een van systeemeigen, SRMP of SrmpSecure zijn. Standaard is het overdrachtsprotocol systeemeigen. De client en service geven in de configuratie op voor het gebruik van SRMP in dit voorbeeld.

Er gelden beperkingen voor SRMP met betrekking tot transportbeveiliging. Voor de standaard MSMQ-transportbeveiliging is Active Directory vereist dat de verzendende wachtrijbeheerder en de ontvangende wachtrijbeheerder zich in hetzelfde Windows-domein bevinden. Dit is niet mogelijk bij het verzenden van berichten over een HTTP-grens. Als zodanig werkt de standaard transportbeveiliging niet. De transportbeveiliging moet worden ingesteld op Certificaat als transportbeveiliging gewenst is. Berichtbeveiliging kan ook worden gebruikt om het bericht te beveiligen. In dit voorbeeld is zowel transport- als berichtbeveiliging uitgeschakeld om SRMP-berichten te illustreren.

<?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" />
        </binding>
      </netMsmqBinding>
    </bindings>
  </system.serviceModel>

</configuration>

Het uitvoeren van het voorbeeld levert de volgende uitvoer op.

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