Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ohne Netz, aber mit doppeltem Boden: Offline-First-Apps mit HTML5 und SQL Server Backend

Thorsten Hans
September 29, 2016

Ohne Netz, aber mit doppeltem Boden: Offline-First-Apps mit HTML5 und SQL Server Backend

Folien von meinem Talk im Rahmen der BASTA 2016 - Flächendeckende Mobilfunk- und Highspeed-Internet-Abdeckung klingt schön und komfortabel, doch leider entspricht es nicht immer der Realität. Ob auf dem Land, im Zug oder in großen Gebäudekomplexen: Es gibt viele Orte an denen man die Versprechen der Mobilfunkanbieter nicht allzu ernst nehmen sollte. Sicherlich schafft Ihr Device es unter großen Anstrengungen Ihnen ein GPRS- oder Edge-Signal mit einer Qualität von wenigen Prozenten bereitzustellen, doch für die meisten Apps genügt diese Verbindungsqualität schlichtweg nicht. Dank einfacher und nachvollziehbarer Architekturentscheidungen können Sie sich von der breiten Masse abheben und eine App erschaffen, die den Anwender selbst im dunkelsten Keller unterstützt. In dieser Session zeigt Ihnen Thorsten Hans, wie Sie mit HTML5 und JavaScript im Frontend und Microsofts SQL Server im Backend echte Offline-First-Anwendungen für alle Betriebssysteme erschaffen. Die damit einhergehenden Anforderungen wie Konfliktbehandlung und partielle Synchronisierung werden hierbei zentralisiert in Web-APIs gekapselt, sodass Sie die Vorteile von .NET Framework auf dem Server voll ausnutzen können.

Thorsten Hans

September 29, 2016
Tweet

More Decks by Thorsten Hans

Other Decks in Technology

