2013-08-22 28 views
5

Widziałem here (Wikipedia artykuł o IPC), że są to dwie różne rzeczy, ale nawet przeczytaniu każdego z nich dedykowanej strony Wikipedii nie rozumiałem, na czym polega różnica.Message Queue vs. Message Passing

Może ktoś wyjaśnić to wystarczy?

Odpowiedz

-1

Jak ja to widzę, Message Passing opisuje protokół, podczas gdy kolejka komunikatów jest szczegółów wdrażania.

Rozważmy następujący: Aplikacja posiada dobrze zdefiniowany sposób wymiany danych przekazując wiadomości. Oznacza to, że zaimplementowałeś protokół, który opisuje, jakie wiadomości mogą być wysyłane i jak aplikacja na nie reaguje. Oto, co w istocie nazwałbym przekazywaniem wiadomości.

Teraz można wdrożyły to w wielu aspektach.

  • Być może aplikacja została wysłana, aby odebrać wiadomość, przetworzyć ją i przekazać odpowiedź, całkowicie ignorując inne wiadomości przychodzące w tym czasie.
  • Można powiedzieć swoją aplikację do pracy w jednej wiadomości na wątku i za pomocą dedykowanego wątku do słuchania dla przychodzących wiadomości

Kolejka komunikatów byłaby realizacja który odbiera wiadomości z Twojego protokołu dostarczane z przekazywania wiadomości i przechowuje je. To sprawia, że ​​są one dostępne dla wewnętrznych aplikacji, jeden po drugim, w kolejności, w jakiej przybyli. Ale jest o wiele więcej.

  • kolejka może zapytać inne kolejki
  • kolejka może chcieć przekazać pewne wiadomości do innej kolejki
  • jedna kolejka jest odpytywany przez wielu klientów lub do przodu wiadomość do więcej niż jednego klienta

Przesyłanie wiadomości jest po prostu sposobem na powiedzenie: "Mam tę instrukcję lub fragment kodu, który chcę komuś przekazać". Program reprezentujący kolejkę komunikatów jest odbiorcą komunikatów i może stosować do niej dodatkową logikę.

3

Przesyłanie wiadomości jest terminem bardzo ogólnym. Można go rozpatrywać z różnych aspektów, jednym z nich jest sposób przesyłania danych od nadawcy do odbiorcy:

  • Synchronous wiadomość przechodząc: nadawca i odbiorca muszą „spotkać” w ich odpowiednie send/receive operacje, aby dane mogły zostać przesłane. Jest to również nazywane "rendezvous" lub "handshaking". Ta forma przelewu jest prosta, ale może być nieefektywna, ponieważ nadawca może poczekać, nawet jeśli spełnił swój obowiązek i przygotował dane do wysłania.

  • wiadomość Asynchronous przechodząc: nadawca nie czekać na odbiorniku, aby osiągnąć swoje działanie receive raczej pozbywa przygotowanych danych i kontynuuje jego wykonanie. Ta forma transferu nie zmusza nadawcy do czekania, ale stwarza kolejny problem: mogą być wiadomości, które zostały już wysłane, ale jeszcze nie zostały odebrane, i muszą być gdzieś przechowywane. W tym miejscu pojawiają się kolejki wiadomości, które są buforami dla wiadomości w trakcie transportu.

Więc odpowiedź na pytanie jest to, że wiadomość kolejek są używane/potrzebne, gdy wiadomość mijania odbywa się asynchronicznie zamiast synchronicznie.

Powiązane problemy