Dela via


SRMP

SRMP-exemplet visar hur du utför transacted queued communication med hjälp av Message Queuing (MSMQ) via HTTP.

I kökommunikation kommunicerar klienten till tjänsten med hjälp av en kö. Mer exakt skickar klienten meddelanden till en kö. Tjänsten tar emot meddelanden från kön. Tjänsten och klienten behöver därför inte köras samtidigt för att kommunicera med en kö.

MSMQ möjliggör användning av HTTP (inklusive användning av HTTPS) för att skicka meddelanden till en kö. I det här exemplet visar vi hur du använder kommunikation i Kö i Windows Communication Foundation (WCF) och hur du skickar meddelanden via HTTP. MSMQ använder ett protokoll som kallas SRMP, som är ett SOAP-baserat protokoll för kommunikation via HTTP.

Så här konfigurerar du, skapar och kör exemplet

  1. Kontrollera att du har utfört engångsinstallationsproceduren för Windows Communication Foundation-exempel.

  2. Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.

  3. Om du vill köra exemplet i en konfiguration med en eller flera datorer följer du anvisningarna i Köra Windows Communication Foundation-exempel.

  4. Innan du kör exemplet i Lägg till/ta bort Windows-komponenter kontrollerar du att MSMQ är installerat med HTTP-stöd. Installation av HTTP-stöd installerar automatiskt Internet Information Services (IIS) och lägger till protokollstöd i IIS för MSMQ.

  5. Om du vill vara säker på att HTTP används för kommunikation kan du aktivera MSMQ för att köras i härdat läge. Detta säkerställer att inga meddelanden till någon kö som finns på datorn kan komma med någon icke-HTTP-transport.

  6. När du har valt MSMQ för att köras i härdat läge måste datorn startas om på Windows Server 2003.

  7. Kör tjänsten.

  8. Kör klienten. Se till att du ändrar slutpunktsadressen så att den pekar på datorns namn eller IP-adress i stället för localhost. Klienten skickar ett meddelande och avslutar.

Behov

Om du vill köra det här exemplet måste IIS installeras på både tjänsten och klientdatorerna utöver MSMQ.

Demonstrationer

Exemplet visar hur du skickar WCF-köade meddelanden med MSMQ via HTTP. Detta kallas även för SRMP-meddelanden. När ett köat meddelande skickas överför MSMQ på den sändande datorn meddelandena till den mottagande köhanteraren via TCP- eller HTTP-transport. Genom att välja SRMP anger användaren valet av HTTP som en transport för kööverföring. SRMP Secure möjliggör användning av HTTPS.

Exempel

Exempelkoden baseras på det transacted exemplet. Hur du skickar ett meddelande till kön och tar emot ett meddelande från kön med hjälp av SRMP är detsamma som att skicka och ta emot meddelanden med hjälp av ett internt protokoll.

Konfigurationen för klienten ändras för att ange valet av kööverföringsprotokoll. Protokollet för kööverföring kan vara ett av inbyggt protokoll, SRMP eller SrmpSecure. Som standard är överföringsprotokollet Internt. Klienten och tjänsten anger i konfigurationen att använda SRMP i det här exemplet.

Det finns begränsningar för SRMP när det gäller transportsäkerhet. Standardsäkerheten för MSMQ-transport kräver Active Directory som kräver att den sändande köhanteraren och den mottagande köhanteraren finns i samma Windows-domän. Detta är inte möjligt när du skickar meddelanden över HTTP-gränsen. Därför fungerar inte standardtransportsäkerheten. Transportsäkerheten måste anges till Certifikat om transportsäkerhet önskas. Meddelandesäkerhet kan också användas för att skydda meddelandet. I det här exemplet är både transport- och meddelandesäkerhet inaktiverat för att illustrera SRMP-meddelanden.

<?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>

När du kör exemplet får du följande utdata.

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