Transcript

  1. OHNE NETZ, ABER MIT DOPPELTEM BODEN THORSTEN HANS Consultant @

    Thinktecture AG
 https://www.xplatform.rocks http://www.thinktecture.com [email protected] 
 @ThorstenHans Microsoft MVP 2
  2. OHNE NETZ, ABER MIT DOPPELTEM BODEN TALKING POINTS 1. Warum

    gibt es diesen Vortrag? 2. Wann sind wir offline? 3. Was sollte geschehen wenn wir offline sind? 4. Architekturbeispiel für Offline-Support 3
  3. OHNE NETZ, ABER MIT DOPPELTEM BODEN WIR SIND IMMER ONLINE!

    ▸ Oftmals stimmt diese Aussage ▸ Gutes WLAN ▸ Notebooks und Desktops dominieren hier ▸ Offline-Support wird nicht benötigt ▸ Flächendeckendes, signalstarkes LTE ▸ Soll-Zustand
 ▸ In der Regel sieht es allerdings wie folgt aus … 5
  4. https://www.youtube.com/watch?v=XIZVcRccCx0 6 Das Video wird natürlich nicht komplett abgespielt. es

    geht vielmehr um den Gag und um den Spruch der ca bei Sekunde 50 kommt
  5. OHNE NETZ, ABER MIT DOPPELTEM BODEN WARUM GIBT ES DIESEN

    VORTRAG ▸ Endbenutzer Perspektive ▸ Millionen Apps, aber nur wenige haben Offline-Support ▸ fast täglich stärker werdende Frustration 7
  6. OHNE NETZ, ABER MIT DOPPELTEM BODEN WARUM GIBT ES DIESEN

    VORTRAG ▸ Consultant Perspektive ▸ Eure Kunden wollen Offline-Support, auch wenn es nicht explizit erwähnt wurde ▸ Die Offline-Thematik wird unterschätzt ▸ von Entwicklern ▸ von Kunden ▸ von Product Ownern 10
  7. OHNE NETZ, ABER MIT DOPPELTEM BODEN WANN SIND WIR OFFLINE

    ▸ Plattformen stellen ein Event bereit. ▸ Das Event wird gefeuert wenn ▸ das Gerät kein Signal hat ▸ das Gerät ein Signal empfängt ▸ Die Konnektivität wird binär betrachtet 12
  8. OHNE NETZ, ABER MIT DOPPELTEM BODEN VERSUCHT ES SELBST Aktualisiert

    die Daten unterschiedlicher Apps wenn lediglich EDGE verfügbar ist. 13
  9. OHNE NETZ, ABER MIT DOPPELTEM BODEN WANN SIND WIR OFFLINE?

    ▸ Sicherlich erinnert Ihr euch an die Zeit in der es nur EDGE gab!? ▸ Damals genügte die Übertragungsgeschwindigkeit ▸ weil eure Ansprüche unterschiedlich waren ▸ weil App Hersteller einfachere Daten übertragen haben ▸ weil App Hersteller weniger Daten übertragen haben 14
  10. OHNE NETZ, ABER MIT DOPPELTEM BODEN KORREKTE ONLINE-STATUS ERKENNUNG ▸

    Initial: Plattform API (optional) ▸ Falls die Plattform den Status ONLINE angibt ▸ Vordefinierte Anzahl von Requests zum Server senden ▸ Messen und einordnen der Antwortzeiten ▸ Projektabhängige Aussage über die Durchschnittsdauer treffen 15
  11. OHNE NETZ, ABER MIT DOPPELTEM BODEN KORREKTE ONLINE-STATUS ERKENNUNG ▸

    Einstufung der Qualität ▸ Offline ▸ ToSlow ▸ Normal ▸ Good 16 ONLINE OFFLINE
  12. OHNE NETZ, ABER MIT DOPPELTEM BODEN WAS SOLLTE PASSIEREN WENN

    WIR OFFLINE SIND? ▸ Wichtige Fragen müssen vor der Implementierung beantwortet werden! ▸ Abhängig von den gegebenen Antworten variiert ▸ Die Architektur ▸ Der Aufwand für die Implementierung ▸ Die Komplexität der Anwendung ▸ Der Umfang der anzubietenden Funktionalitäten ▸ Das Benutzererlebnis 19
  13. WAS SOLL DER BENUTZER TUN KÖNNEN WENN DAS GERÄT OFFLINE

    IST? Frage 1 OHNE NETZ, ABER MIT DOPPELTEM BODEN 20
  14. WIE GROSS IST DAS ERWARTETE DATENVOLUMEN JE BENUTZER / APP

    INSTALLATION? Frage 5 OHNE NETZ, ABER MIT DOPPELTEM BODEN 24
  15. OHNE NETZ, ABER MIT DOPPELTEM BODEN WAS SOLLTE PASSIEREN WENN

    WIR OFFLINE SIND? ▸ Stellt diese Fragen bevor Ihr mit der Implementierung beginnt ▸ Beantwortet die Fragen ehrlich ▸ Identifiziert weitere Fragen basierend auf eurer Fachdomäne ▸ Kalkuliert die Aufwände nach jeder Änderung einer Antwort neu 27
  16. OHNE NETZ, ABER MIT DOPPELTEM BODEN ARCHITEKTURBEISPIEL FÜR OFFLINE SUPPORT

    Backend (SQL) ▸ Jedes Enterprise DBMS kann verwendet werden ▸ Identifizieren Sie "Daten-Silos" ▸ Hauptentitäten die Offline gehalten werden sollen ▸ Primary Key ist eine GUID ▸ RowVersion Spalte für jede "offline" Tabelle ▸ SQL Trigger markieren Hauptentitäten für Sync 29
  17. OHNE NETZ, ABER MIT DOPPELTEM BODEN ARCHITEKTURBEISPIEL FÜR OFFLINE SUPPORT

    Backend (API) ‣ HTTPS APIs stellen Daten für Sync bereit ‣ Synchronisation ‣ Komplett Sync ‣ Änderungen werden AB einer RowVersion angefordert ‣ Änderungen werden BIS zu einer RowVersion bereitgestellt 30
  18. OHNE NETZ, ABER MIT DOPPELTEM BODEN ARCHITEKTURBEISPIEL FÜR OFFLINE SUPPORT

    Frontend ▸ TypeScript / JavaScript liefern benötigte Bestandteile ▸ Offline Datenhaltung entweder ▸ SQLite für relationale Datenhaltung ▸ IndexedDB ▸ LocalStorage für temporäre Daten ▸ ServiceWorkers* 33
  19. OHNE NETZ, ABER MIT DOPPELTEM BODEN ARCHITEKTURBEISPIEL FÜR OFFLINE SUPPORT

    Frontend ▸ Wenn das Gerät offline ist ▸ Wird kein HTTPS Call getätigt ▸ Wird direkt der Offline Zustand zurückgegeben ▸ Änderungen werden lokal persistiert ▸ Eventuelle Online Features werden deaktiviert 34
  20. OHNE NETZ, ABER MIT DOPPELTEM BODEN ARCHITEKTURBEISPIEL FÜR OFFLINE SUPPORT

    Frontend ▸ Wenn das Gerät wieder online ist ▸ Upload der lokalen Änderungen ▸ Download des Aktuellen Datenbestandes 35
  21. OHNE NETZ, ABER MIT DOPPELTEM BODEN ZUSAMMENFASSUNG ▸ Der Offline-Support

    muss von Beginn an berücksichtig werden. ( OFFLINE FIRST) ▸ Betrachtet Datenübertragung, Datenhaltung, Datensensibilität und Konfliktbehandlung ▸ Setzt die vorhandenen Tools optimal ein 44