SRMP

Ukázka SRMP ukazuje, jak provádět transactovanou komunikaci ve frontě pomocí služby Řízení front zpráv (MSMQ) přes PROTOKOL HTTP.

Při frontové komunikaci klient komunikuje pomocí fronty se službou. Přesněji řečeno, klient odesílá zprávy do fronty. Služba přijímá zprávy z fronty. Služba a klient tedy nemusí být spuštěny současně, aby mohly komunikovat pomocí fronty.

MSMQ umožňuje použití protokolu HTTP (včetně použití PROTOKOLU HTTPS) k odesílání zpráv do fronty. V tomto příkladu předvedeme použití komunikace ve frontě pomocí Windows Communication Foundation (WCF) a jak odesílat zprávy prostřednictvím protokolu HTTP. MSMQ používá protokol s názvem SRMP, což je protokol založený na protokolu SOAP pro komunikaci přes PROTOKOL HTTP.

Jak nastavit, sestavit a spustit ukázku

  1. Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.

  2. Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.

  3. Pokud chcete spustit ukázku v konfiguraci pro jeden počítač nebo pro více počítačů, postupujte podle pokynů v Spuštění ukázek Windows Communication Foundation.

  4. Před spuštěním ukázky v části Přidat nebo odebrat součásti systému Windows se ujistěte, že je msMQ nainstalovaný s podporou PROTOKOLU HTTP. Instalace podpory HTTP automaticky nainstaluje internetovou informační službu (IIS) a přidá podporu protokolu ve službě IIS pro MSMQ.

  5. Pokud chcete mít jistotu, že se pro komunikaci používá protokol HTTP, můžete povolit, aby služba MSMQ běžela v posíleném režimu. Tím se zajistí, že žádné zprávy do žádné fronty hostované na počítači nebudou moct dorazit pomocí přenosu jiného typu než HTTP.

  6. Po výběru msMQ ke spuštění v posílené režimu vyžaduje počítač opětovné spuštění v systému Windows Server 2003.

  7. Spusťte službu.

  8. Spusťte klienta. Ujistěte se, že změníte adresu koncového bodu, aby směřovala k názvu počítače nebo IP adrese namísto localhost. Klient odešle zprávu a ukončí ji.

Požadavky

Chcete-li spustit tuto ukázku, musí být služba IIS nainstalovaná na službě i na klientských počítačích kromě MSMQ.

Demonstruje

Ukázka ukazuje odesílání zpráv ve frontě WCF pomocí MSMQ přes HTTP. Tomu se také říká zasílání zpráv SRMP. Když se odešle zpráva ve frontě, MSMQ na odesílajícím počítači přenese zprávy k správci front přijímajícího počítače přes transportní protokoly TCP nebo HTTP. Když uživatel zvolí SRMP, označuje tím volbu HTTP jako transport pro přenášení fronty. Protokol SRMP Secure umožňuje použití protokolu HTTPS.

Příklad

Vzorový kód je založený na transakční ukázce. Způsob odeslání zprávy do fronty a přijetí zprávy z fronty pomocí SRMP je stejný jako odesílání a příjem zpráv pomocí nativního protokolu.

Konfigurace klienta se změní tak, aby označí volbu protokolu pro přenos fronty. Protokol pro přenos fronty může být jedním z nativních protokolů, SRMP nebo SrmpSecure. Ve výchozím nastavení je přenosový protokol nativní. Klient a služba v konfiguraci určují použití SRMP v tomto příkladu.

V souvislosti s bezpečností dopravy existují omezení SRMP. Výchozí zabezpečení přenosu MSMQ vyžaduje službu Active Directory, která vyžaduje, aby správce odesílající fronty a přijímající správce front byly umístěny ve stejné doméně Windows. To není možné při odesílání zpráv přes hranice HTTP. Výchozí zabezpečení přenosu proto nefunguje. Pokud potřebujete zabezpečení přenosu, musí být zabezpečení přenosu nastaveno na certifikát. Zabezpečení zpráv lze také použít k zabezpečení zprávy. V této ukázce je přenos i zabezpečení zpráv vypnuté, aby bylo možné znázornit zasílání zpráv 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" />
        </binding>
      </netMsmqBinding>
    </bindings>
  </system.serviceModel>

</configuration>

Spuštění ukázky vrátí následující výstup.

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