Megosztás:


SRMP

Az SRMP-minta bemutatja, hogyan hajthat végre tranzakciós üzenetsoros kommunikációt a Message Queuing (MSMQ) HTTP-n keresztüli használatával.

Az üzenetsoros kommunikáció során az ügyfél üzenetsor használatával kommunikál a szolgáltatással. Pontosabban az ügyfél üzeneteket küld egy üzenetsorba. A szolgáltatás üzeneteket fogad az üzenetsorból. A szolgáltatásnak és az ügyfélnek ezért nem kell egyszerre futnia ahhoz, hogy üzenetsor használatával kommunikáljon.

Az MSMQ lehetővé teszi a HTTP használatát (beleértve a HTTPS használatát) üzenetek üzenetsorba való küldésére. Ebben a példában a Windows Communication Foundation (WCF) üzenetsoros kommunikációját és az üzenetek HTTP-n keresztüli küldését mutatjuk be. Az MSMQ egy SRMP nevű protokollt használ, amely egy SOAP-alapú protokoll a HTTP-n keresztüli kommunikációhoz.

A példa beállítása, elkészítése és futtatása

  1. Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták One-Time beállítási eljárását.

  2. A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse Windows Communication Foundation-mintákcímű témakör utasításait.

  3. Ha a mintát egy vagy több gép közötti konfigurációban szeretné futtatni, kövesse A Windows Communication Foundation-minták futtatásacímű témakör utasításait.

  4. Mielőtt futtatja a mintát a Windows-összetevők hozzáadása/eltávolítása területen, győződjön meg arról, hogy az MSMQ HTTP-támogatással van telepítve. A HTTP-támogatás telepítése automatikusan telepíti az Internet Information Servicest (IIS), és hozzáadja a protokolltámogatást az IIS-ben az MSMQ-hoz.

  5. Ha biztos szeretne lenni abban, hogy a HTTP a kommunikációhoz van használva, engedélyezheti az MSMQ számára, hogy megkeményített módban fusson. Ez biztosítja, hogy a gépen üzemeltetett üzenetsorba érkező üzenetek ne érkezhessenek http-n kívüli átvitelsel.

  6. Miután kiválasztotta az MSMQ-t, hogy megkeményített módban fusson, a gépnek újra kell indítania a Windows Server 2003-at.

  7. Futtassa a szolgáltatást.

  8. Indítsa el a klienst. Győződjön meg arról, hogy a végpont címét úgy módosítja, hogy a localhost helyett a gép nevére vagy IP-címére mutasson. Az ügyfél üzenetet küld, és kilép.

Követelmények

A minta futtatásához az IIS-t az MSMQ mellett a szolgáltatásra és az ügyfélszámítógépekre is telepíteni kell.

Megmutatja

A minta bemutatja, hogy a WCF-üzenetsorba helyezett üzeneteket MSMQ használatával HTTP-n keresztül küldi el. Ezt SRMP-üzenetküldésnek is nevezik. Üzenetsorba helyezett üzenet küldésekor az MSMQ a küldő gépen TCP- vagy HTTP-átvitelen keresztül továbbítja az üzeneteket a fogadó üzenetsor-kezelőnek. Az SRMP kiválasztásával a felhasználó a HTTP-t jelöli az üzenetsor-átvitel átviteleként. Az SRMP Secure lehetővé teszi a HTTPS használatát.

példa

A mintakód a tranzakció-alapú mintán alapul. Az, hogy hogyan küldhet üzenetet az üzenetsornak, és hogyan fogadhat üzenetet az üzenetsorból az SRMP használatával, ugyanaz, mint az üzenetek natív protokoll használatával történő küldése és fogadása.

Az ügyfél konfigurációja úgy módosul, hogy jelezze az üzenetsor-átviteli protokoll kiválasztását. Az üzenetsor-átviteli protokoll lehet natív, SRMP vagy SrmpSecure. Alapértelmezés szerint az átviteli protokoll natív. Ebben a példában az ügyfél és a szolgáltatás a konfigurációban az SRMP használatát specifikálják.

Az SRMP-nek a szállítási biztonságra vonatkozó korlátozásai vannak. Az alapértelmezett MSMQ átviteli biztonsághoz az Active Directory szükséges, amely megköveteli, hogy a küldő üzenetsor-kezelő és a fogadó üzenetsor-kezelő ugyanabban a Windows-tartományban legyen. Ez nem lehetséges, ha http-határon keresztül küld üzeneteket. Ezért az alapértelmezett átviteli biztonság nem működik. Az átviteli biztonságot tanúsítványra kell állítani, ha az átviteli biztonságra van szükség. Az üzenet biztonsága az üzenet védelmére is használható. Ebben a mintában az átvitel és az üzenetbiztonság is ki van kapcsolva az SRMP-üzenetküldés szemléltetéséhez.

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

A minta futtatása a következő kimenetet eredményezi.

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