Poprzedni wpis dotyczący komunikacji osmotycznej został skomentowany na innym blogu („Komunikacja osmotyczna czyli po Brzytwie przypadków użycia” na it-consulting.pl/blog), ze wskazaniem, że „komunikacja osmotyczna” to inna nazwa dla wzorca „publish/subscribe”. Muszę przyznać, że nie do końca się mogę zgodzić.
Należy zwrócić uwagę na pojęcie „Subscriber” – oznacza ono, że odbiorca podłączył się do huba, rozdzielnika, czy tematu. „Publisher” określa kto i do czego może się „subscriber” podłączyć. Komunikacja jest jednokierunkowa i wskazuje na pewne rozdzielenie „publikującego” oraz „subskrybującego”, o czym można poczytać na stronach MSDN.
W przypadku komunikacji osmotycznej jest mowa bardziej o dynamicznych rozwiązaniach, gdzie „odbiorcy” nie subskrybowali danej informacji, a jedynie reagują na nią bądź nie. Komunikacja jest w takiej sytuacji dwukierunkowa i nie ma określenia kto, czym może się zainteresować i czy może się wypowiedzieć. Reakcja odbiorcy może spowodować dalszą reakcję innych osób. O ile dobrze rozumiem w przypadku modelu „publish/subscribe” odbiorca komunikatu musiałby określić ponownie swoich „subscriber’ów”.
Moim zdaniem Alistair Cockbourn spojrzał z wyższego poziomu abstrakcji i nie skupił się na rozwiązaniu systemowym. Rozwiązanie z wzorcem „publish/subscribe” umiejscawia rozważania na poziomie rozwiązań informatycznych, wspierane przez odpowiednie modele, narzędzia, opisy wymagań. Jednakże nie zawsze o to chodzi.
Dlatego też, brzytwa Ockhama raczej nie znajduje tutaj zastosowania – trudno mówić o powieleniu bytów. Jednakże zaznaczam, że jest to moja opinia. Mogę się jedynie zgodzić, że od komunikacji osmotycznej możemy przejść do wskazanego wzorca, choć można by spróbować także poszukać innych rozwiązań „biznesowych” wspominanych przy metodach zwinnych.
„Należy zwrócić uwagę na pojęcie „Subscriber” – oznacza ono, że odbiorca podłączył się do huba, rozdzielnika, czy tematu. „Publisher” określa kto i do czego może się „subscriber” podłączyć.”
to wcale tego nie oznacza… to oznacza tylko tyle ktoś czegoś nasłuchuje w „jakimś środowisku”, wychodząc na spacer do niczego się nie „podłączamy” a mimo to nasłuchujemy…
Cytując za MSDN: „Enable listening applications to subscribe to specific messages. Create a mechanism that sends messages to all interested subscribers” odnośnie wzorca Publish/Subscribe…”. Opis poszczególnych rozwiązań wskazuje o pewnym powiązaniu nadawcy i odbiorcy w tym kontekście. Istnieje narzędzie, które wie który subscriber jest zainteresowany danym komunikatem. Podany przykład w komentarzu pasuje właśnie do komunikacji osmotycznej, co bardziej przemawia, bo można to łatwo zobrazować. Komunikacja osmotyczna wskazuje, że komunikat trafia także do niezainteresowanych – to jak z ogłoszeniem z jadącego samochodu…
„wskazuje o pewnym powiązaniu nadawcy i odbiorcy”
to tylko implementacja, system tym się różni od „natury”, że „wszystko trzeba mu pokazać”. Moim zdaniem wystarczy uznać, że „system” to model czegoś (czyli pewne uproszczenie) i owa „osmotyczność” w moich oczach staje się „ponownym odkryciem koła”. Ale to chyba dywagacje filozoficzne 🙂
Aha… sugeruje przy okazji osmotyczności poznanie wzorca „obserwator”… wiele mówi w tej kwestii
I tu się zgodzę.
[…] sobię sprawę, że stosując brzytwę Ockhama nie powininem tego robić, a mówiąc o procesie, raczej trudno mówić o projekcie. Jednakże […]
[…] typu i wskazuje jakie są wejścia (ograniczony ich zakres). To trochę przypomina wzorzec Publish/Subscribe, w którym proces „ogłasza” kto i co może w nim wykonać, a odbiorca (Klient) podłączy się […]