IObservable REST klient

Vše okolo vývoje aplikací pro platformy Windows Phone a Windows 10 Mobile
Odpovědět
BEZY
přispěvatel
přispěvatel
Příspěvky: 89
Registrován: čtv srp 30, 2007 2:21
Zařízení: Lumia 925
Bydliště: Praha
Kontaktovat uživatele:

IObservable REST klient

Příspěvek od BEZY »

Zdravím,

chystám se napsat knihovnu pro práci s webovým serverem (typická služba, která poskytuje nějaká data), který má dostupné REST rozhraní. Jelikož jsem si docela oblíbil Reactive Extensions, tak chci využít je a na různé Get... metody vracet IObservable. Nevim ale úplně přesně, jak tu knihovnu uchopit - jakým způsobem ji navrhnout. Vidim několik možností

1) Metody by vracely IObservable<IEnumerable<Typ>>. Je to logické, protože rest požadavek ihned vrátí celou kolekci, tak se tato kolekce volajícímu rovnou předá a ihned se zavolá OnCompleted(), takže by se např. při stránkování musel znovu volat Subscribe()

2) Metody by vracely IObservable<Typ>. Po Subscribe() by se IObservable inicializovala a zůstala by aktivní až do konce běhu programu. Pro stránkování by pak např. mohly existovat další metody, třeba GetNextBatch apod... které by data už sypaly do existujícího proudu.

3) Vykašlat se na IObservable a využít eventů (podle mě nejblbější řešení)

4) Něco jiného? Plus další věc - má cenu použít IObservable na Set... metody (čti REST POST metody, které vrací např. jen jednu strukturu, nebo obecně 1 hodnotu) nebo je to overkill?

Jestli máte někdo zkušenosti s návrhem podobného klienta, podělte se o zkušenosti, já zatim moc zkušeností nemam a využíval jsem jen "naivní" přístup, chci ale navrhnout něco elegantního :) Díky za vaše názory
Igor Kulman
častý přispěvatel
častý přispěvatel
Příspěvky: 228
Registrován: stř bře 28, 2012 12:46
Zařízení: ano

IObservable REST klient

Příspěvek od Igor Kulman »

Trváš na vrátení Typu? Ja som si zvykol, že Restsharp mi vracia IRestRespone a s tým si už naložím, ako uznám za vhodné a často sa rozhodujem podľa HTTP kódu. Môj návrh je preto vracať niečo na štýl IObservable<IRestResponse> a samozrejme spôsobom číslo 2. Spôsob 1 je blbosť, u IObservable ide o to, že sa raz subscribnem a pri každom volaní z webu dostanem odpoveď (ako napríklad pri SOAP službách). Robiť x subscriptions keď to volám x-krát je blbosť. Čo tak spraviť len Rx nadstavbu nad Restsharp?
steelspace
smartmaniak
smartmaniak
Příspěvky: 1094
Registrován: stř lis 24, 2010 22:29
Zařízení: L920, L930, L950 XL, iPhone 7 Plus
Bydliště: Líbeznice

IObservable REST klient

Příspěvek od steelspace »

Poměrně zajímavá alternativa by mohly být Reactive Extensions (Rx) http://stackoverflow.com/questions/2833 ... ensions-rx" onclick="window.open(this.href);return false;
Igor Kulman
častý přispěvatel
častý přispěvatel
Příspěvky: 228
Registrován: stř bře 28, 2012 12:46
Zařízení: ano

IObservable REST klient

Příspěvek od Igor Kulman »

steelspace píše:Poměrně zajímavá alternativa by mohly být Reactive Extensions (Rx) http://stackoverflow.com/questions/2833 ... ensions-rx" onclick="window.open(this.href);return false;
??? Veď sa o Rx bavíme celý čas.
BEZY
přispěvatel
přispěvatel
Příspěvky: 89
Registrován: čtv srp 30, 2007 2:21
Zařízení: Lumia 925
Bydliště: Praha
Kontaktovat uživatele:

IObservable REST klient

Příspěvek od BEZY »

Vracet přímo IRestResponse je zajímavej nápad, zamyslim se nad tim :)

Jinak jsem stejnou otázku položil i na SO, zatim tam jsou 2 odpovědi, tak můžete klidně komentovat i tam

http://stackoverflow.com/questions/1193 ... est-client" onclick="window.open(this.href);return false;

Doporučení je tam ale opačný - co Subscribtion, to REST request..
Igor Kulman
častý přispěvatel
častý přispěvatel
Příspěvky: 228
Registrován: stř bře 28, 2012 12:46
Zařízení: ano

IObservable REST klient

Příspěvek od Igor Kulman »

Asi som sa zle vyjadril. Myslel tak, že 1 subscription = 1 "zdroj". Teda ak volám stankovaný zdroj by bol vďaka tomu na 1 subscription. (requesty na rôzne "zdroje" majú rôzne subscriptions)
BEZY
přispěvatel
přispěvatel
Příspěvky: 89
Registrován: čtv srp 30, 2007 2:21
Zařízení: Lumia 925
Bydliště: Praha
Kontaktovat uživatele:

IObservable REST klient

Příspěvek od BEZY »

Jasně, to jsem pochopil. Takže zavolat pro každej zdroj Subscribe() a pokud by volající chtěl například další data / další stránku, tak zavolat např. GetNextBatch, prostě ten druhý způsob. Ono to asi i dává větší smysl, protože pokud bych chtěl, aby se např. ta knihovna serveru dotazovala automaticky, třeba přes Timer, tak je blbost aby ta Observable sekvence ihned po vykonání požadavku skončila. Thx
Odpovědět

Zpět na „Programování a vývoj“

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti