Skip to content
Stanley edited this page Aug 13, 2010 · 8 revisions

Palm webOS is based upon an innovative design that integrates a window-based modern operating system with a web technology runtime that allows you to build applications using common web languages and tools, without the restriction of working within a web browser. The application model is based on an integrated web runtime and the Mojo framework, a JavaScript framework with powerful UI services, local storage, and methods to access application, cloud, and system services.

Applications are built using JavaScript, HTML, and CSS, and while similar to web applications, webOS applications are actually native applications. This application model allows you to use the same languages and tools to build powerful mobile applications that you use to build web content.

You can think of webOS applications as native applications, but built from the same standard HTML (Hypertext Markup Language), CSS (Cascading Style Sheets), and JavaScript that you’d use to develop web applications. Palm has extended the standard web development environment through a JavaScript framework that provides a toolkit of UI widgets and access to selected device hardware and services.

The user experience is optimized for launching and managing multiple applications at once. Palm webOS is designed around multitasking and makes it utterly simple to run background applications, to switch between applications in a single step, and to easily handle interruptions and events without losing context1.

Repozytoria danych2

HTML5 Sotrage

Cookies

Obiekt Mojo.Cookie jest podobny do tzw. ciasteczek znanych ze standardowych przeglądarek internetowych. Ciasteczka przechowują małą ilość danych np. stanu i statusów. Framework Mojo dostarcza obiekt Cookie dla uproszczenia działania aplikacji w systemie, implementując metody: utwórz, czytaj, uaktualnij i usuń. Rozmiar danych jest ograniczony do około 4kb. Ciasteczka są interpretowane jako pojedynczy plik JSON i są przechowywane w bazie danych.

W przeciwieństwie do standardowych ciasteczek, obiekt Mojo.Cookie jest używany tylko wewnętrznie, do przechowywania danych na urządzeniu i nigdy nie jest częścią żadnego zewnętrznego zapytania. Ciasteczka są kojarzone z domeną utworzoną przez webOS dla każdej aplikacji. Ciasteczka są usuwane wraz z aplikacją.

W aplikacji tram2000-webos obiekt Mojo.Cookie przechowuje następujące dane:

  • Nazwę użytkownika (opcjonalnie),
  • hasło użytkownika (opcjonalnie),
  • sposób synchronizacji danych z serwerem front-end.

Wszystkie te dane można modyfikować w zakładce “Ustawienia”.

Synchronizacja z serwerem

Read-only

Proces synchronizacji z serwerem jest bardzo prosty. Jeżeli nasza baza jest pusta, wysyłamy żądanie o przesłanie nam listy identyfikatów wszystkich rekordów które zostały dodane od samego początku i po kolei popularyzujemy naszą lokalną bazę powtarzając instrukcje:

  • żądanie dokumentu o danym identyfikatorze,
  • dodanie (lub uaktualnienie) go do lokalnego repozytorium,
  • uaktualnienie informacji o numerze rewizji lokalnej bazy danych, która jest przechowywana w ciasteczku.

Jeżeli proces zostanie niespodziewanie przerwany lub po prostu nasze dane nie będą już akutalne, przy kolejnej aktualizacji wysyłamy żądanie o przesłanie listy rekordów, które zostały dodane / zmienione / usunięte od naszej lokalnej wersji. W wyniku dostajemy identyfikatory tylko tych rekordów, których uaktualnienie będzie skutkowało posiadanie najświeższej wersji zdalnej bazy danych. Powtarzamy trzy powyższe kroki dla otrzymanej tablicy.

Write-only

W przypadku gdy nie mamy uprawnień do czytania bazy danych zakładamy, że nie musimy martwić się o żadne konflikty identyfikatorów i nadpisywanie danych, gdyż każdy rekord będzie zapisany z zdalnej bazie jako nowy. Każdy rekord musi zostać wysłany pojedyńczo, aby w razie błędów lub zerwania połączenia nie trzeba było powtarzać udanych operacji. W odpowiedzi na wysłanie każdego rekordu serwer zwróci status żądania. Jeżeli nie wystąpiły żadne błędy i otrzymaliśmy potwierdzenie odebrania, możemy spokojnie usunąć rekord z lokalnego repozytorium i rozpocząć transmisję następnego. Kolejność wysyłania nie ma znaczenia, gdyż w przypadku wystąpienia błędów, rekord zostaje ominięty, a następna próba jego transferu nastąpi przy kolajnej synchronizacji.

Proces generowania danych

1 Źródło: Mith Allen: Palm webOS. O’Reilly, 2009. ISBN 978-0-596-15525-4

2 Źródło: http://developer.palm.com/index.php?option=com_content&view=article&id=1734