SRMP
W przykładzie SRMP pokazano, jak wykonać komunikację w kolejce w kolejce przy użyciu kolejkowania komunikatów (MSMQ) za pośrednictwem protokołu HTTP.
W komunikacji w kolejce klient komunikuje się z usługą przy użyciu kolejki. Mówiąc dokładniej, klient wysyła komunikaty do kolejki. Usługa odbiera komunikaty z kolejki. W związku z tym usługa i klient nie muszą być uruchomione w tym samym czasie, aby komunikować się przy użyciu kolejki.
Usługa MSMQ umożliwia używanie protokołu HTTP (w tym użycia protokołu HTTPS) do wysyłania komunikatów do kolejki. W tym przykładzie pokazano, jak używać komunikacji w kolejce programu Windows Communication Foundation (WCF) i sposobu wysyłania komunikatów za pośrednictwem protokołu HTTP. Usługa MSMQ używa protokołu o nazwie SRMP, który jest protokołem opartym na protokole SOAP do komunikacji za pośrednictwem protokołu HTTP.
Aby skonfigurować, skompilować i uruchomić przykład
Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.
Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).
Aby uruchomić przykład w konfiguracji pojedynczej lub między maszynami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.
Przed uruchomieniem przykładu w sekcji Dodawanie/usuwanie składników systemu Windows upewnij się, że pakiet MSMQ jest zainstalowany z obsługą protokołu HTTP. Zainstalowanie obsługi protokołu HTTP powoduje automatyczne zainstalowanie usług Internet Information Services (IIS) i dodanie obsługi protokołu w usługach IIS dla usługi MSMQ.
Jeśli chcesz mieć pewność, że protokół HTTP jest używany do komunikacji, możesz włączyć funkcję MSMQ do uruchamiania w trybie wzmocnionym. Gwarantuje to, że żadne komunikaty do żadnej kolejki hostowanej na maszynie mogą być dostarczane przy użyciu transportu innego niż HTTP.
Po wybraniu funkcji MSMQ do uruchomienia w trybie wzmocnionym zabezpieczenia maszyna wymaga ponownego rozruchu w systemie Windows Server 2003.
Uruchom usługę.
Uruchom klienta. Upewnij się, że adres punktu końcowego został zmieniony tak, aby wskazywał nazwę komputera lub adres IP zamiast hosta lokalnego. Klient wysyła komunikat i kończy działanie.
Wymagania
Aby uruchomić ten przykład, usługi IIS muszą być zainstalowane zarówno na maszynach klienckich, jak i na maszynach klienckich oprócz usługi MSMQ.
Demonstracje
W przykładzie pokazano wysyłanie komunikatów w kolejce WCF przy użyciu protokołu MSMQ za pośrednictwem protokołu HTTP. Jest to również nazywane obsługą komunikatów SRMP. Po wysłaniu komunikatu w kolejce usługa MSMQ na maszynie wysyłającej przesyła komunikaty do menedżera kolejki odbierającego za pośrednictwem transportu TCP lub HTTP. Wybierając opcję SRMP, użytkownik wskazuje wybór protokołu HTTP jako transportu do transferu kolejki. Protokół SRMP Secure umożliwia korzystanie z protokołu HTTPS.
Przykład
Przykładowy kod jest oparty na przykładzie z transakcjami. Sposób wysyłania komunikatu do kolejki i odbierania komunikatu z kolejki przy użyciu protokołu SRMP jest taki sam jak wysyłanie i odbieranie komunikatów przy użyciu protokołu natywnego.
Konfiguracja klienta została zmieniona, aby wskazać wybór protokołu transferu kolejki. Protokół transferu kolejek może być jednym z natywnych, SRMP lub SrmpSecure. Domyślnie protokół transferu jest natywny. Klient i usługa określają w konfiguracji, aby używać protokołu SRMP w tym przykładzie.
Istnieją ograniczenia dotyczące protokołu SRMP w odniesieniu do zabezpieczeń transportu. Domyślne zabezpieczenia transportu MSMQ wymagają usługi Active Directory, która wymaga, aby menedżer kolejek wysyłających i menedżer odbierających kolejek znajdował się w tej samej domenie systemu Windows. Nie jest to możliwe podczas wysyłania komunikatów przez granicę HTTP. W związku z tym domyślne zabezpieczenia transportu nie działają. Zabezpieczenia transportu muszą być ustawione na Certyfikat, jeśli wymagane jest bezpieczeństwo transportu. Zabezpieczenia komunikatów mogą być również używane do zabezpieczania wiadomości. W tym przykładzie zabezpieczenia transportu i komunikatów są wyłączone, aby zilustrować komunikaty 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>
Uruchomienie przykładu daje następujące dane wyjściowe.
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