Abbiamo un'app per Android scritta come Cordova AngularJS SPA, che ora è cresciuta, quindi è necessario aggiungerci un po 'di lavoro, il che significa che dobbiamo migliorare la parte di sincronizzazione dell'app. L'app è principalmente utilizzata offline. Non posso fornire dettagli sull'utilizzo aziendale, ma la struttura dei dati e i vincoli possono essere illustrati con un'attività di un meccanico automobilistico troppo semplificato!
Immagina che le entità dei dati siano simili a questo:
Lerivendicazionisonoalivellodicompagnia,garageeauto,quindiinaltreparoleJackpotrebbeessereingradodivederetuttiigarageetutteleautodellacompagniaA,JillpotrebbeessereingradodivederetuttiigaragenellacompagniaAesoloalcuneautoinognigarageJopotrebbeessereingradodivederesoloungarageesoloalcunedelleautoinquelgarage.-haicapitol'idea.
- L'appscaricaleinformazionicheilmeccanicopuòvederesullorolavoro.Sonoingradodivederetuttiilavoriassegnatialoroequalsiasialtrolavorocheleaffermazionichehannopermessolorodivedere,inmodochepossanosceglierequeilavori.Unlavoroèunraggruppamentodipostidicontrollochedevonoesserecompletatisuunamacchina.
- L'officinadelgaragenonhaunaconnessionedati,ilmeccanicopuòsincronizzarsisoloquandotornainufficio.Questopotrebbedoveressereavviatodall'utente,manonèancoradeltuttosicuro.
- Piùdiunmeccanicopuòlavoraresuunlavoro,selostessodatovieneaggiornatodaentrambiimeccanici,vincel'ultimoelementosincronizzato.
- Seunelementodatièstatoaggiornatosulserverdaquandoilmeccanicol'hascaricatonell'apptablet,l'haaggiornatoecaricato,ilcambiamentodelmeccanicovince.
- Ilavoripossonoesserecompletatisoloparzialmentealmomentodellasincronizzazione.
- Quandol'appsisincronizza,ènecessarioapplicarelemodificheinessocontenuteeaggiornareidatiarchiviatilocalmenteconleinformazionipiùaggiornatedaldatabaseSQL.Potrebbeesserenecessariorimuovereidatidall'appchenonsonopiùrilevantiperilavorisucuisistalavorandoattualmenteoinfuturo.
Ilback-endèospitatosuAzure,idatimemorizzatiinundatabaseSQLdiAzure.C'èun'APIODatachestiamoritirandoeun'APIWebchepuòessereutilizzata/aggiunta.L'autorizzazionecomplessaavvieneall'internodiunmodulocondivisonelleAPI,gliunicidatiacquisitiinun'appsonodatichel'utenteèautorizzatoavedere.
Idatidiventerannopiuttostograndineltempo.
Questodeveesseretransazionale-es.Sec'èunproblemaconlasincronizzazione,vogliamocheuninterolavorosiastatosincronizzatoallavolta,noniltipodientitàallavolta.
L'appèstatascrittacomeapplicazioneSPACordovaquindi,amenochenonvisiaunvalidomotivopernonfarlo,deverimanereinquestomodo.
Ideecheabbiamoconsideratofinora:
BreezeJSèstatoutilizzatoperteneretracciadellemodifiche.Potremmoinviaresolotalimodifichealserver,attendereunprocessosulserverperapplicaretalimodifichealdatabaseequindiavviareildownloaddieventualimodificheenuovidatirichiesti.Tuttavia,ciòpotrebbesignificarechelasincronizzazionerichiederàmoltotempoperesserecompletatasemoltepersonesisincronizzanocontemporaneamenteelecosesiintasanoinunacodadiqualchetipo.
UsandoCouchDb/PouchDB-Nesomoltopoco,questofunzionerebbeconilmodellodiautorizzazionecheabbiamo?Ecomefunzionerebbeottenerelemodificheda/perildatabaseSQLprincipale?
SincronizzazionedeidatiofflinediAzure(
Il modello di autorizzazione richiesto è la parte che sembra essere il bloccante di molte soluzioni che sono vitali, abbiamo bisogno che utenti diversi abbiano set diversi di dati comuni in un dato momento, questo è un imperativo.