Page 1 of 1

Synchronizace se SkyDrive - kdy nejlépe provést v kódu?

Posted: Sat Jul 14, 2012 9:50
by Petrroll
Zdravím,
snažím se do své aplikace implemtnovat možnost automatické synchronizace na SkyDrive. Ta aktuálně funguje tak, že se data uloží do .xml a odešlou skrze LiveSDK na server.

Problém je, kdy data odesílat / kdy je přijímat. Vzhledem tomu, že asynchroní odesílání chivlku trvá, tak nemůžu data uložit a odeslat při odchycení 'closing' a 'deactivated' v App.

Kvůli nedostatečnej inicializaci ostatních částí také nemohu data načíst v 'launching' a 'resume' (nebo jak to je). U MainPage_loaded mi zas s načítáním přijde trochu pozdě. Otázka je tedy, kdy je to podle Vás nejlepší.

//případně ještě jak elegantně vyřešit aby se vzala lokální data, když se stáhnou nějaká špatná.

Synchronizace se SkyDrive - kdy nejlépe provést v kódu?

Posted: Sat Jul 14, 2012 19:47
by Igor Kulman
Pri inicializácií ViewModelu načítaj XML z IsoStore a inicializuje sťahovanie zo SkyDrive. Keď ti dorazí XML zo SkyDrive tak zisti, či sú v ňom nejaké zmeny oproti načitanému a ak áno, ponúkni používateľovi aktualizáciu.

Ukladanie by bolo ideálne priebežne, ak to XML nie je nejaké obrovské, ale ukladať ho môžeš samozrejme zazipované, tým výrazne znížiš traffic.

Synchronizace se SkyDrive - kdy nejlépe provést v kódu?

Posted: Mon Jul 16, 2012 17:02
by Petrroll
Ok, tak nějak jsem se to pokoušel implemtnovat a trochu jsem narazil.

Můj systém zálohy funguje víceméně tak, že serializuji data do .xml na IsolatedStorage a ten pak uploaduji na server. Problém je, že v aplikaci může nastat více změn poměrně rychle po sobě a je tak velká šance, že nová změna nastane, zatímco se ta první odesílá, což následně shodí aplikaci (nemůžu zapisovat do souboru jehož stream se odesílá).

Odbobný problém mám při aktualizaci ze SkyDrive, načtení (ačkoliv malého xml) trvá poměrně dlouho (1-2sekundy) za kterou uživatel v pohodě může stihnout něco změnit -> což může znovu vyvolat error.

Synchronizace se SkyDrive - kdy nejlépe provést v kódu?

Posted: Mon Jul 16, 2012 17:45
by Igor Kulman
Nechápem, to vážne načítavaš a odosielaš tú istú štruktúru, do ktorej ti používateľ zapisuje? Teda rovnakú štruktúru ti zapisuje používateľ aj kód, ktorý ťahá dáta zo SkyDrive? To je choré. Immutabilia je skvelá vec, nebráň sa jej :)

Ppp->Skydrive
vytvor si kópiu dát, ktoré chceš odoslať, serializuj do XML a zaraď do fronty na odosielanie na SkyDrive.

Skydrive->App
Načítaj XML zo SkyDrive, deserializuj a porovnaj výslednú štruktúru s tou v aplikácií. Jednoduché.

Synchronizace se SkyDrive - kdy nejlépe provést v kódu?

Posted: Mon Jul 16, 2012 18:09
by Petrroll
Pravda, nebyl to zrovna nejrobustnější návrch, ale zas asi nejjednošušší a z hlediska kódu nejkratší. Chvíli jsem se snažil o serializaci do streamu, který rovnou odešlu (tj. jsem se chtěl zbavit nutnosti první ukládat to ISstorage), bohužel jsem se zasekl na problémech se Streamy (moc jsem s nimi zatím nepracoval).
Nicméně podívám se na to a upravím to.

Synchronizace se SkyDrive - kdy nejlépe provést v kódu?

Posted: Mon Jul 16, 2012 19:45
by Petrroll
Ok, tak už na tom pracuju a narazil jsem na drobný problém. Více informací zde:
http://stackoverflow.com/questions/1151 ... ory-stream" onclick="window.open(this.href);return false;

//prosím odpovězte tam, přeci jen na to třeba někdo také narazí.
///A odhlédněte od úrovně angličtiny, nepsal jsem to s důrazem na gramatiku.