2012-08-29 13 views
7

Mam aplikację, którą chciałbym utworzyć. Ale nie jestem pewien, jak to osiągnąć. Korzystam z node.js i chciałbym użyć couchdb, ale jeśli coś takiego jak mongodb lub riak byłoby lepszym wyborem, to chętnie posłuchają pomysłów. Ale mam stronę, powiedzmyAplikacje offline z Node.JS i CouchDB

cool.com

i tam jest couchdb instancji, a także miejsce do zarządzania sklepu. powiedz koszyk na zakupy. db zawiera wszystkie pozycje i dane sklepu. Sama aplikacja ma serwer administracyjny do zarządzania tymi danymi i może zmieniać elementy. To, co chciałbym móc zrobić, to mieć możliwość odłączenia użytkownika od Internetu i nadal mieć działanie zaplecza administracyjnego. Zdaję sobie sprawę, że aby to zadziałało, potrzebuję użyć frameworka po stronie klienta z moimi modelami/trasami/kontrolerami/czymkolwiek. Ale nie jestem pewien, jak to zrobić, aby strona działała w trybie offline. Jeśli zainstalujesz lokalnie, couchdb może zsynchronizować dane z lokalnego na zdalny po powrocie do trybu online, a jeśli użytkownik admin jest na komputerze, mógłbym je zainstalować. ale to może być brudne.

Co się stanie, jeśli użytkownik admin jest na tablecie lub telefonie? Czy w tym celu potrzebuję rzeczywistej aplikacji mobilnej i aplikacji komputerowej? czy jest jakiś sposób, abym mógł to ustawić, aby był spójny z użytkownikiem końcowym. Chciałbym również, aby ta informacja była niedostępna również dla użytkowników końcowych, ale większa publiczność to administrator.

Kolejny przypadek użycia, system POS instore. a moc gaśnie. Ale system POS może być załadowany z internetu na tablet i nadal może sprzedawać na podstawie karty, jeśli wifi jest wyłączone, ponieważ aplikacja jest dostępna w trybie offline.

Po prostu nie jestem pewien, jak to zrobić. Załóżmy, że potrzebuję framrwork klienta, który może obsłużyć dane, a także backend. coś jak ember, albo kanciasty. tam również wszystko w jednym stosie, jak meteor i derby js, ale nie są one w pełni offline, ale są przeznaczone do pojawiania się w czasie rzeczywistym. choć meteor ma mini mongo, więc warto się nim zajrzeć.

Miałem nadzieję, że ktoś może mi pomóc w ustaleniu, w jaki sposób mogę uruchomić tę konfigurację, najlepiej z kanapą, ale inne nosql też by działały, gdybym mógł zsynchronizować dane.

+0

Co rozumiesz przez sprzedaż opartą na kartach? Czy chodziło Ci o płatność kartą kredytową? –

+0

Tak. Tak więc w sklepie z systemem sprzedaży. Będzie to wymagało wielu metod płatności. – skift

+0

Co w końcu robiłeś? – bryanmac

Odpowiedz

3

