Actor based Web UI rubrika: Návrh

8 Občan
položil/-a 29.7.2015

Aktuálně probíhá boom "kompoziční immutable strukura". Napadlo mě proč naopak ten stav tam nechat a z komponent neudělat actory.
Četl jsem zdroják takového řešení Akka, ale plně jsem ho nepochopil, natož abych prohlédl do důsledů výhod a nevýhod.
Je zdě nějaký profík či nadšenec ze světa Actor based a dokázal by popsat, jak se ui actori skládají a zda by to mělo mít výhody/nevýhody?

odkaz
9 Honza Břešťan
odpověděl/-a 31.7.2015

Actor Model (AM) resi concurrent pristup k nejakemu stavu. Myslim, ze uplne stejne vyhody v jednovlaknovem prostredi JS se daji ziskat enkapsulaci stavu v normalnich objektech, ktere reprezentuji komponenty.

Immutability v UI je pak jen odpovedi na asynchronicitu JS a jeji inherentni slozitost. V prostredi jednoho vlakna pak AM dava vicemene jen zaruky zachovanych invariantu mezi zpracovanim dvou zprav, cehoz se podle me ale da uplne stejne dosahnout i za pomoci normalni funkci, protoze se nebudou vykonavat paralelne. Spravnost tech invariantu musi v obou pripadech autor stejne resit sam, concurrency model uz se pak jen postara o jejich zachovani.

Kompozici potom AM resi stejne jako objekty, akorat u vetsiny AM implementaci je misto jednoducheho new nebo IoC potreba resit vlastni spravu proxy objektu (i kdyz v pripade JS tam bude ta proxy nadbytecna).

V cem by AM implementace mohly trochu pomoct, je error handling. Failovani/zahazovani/znovuvytvareni actoru je vec, ktera sice stoji mimo AM samotny, ale z praktickych duvodu to snad vsechny "vazne" AM implementace nejak resi. Je mnohem pohodlnejsi si nastavit supervisor, ktery mi v pripade chyby znovuvytvori actor v nejakem default stavu, nez abych na kazde urovni nejak resil try/catch a nebo nechal vsechny chyby probublat az do top-level handleru a uzivateli napsal "Neco se pokazilo". Nemam ale zdani, jak si v tomhle stoji JS implementace. Taky mi prijde, ze tohle je vec vhodnejsi spis pro vypocetni nebo IO actory, zatimco UI actor asi moc casto nebude fatalne failovat.

Moje rada zni, ze pokud se v jednovlaknovem JS UI chces drzet mutable stavu jednotlivych komponent, AM neda o moc vic, nez rozumne navrzene objekty s enkapsulovanym stavem.

Pro zobrazení všech 4 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.