Bronikowski.com - Emil Oppeln-Bronikowski: Kod & Słowa

Skip navigation

Bronikowski.com G+

Jedni pchają, inni ciągną

Posted in µGeek | 7 Comments

Rozważmy hipotetyczną sytuację: chcemy się napić z kolegą. Sytuacja ta jest hipotetyczna dla części z Was, dla innych to czwartek, 11:30. Mamy dwa scenariusze.

Scenariusz pierwszy

Wsiadasz w komunikację miejską, pokonujesz n przystanków. Wysiadasz. Wchodzisz na klatkę i łomocesz do drzwi. Kolega otwiera, a na pytanie o wspólne picie mówi, że jeszcze od wczoraj mu nie zeszło. Wracasz więc do domu, rzucasz palto i czekasz cały kwadrans. Zakładasz palto i wsiadasz w komunikację miejską. Wysiadasz, klatka, a kolega nadal to samo. Jaki debil.

Wracasz, wstawiasz wodę, zjadasz torebkę Sagi i wpijasz duszkiem wrzątek. Kierowca komunikacji miejskiej kiwa Ci głową i pyta, czy tam, gdzie zwykle. Tam. Tym razem nikt nie odpowiada. Jedziesz do szpitala na płukanie żołądka po herbacie Saga. Wsiadasz w komunikacje miejską, siedzący obok Syzyf kręci głową z dezaprobatą.

Dwa dni później kolega otwiera ci i zaprasza szerokim gestem. Wypijasz kolejkę i wsiadasz po kwadransie w komunikację miejską.

Scenariusz drugi

Wsiadasz w komunikację miejską, pokonujesz n przystanków. Wysiadasz. Wchodzisz na klatkę i łomocesz do drzwi. Kolega otwiera, a na pytanie o wspólne picie mówi, że jeszcze od wczoraj mu nie zeszło. Mówisz

– To weź zadzwoń jak ogarniesz, OK?
– Dobra

Kolega dzwoni i jedziesz się napić.

Pierwszy scenariusz ssał, nie tylko jako sposób na życie, ale także jako metodologia. W podobny sposób zachowuje się wiele aplikacji klienckich.

  1. Odczekaj interwał
  2. Sprawdź, czy jest nowa poczta
  3. Jest? Jeśli jest, zapisz. Nie? Idziesz na start, nie otrzymujesz $200.

W drugi przypadku mówimy o Push. Pewnie zauważyliście, że Wasz mądrytelefon albo tablet piszczy niecierpliwie natychmiast po otrzymaniu wiadomości? To dlatego, że serwer po otrzymaniu informacji, które są dla konkretnego klienta informuje go o tym fakcie. Nie ma więc interwału pomiędzy przychodzącą wiadomością, a „świadomością” klienta o tym fakcie.

Gdybyście projektowali jakąś prostą aplikację, gdzie jest wyraźny podział między częścią serwującą dane, a klientem możecie wprowadzić proste modyfikacje, które pozwolą Wam uniknąć tej całej komunikacji publicznej via TCP/IP.

Serwer powinien móc zapisać ścieżkę „do oddzwonienia” dla konkretnego klienta. Kiedy pojawia się nowa informacja, serwer opakowuje nowe dane i przesyła je do klienta, który może natychmiast zareagować. Przykładowy dialog:

– Klient: Dzień dobry, to moje dane autoryzacyjne
– Serwer: OK, widzę. Czego?
– K: Jak pojawi się coś dla mnie to zapamiętaj, że masz to wysłać na http://bronikowski.com/flaszka/
S: Pamiętam. Idź już.

A potem:

– S: O, są nowe informacje o flaszkach, których wg dostępnych logów nie słałem do klienta. Gdzie to słać? A, tam.
– K: O, dane!

Notkę napisałem głównie żeby się zawstydzić, bo znów zaprojektowałem coś, co robi Pull. Jestem leniwym i durnym draniem, ale to już wiedzieliście.

7 Responses to Jedni pchają, inni ciągną

  1. Marek says:

    Jestem prawie pewien, że serwer nie może dosłownie oddzwonić do klienta – szczególnie jeżeli klient nie ma publicznego ip. Push chyba (?) działa tylko dlatego, że połączenie po pierwszym handshake nie jest urywane.

    Odpowiednikiem tego zachowania w barwnej metaforze jest to, co robiły nasze matki gdy obiad był gotowy – nie chodziłeś i nie pytałeś co 15 min czy obiad jest gotowy, tylko mieliście otwarty kanał komunikacji (korytarz) przez który nie przechodziły dane póki obiad nie był już ciepły.

    Ciekaw jestem, czy w świecie dzisiejszych firewalli dało by się wyczarować prawdziwe “oddzwanianie” do komputera klienta (zakładając że nie ma publicznego IP (także w VPN) i nie robi za serwer nasłuchujący na jakimś porcie).

  2. Emil Oppeln-Bronikowski says:

    @Marek

    Chciałem wytłumaczyć ogólną ideę, nie całą technologię, która stoi za. No i weź pod uwagę, że na ten przykład w moim przypadku oba serwisy stoją w jednej sieci, więc nie mam większego problemu.

    To, o czym piszesz rzeczywiście dotyczy klientów “odseparowanych” np. telefonu z aplikacją GMail, który zwisa sobie z jakiegoś 3G.

    Są jeszcze rzeczy pomiędzy: push Blackberry opierał się na infrastrukturze operatora.

  3. Metafora z flaszką świetna, ukradnę to na jakąś swoją prezentację o Push, dzięki :)

  4. Emil Oppeln-Bronikowski says:

    @Andrzej

    Oczywiście. Tylko rzuć mi linkę na Twitterze. ;-)

  5. Marek says:

    @Emil

    Uproszczenie w celu jasnego wytłumaczenia idei jest całkowicie spoko, broń boże nie chciałem się tego czepiać (ani niczego w sumie). Ot, głośno myślałem a wyszedłem troche assholish ;). Sorry.

  6. Emil Oppeln-Bronikowski says:

    @Marek

    No co Ty, Twój komentarz był absolutnie na temat. Jestem tylko jakimś gościem z instalacją WordPressa, nie wyrocznią. Poza tym bardziej zainteresowany czytelnik może od razu zerknąć dalej po lekturze Twojego komcia, win-win.

  7. Docelowo może styknąć IPv6, o ile nie rozgrabimy go tak rabunkowo, jak się to już zapowiada ;D

    Bo aktualnie to na otwartych/wiszących połączeniach i innych takich leci, c’nie?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Hej, mamy 2012! ...a Twój Internet Explorer ma już ponad 10 lat!

Zaktualizuj natychmiast przeglądarkę lub zainstaluj którąś z alternatywnych:

...po czym wróć na naszą stronę :)