{"id":1177,"date":"2011-06-11T08:53:35","date_gmt":"2011-06-11T07:53:35","guid":{"rendered":"http:\/\/soci.hu\/blog\/?p=1177"},"modified":"2011-06-11T08:55:10","modified_gmt":"2011-06-11T07:55:10","slug":"message-alapu-lob-app-tervezes","status":"publish","type":"post","link":"https:\/\/soci.hu\/blog\/index.php\/2011\/06\/11\/message-alapu-lob-app-tervezes\/","title":{"rendered":"Message alap\u00fa LOB app tervez\u00e9s"},"content":{"rendered":"<p>Pr\u00f3b\u00e1lom megt\u00f6rni magamban a megszokott gondolkod\u00e1si s\u00e9m\u00e1kat. Tervezek egy nagy, t\u00f6bbr\u00e9teg\u0171 LOB alkalmaz\u00e1st. A szervizr\u00e9tegnek els\u0151dlegesen a WPF rich klienst kell kiszolg\u00e1lni, de j\u00f3 lenne, ha mobil kliensek is tudn\u00e1k ezt fogyasztani.<br \/>\nHa a szerviz interf\u00e9sz finom felbont\u00e1s\u00fa, sok kicsi met\u00f3dussal, akkor a kommunik\u00e1ci\u00f3 sok id\u0151t rabol el, lass\u00fa lesz az app (chatty interf\u00e9sz).<br \/>\nHa durva felbont\u00e1s\u00fa (chunky), akkor megvan a vesz\u00e9lye, hogy a fogyaszt\u00f3 WPF app formjaihoz lesz illesztve, c\u00e9lir\u00e1nyosan, \u00edgy akkor meg mobil kliensek nem fogj\u00e1k tudni hat\u00e9konyan fogyasztani.<br \/>\nEgy \u00e9rdekes alternat\u00edv\u00e1t l\u00e1ttam a probl\u00e9ma felold\u00e1s\u00e1ra <a href=\"http:\/\/msdn.microsoft.com\/en-us\/magazine\/ff796225.aspx\">itt<\/a> \u00e9s <a href=\"http:\/\/msdn.microsoft.com\/en-us\/magazine\/ff872394.aspx\">itt<\/a>.<br \/>\nEbben az \u00f6sszes kliens-szerviz kommunik\u00e1ci\u00f3 message alap\u00fa, teljesen aszinkron. Egy kit\u00f6lt\u00f6tt form adatait elk\u00fcldik egy queueba, a szerver pedig egy m\u00e1sik \u00fczenettel v\u00e1laszol erre. Azaz a kliens alapjaiban aszinkron, \u00e9s a v\u00e1laszok esem\u00e9nyek form\u00e1j\u00e1ban j\u00f6nnek vissza.<br \/>\nA message alap\u00fa kommunik\u00e1ci\u00f3 nagy el\u0151nye, hogy az \u00fczeneteket \u00f6ssze lehet nyal\u00e1bolni, \u00e9s egyben elk\u00fcldeni. \u00cdgy a szerviz lehet finom felbont\u00e1s\u00fa, de a kommunik\u00e1ci\u00f3 m\u00e9gis gyors, nem sok kis darabb\u00f3l \u00e1ll. \u00c9rthet\u0151en ezt szinkron, rpc jelleg\u0171 szerviz h\u00edv\u00e1sokkal nem lehet megcsin\u00e1lni.<br \/>\nEz a fajta queued, service bus alap\u00fa gondolkod\u00e1sm\u00f3d szokatlan nekem, de nagyon szimpatikus. Van valakinek tapasztalata ilyen rendszer tervez\u00e9s\u00e9vel? B\u00e1rmilyen url, pointer, k\u00f6nyv, szem\u00e9lyes tapasztalat \u00e9rdekelne. \u00dagy \u00e9rzem nagy dolgokat lehet ezzel \u00f6sszerakni, csak meg kell alaposan \u00e9rtenem.<\/p>\n<p>M\u00e9g egy gondolat. WCF proxyk haszn\u00e1lat\u00e1val az alapban message alap\u00fa, asszinkron k\u00e9r\u00e9s-v\u00e1laszokb\u00f3l \u00f6sszeraknak egy RPC jelleg\u0171 kommunik\u00e1ci\u00f3t, \u00fagy, hogy a kliens v\u00e1r a szerver v\u00e1lasz\u00e1ra. Azt\u00e1n a kliens kedv\u00e9\u00e9rt, hogy ne blokkoljuk le a GUIt csin\u00e1lunk h\u00e1tt\u00e9rsz\u00e1lat, ahol bev\u00e1rjuk a szerviz v\u00e1laszra v\u00e1r\u00f3 sz\u00e1lat. :)<br \/>\nMi\u00e9rt nem haszn\u00e1lunk eleve aszinkron \u00fczenetv\u00e1lt\u00e1sokat, \u00e9s akkor sokkal egyszer\u0171bb lesz a k\u00e9p. A kliens bepost\u00e1zza a k\u00e9r\u00e9st a buszra, \u00e9s megy tov\u00e1bb. Amikor a v\u00e1lasz megj\u00f6n, akkor meg err\u0151l esem\u00e9nyben \u00e9rtes\u00fcl. Nyilv\u00e1n itt is vannak h\u00e1tt\u00e9rsz\u00e1lak, hisz ki fogadn\u00e1 akkor a szervert\u0151l j\u00f6v\u0151 v\u00e1laszt, \u00e9s ki h\u00edvn\u00e1 vissza a kliens esem\u00e9nyeken kereszt\u00fcl, de valahogy akkor is tiszt\u00e1bbnak t\u0171nik a k\u00e9p, mint az er\u0151ltetett RCP-jelleg\u0171 m\u00f3dszern\u00e9l. Nem?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pr\u00f3b\u00e1lom megt\u00f6rni magamban a megszokott gondolkod\u00e1si s\u00e9m\u00e1kat. Tervezek egy nagy, t\u00f6bbr\u00e9teg\u0171 LOB alkalmaz\u00e1st. A szervizr\u00e9tegnek els\u0151dlegesen a WPF rich klienst kell kiszolg\u00e1lni,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,49,13,4],"tags":[],"class_list":["post-1177","post","type-post","status-publish","format-standard","hentry","category-net","category-architektura","category-design","category-szakmai-elet"],"_links":{"self":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1177","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=1177"}],"version-history":[{"count":3,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1177\/revisions"}],"predecessor-version":[{"id":1180,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1177\/revisions\/1180"}],"wp:attachment":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=1177"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=1177"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=1177"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}