Sdílet prostřednictvím


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.

Ve frontě komunikace klient komunikuje se službou pomocí fronty. 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 proto nemusí být spuštěna ve stejnou dobu, aby komunikovaly 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ě windows Communication Foundation (WCF) a způsobu odesílání zpráv přes protokol HTTP. MSMQ používá protokol s názvem SRMP, což je protokol založený na protokolu SOAP pro komunikaci přes PROTOKOL HTTP.

Nastavení, sestavení a spuštění ukázky

  1. Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.

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

  3. Pokud chcete spustit ukázku v konfiguraci s jedním nebo více počítači, postupujte podle pokynů v části 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 Internetová informační služba (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 tak, aby odkazovat na název počítače nebo IP adresu mí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 do přijímajícího správce front přes přenos TCP nebo HTTP. Když zvolíte SRMP, uživatel označí volbu PROTOKOLU HTTP jako přenos fronty. Protokol SRMP Secure umožňuje použití protokolu HTTPS.

Příklad

Vzorový kód je založený na transactované 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 se zabezpečením přenosu 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