Aracılığıyla paylaş


SRMP

SRMP örneği, HTTP üzerinden Message Queuing (MSMQ) kullanarak işlem yapılmış kuyruğa alınmış iletişimin nasıl gerçekleştirileceklerini gösterir.

Kuyruğa alınan iletişimde, istemci bir kuyruk kullanarak hizmetle iletişim kurar. Daha kesin olarak, istemci bir kuyruğa ileti gönderir. Hizmet kuyruktan iletiler alır. Bu nedenle hizmet ve istemcinin kuyruk kullanarak iletişim kurmak için aynı anda çalışması gerekmez.

MSMQ, kuyruğa ileti göndermek için HTTP (HTTPS kullanımı dahil) kullanımını etkinleştirir. Bu örnekte, Windows Communication Foundation (WCF) kuyruğa alınmış iletişimi kullanmayı ve HTTP üzerinden ileti göndermeyi gösteriyoruz. MSMQ, HTTP üzerinden iletişim için SOAP tabanlı bir protokol olan SRMP adlı bir protokol kullanır.

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Windows Communication Foundation Örnekleri için Tek Seferlik Kurulum Yordamı'nı gerçekleştirdiğinizden emin olun.

  2. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örnekleri Oluşturma başlığındaki yönergeleri izleyin.

  3. Örneği tek veya makineler arası bir yapılandırmada çalıştırmak için Windows Communication Foundation Örneklerini Çalıştırma başlığındaki yönergeleri izleyin.

  4. Windows Bileşenlerini Ekle/Kaldır'da örneği çalıştırmadan önce MSMQ'nin HTTP desteğiyle yüklendiğinden emin olun. HTTP desteği yüklendiğinde Internet Information Services (IIS) otomatik olarak yüklenir ve MSMQ için IIS'de protokol desteği eklenir.

  5. HTTP'nin iletişim için kullanıldığından emin olmak istiyorsanız MSMQ'yu sağlamlaştırılmış modda çalışacak şekilde etkinleştirebilirsiniz. Bu, makinede barındırılan herhangi bir kuyruğa hiçbir iletinin HTTP olmayan aktarımlar kullanılarak ulaşmamasını sağlar.

  6. Msmq'yu sağlamlaştırılmış modda çalışacak şekilde seçtikten sonra makine, Windows Server 2003'te yeniden önyükleme gerektirir.

  7. Hizmeti çalıştırın.

  8. İstemciyi çalıştırın. Uç nokta adresini localhost yerine makine adına veya IP adresine işaret eden şekilde değiştirdiğinizden emin olun. İstemci bir ileti gönderir ve çıkar.

Gereksinimler

Bu örneği çalıştırmak için IIS,MSMQ'ya ek olarak hem hizmete hem de istemci makinelere yüklenmelidir.

Gösteriler

Örnek, HTTP üzerinden MSMQ kullanarak WCF kuyruğa alınmış iletilerin gönderilmesini gösterir. Buna SRMP mesajlaşması da denir. Kuyruğa alınmış bir ileti gönderildiğinde, gönderen makinedeki MSMQ iletileri TCP veya HTTP aktarımı üzerinden alıcı kuyruk yöneticisine aktarır. SRMP'yi seçerek kullanıcı, kuyruk aktarımı için aktarım olarak HTTP seçeneğini belirtir. SRMP Secure, HTTPS kullanımını etkinleştirir.

Örnek

Örnek kod, işlem yapılan örneğe dayanır. SRMP kullanarak kuyruğa ileti gönderme ve kuyruktan ileti alma, Yerel protokol kullanarak ileti gönderme ve alma ile aynıdır.

İstemci yapılandırması, kuyruk aktarım protokolünün seçimini gösterecek şekilde değiştirilir. Kuyruk aktarım protokolü Yerel, SRMP veya SrmpSecure'den biri olabilir. Aktarım protokolü varsayılan olarak Yerel'dir. İstemci ve hizmet, bu örnekte SRMP kullanmak için yapılandırmada belirtir.

Aktarım güvenliğiyle ilgili olarak SRMP ile ilgili sınırlamalar vardır. Varsayılan MSMQ aktarım güvenliği, gönderen kuyruk yöneticisinin ve alıcı kuyruk yöneticisinin aynı Windows etki alanında olmasını gerektiren Active Directory gerektirir. BU, HTTP sınırı üzerinden ileti gönderirken mümkün değildir. Bu nedenle, varsayılan aktarım güvenliği çalışmaz. Aktarım güvenliği isteniyorsa aktarım güvenliği Sertifika olarak ayarlanmalıdır. İleti güvenliği, iletinin güvenliğini sağlamak için de kullanılabilir. Bu örnekte, SRMP mesajlaşmasını göstermek için hem aktarım hem de ileti güvenliği kapatılır.

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

Örneği çalıştırmak aşağıdaki çıkışı verir.

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