Ich habe diesen Artikel durchgesehen Ссылка um Bindungsoptionen zu wählen.
wo ich einen ungewöhnlichen Zweifel hatte, was mit
gemeint istOffline oder nicht verbundene Interaktion, wählen Sie die NetMsmqBinding
Bedeutet das auch, wenn der Dienst noch keinen Client ausführt, der den Dienst verwendet?
Können Sie ein Beispiel aus der realen Welt teilen?
Die 2 Bindungen sind radikal verschieden.
NetTcpBinding
kann als ein proprietäres MS-Format (normalerweise binär) angesehen werden, das dem Konzept von RPC
ähnlich ist (z. B. kann es verwendet werden, um .NET Remoting
zu ersetzen). Es ist synchron, d. H. Sowohl der Client als auch der Server müssen gleichzeitig online sein, und der Client erhält (fast) sofort eine Antwort.
MSMQ
ist eine Message Oriented Middleware-Lösung von Microsoft, die sich um asynchrone Warteschlangen dreht - z. Wenn der Zielserver offline ist, wenn der Client eine Nachricht sendet, wird die Nachricht auf dem Client in die Warteschlange gestellt, bis der Server wieder online ist. Jede Warteschlange ist nur eine Möglichkeit, obwohl eine bidirektionale Kommunikation über eine zweite Warteschlange von Server zu Client erreicht werden kann. Das Senden von WCF-MSMQ-Nachrichten erfordert, dass der Dienst MSMQ
auf dem Client installiert wird. Nachrichten in der Warteschlange können eine Zustellungs-Zeitüberschreitung aufweisen. Andernfalls wird sie in einer entsprechenden Warteschlange für nicht zustellbare Nachrichten platziert.
Beispiele aus der realen Welt:
NetTcpBinding
mit binärer Serialisierung für synchrone Hochleistungskommunikationsanforderungen zwischen einem Microsoft WCF-Client und einem Server, z. Hochladen von Dateien, Medien usw. wo Xml
nicht nützlich wäre (sonst würde ich wsHttpBinding
für synchrone Xml
/ SOAP
messaging) verwenden MSMQBinding
mit aktiviertem DTC verwenden, um zuverlässiges Messaging zwischen 2 oder mehr Systemen (z. B. finanziell) zu gewährleisten, wobei mindestens einer der Endpunkte in .Net und ein "kompatibler" Server (nicht unbedingt WCF
) ist. , zB BizTalk
, oder andere EAI
Hubs oder ESB
Busse, die Adapter für MSMQ
haben, zB Bridges existieren zwischen MSMQ and MQSeries
). Nachrichten würden normalerweise in einem Xml
Format vorliegen. TL; DR
Bedeutet das, auch wenn der Dienst noch keinen Client ausführt, der den Dienst verwendet
Ja. Wenn MSMQ
lokal ausgeführt wird, erhält der Client eine sofortige erfolgreiche Antwort (dies zeigt an, dass die Nachricht in die Warteschlange gestellt wurde). Dies bedeutet jedoch nicht, dass die Nachricht erfolgreich vom Server empfangen wurde.