Jest ciekawy projekt tam nazywa AppJs (http://appjs.com/), które pakiety node.js i Chrominium jako środowiska graficznego. Obecnie jest bardzo świeży (bardzo mało dokumentacji), ale wydaje się, że jest wystarczająco prosty (będziesz używać tych samych narzędzi, co w przypadku aplikacji online).

Jeśli chodzi o synchronizację środowisk offline i internetowych. Wątpię, byś mógł polegać na CouchDB w sposób, jaki sobie wyobrażasz. Wsparcie mobilne CouchDB nie jest tak kompleksowe, jak sugeruje niektóre dokumenty. W tym sensie nie byłoby inaczej, niż używanie SQL/Mongo/Punchcards.

Możesz mieć więcej szczęścia przy projektowaniu odpowiedniego schematu serializacji opartego na XML lub JSON (lub zwykłym tekście) i przekazywaniu plików pomiędzy instalacjami online i offline.

Edytuj - Od chwili napisania tego dokumentu Node Webkit - http://nwjs.io/ - jest najwyraźniejszym zamiennikiem App.js. Ma bardzo prosty interfejs API i kilka świetnych funkcji.

+0

hrmm, app.js wygląda na to, że bardzo dobrze pasuje. czy wiesz, czy ma również możliwość pakowania serwera? Gdybym mógł go zmusić do pakowania instancji na kanapę, byłby idealny. – skift

+0

, aby zauważyć, będę używał app.js dla instancji pulpitu mojej aplikacji. i coś w stylu gry na telefon komórkowy. Chociaż wiem, że mam inne problemy z wywieraniem presji na lokalną bazę danych. Ale na czas, ponieważ będzie on zainstalowany tylko na kilku komputerach, mogę po prostu utworzyć skrypt poleceń, aby zainstalować bazę danych ręcznie, a później znaleźć rozwiązanie, aby poprawnie ją spakować. – skift

4

Jeśli chcesz klientów, które działają seemless jak idą nieaktywny i trybu online (jak POS z mocą out) następnie Polecam dokonywania aplikacja głównie odpracować pamięci lokalnej z publikowania w tle lub synchronizacji z chmurą.

lokalne opcje przechowywania może być wszystko od coś lekkiego jak SQLite SQLEXPRESS, firebird do żadnych opcji sql jak Mongo, CouchDB etc ...

Ale dla klienta lub urządzenia, należy rozważyć łatwość konfiguracji i wagi tej opcji. Musisz także wziąć pod uwagę typ klientów - czy masz wiele platform różniących się między urządzeniami a komputerami? Nie chcesz czegoś, co ma duży ślad konfiguracyjny i czas działania. W porządku po stronie serwisu.

Po stronie serwisu należy wziąć pod uwagę charakter swoich danych i to, czy są one lepiej dopasowane do systemów transakcyjnych/relacyjnych (bankowość itp.) Lub ostatecznie spójnych/nietransakcyjnych (bez sql) dokumentów. Nie zapomnij o hybrydzie jako opcji. Weź również pod uwagę platformę usługową - na przykład węzeł działa dobrze z mongodb (obiekty json z przodu do tyłu) ...

Opcje pamięci urządzenia i usługi mogą być różne (i prawdopodobnie powinny być) oddzielone przez interfejsy serwisowe (mydło, reszta/http, gniazda itp.).

Trudno mieć jedno rozwiązanie pasujące do wszystkich, ale często coś lekkiego, jak np. Sqlite na urządzeniu lub kliencie, ułatwia instalację/konfigurację, a skalowalność po stronie usługi z czymś takim jak sqlserver/mysql lub couchdb/mongodb sens.

Niektóre linki do odczytu:

jesteś pytanie jest dość szeroko otwarte i nie ma jednego uniwersalnego rozwiązania. Mam nadzieję, że podałem kilka opcji do przemyślenia.

+0

Myślałem też najpierw o lokalnych. zasadniczo tworząc 2 aplikacje. strona i serwer. obaj mogą używać bardzo podobnych api, co ułatwiłoby to. W rzeczywistości częścią systemu będzie interfejs POS, który * powinien * być dostępny na tablecie. sądzę, że będę mógł zmusić ich do korzystania z wersji online. pulpit musi mieć możliwość pracy w trybie offline (ponownie, POS). Alhtough, czy mogę uzyskać dostęp do trybu offline na telefon komórkowy, który byłby również świetny (phonegap?). Jeśli potrzebuję zbudować kilka oddzielnych aplikacji, to po prostu potrzebuję, aby całość była jak najbardziej bezproblemowa. – skift

+0

Można skonsolidować urządzenie/PC wokół sqlite (jest to wieloplatformowy - udostępnić kod sql) i strona serwisowa wokół dowolnej opcji przechowywania ma sens (mongo/couchdb). Stwierdziłem, że mongo pasuje do węzła, ale nie grałem z couchdb tak bardzo. – bryanmac

+0

Myślałem, oferuję tylko aplikację offline administratorom i nadal wymagam poświadczeń, aby skonfigurować synchronizację. następnie na stronie może sprawdzić lokalnie dla db i czekać na synchronizację. kiedy to zrobi, używa lokalnego. jeśli nie ma kopii lokalnej, korzysta z bazy danych online. w ten sposób jest to jedna aplikacja, a ja tylko zapewniam pewien rodzaj pakietu dla lokalnej bazy danych. ale to nadal pozostawia do zakwestionowania, jak poradzić sobie z urządzeniami mobilnymi. zmusić ich do korzystania z Internetu? lub zrób aplikację mobilną. kanapa najwyraźniej ma klienta mobilnego w pracach na kanapie, które według nich działają, co również może być odpowiedzią. – skift

6

Nie jestem pewien, czy to zadziała, ale już od dawna zastanawiam się nad takim wnioskiem i prowadzę badania nad tym, co jest możliwe. Najlepszym rozwiązaniem, jakie mogłem wymyślić, jest użycie serwera z couchdb i napisanie aplikacji opartej na kliencie. Następnie do przechowywania danych użyj pouchdb i regularnie synchronizuj pouchdb z serwerem couchdb, jeśli aplikacja jest w trybie online. Wiem, że etui jest na wczesnym etapie i nie jest gotowe do produkcji, ale jeśli chcesz włożyć w to trochę pracy, powiedziałbym, że jest to wykonalne.

+0

pouchdb również wygląda obiecująco. Naprawdę to lubię. jeśli można go dołączyć do app.js, o którym wspomniałem @charlie, byłby to plus. – skift

+0

@luckysmack, którego faktycznie nie potrzebujesz AppJs dla PouchDB, działa na IndexedDB w przeglądarce (lub Chromium Embedded lub gdziekolwiek go uruchomisz), z obsługą WebSQL i LocalStorage również planowaną kompatybilność wsteczną. – dain

+0

Czy istnieje dokumentacja do wykonania tego? co jeśli w końcu nie używam app.js i po prostu korzystam z wbudowanej przeglądarki? albo coś innego? – skift

Powiązane problemy