SlideShare a Scribd company logo
Working with disconnected data in Windows Store apps
Working with disconnected data in Windows Store apps
Working with disconnected data in Windows Store apps
acasquete
Working with disconnected data in Windows Store apps
Working with disconnected data in Windows Store apps
The applications require a local storage
File System

App Data Store

C# / JavaScript

SQLite

IndexedDB

Javascript
Working with disconnected data in Windows Store apps
Working with disconnected data in Windows Store apps
Working with disconnected data in Windows Store apps
Windows Azure Mobile Services are ideal for:
Working with disconnected data in Windows Store apps
Optimistic Concurrency Control
Working with disconnected data in Windows Store apps
Working with disconnected data in Windows Store apps
File System

App Data Store

C# / JavaScript

SQLite

IndexedDB

Javascript
many browsers
// Opening a Database
var
// Assume db is a database variable opened earlier
var
var
// Define a person
var
// Perform the add
var
Working with disconnected data in Windows Store apps
Working with disconnected data in Windows Store apps
// Opening a Database
var db = new PouchDB('dbname');
// Add an object
db.put({ _id: ’me@email.com', name: ’Alex', age: 66 });
// Subscripbe to changes
db.changes({
onChange: function() {
console.log('Ch-Ch-Changes');
}
});
// Replicate to external DB
db.replicate.to('http://example.com/mydb');
Working with disconnected data in Windows Store apps
http://www.windowsazure.com/en-us/develop/mobile/tutorials/handle-databasewrite-conflicts-dotnet/
http://msdn.microsoft.com/en-us/library/windowsazure/hh456371.aspx
http://www.sqlite.org/docs.html
http://pouchdb.com
Working with disconnected data in Windows Store apps
Working with disconnected data in Windows Store apps

More Related Content

What's hot (20)

PDF
Relevance trilogy may dream be with you! (dec17)
Woonsan Ko
 
PDF
Replicating application data into materialized views
Zach Cox
 
PDF
Scaling ArangoDB on Mesosphere DCOS
Max Neunhöffer
 
PDF
Electron, databases, and RxDB
Ben Gotow
 
PDF
Updating materialized views and caches using kafka
Zach Cox
 
ODP
Polyglot persistence with Spring Data
Corneil du Plessis
 
PPTX
The Basics of MongoDB
valuebound
 
PDF
Creating data centric microservices
ArangoDB Database
 
PDF
your browser, my storage
Francesco Fullone
 
PPT
Grails Controllers
NexThoughts Technologies
 
PDF
MeteorJS Introduction
Nitya Narasimhan
 
PDF
Client Server Communication on iOS
Make School
 
PPTX
Introduction à DocumentDB
MSDEVMTL
 
PDF
FOXX - a Javascript application framework on top of ArangoDB
ArangoDB Database
 
PDF
Олексій Калініченко — Configuration Management in Drupal8
LEDC 2016
 
PDF
N hidden gems in hippo forge and experience plugins (dec17)
Woonsan Ko
 
PDF
Azure sql database limitations
BRIJESH KUMAR
 
PDF
N hidden gems in forge (as of may '17)
Woonsan Ko
 
PPTX
Asp.net
ashish kumar
 
PDF
In-depth changes to Drupal 8 javascript
Théodore Biadala
 
Relevance trilogy may dream be with you! (dec17)
Woonsan Ko
 
Replicating application data into materialized views
Zach Cox
 
Scaling ArangoDB on Mesosphere DCOS
Max Neunhöffer
 
Electron, databases, and RxDB
Ben Gotow
 
Updating materialized views and caches using kafka
Zach Cox
 
Polyglot persistence with Spring Data
Corneil du Plessis
 
The Basics of MongoDB
valuebound
 
Creating data centric microservices
ArangoDB Database
 
your browser, my storage
Francesco Fullone
 
Grails Controllers
NexThoughts Technologies
 
MeteorJS Introduction
Nitya Narasimhan
 
Client Server Communication on iOS
Make School
 
Introduction à DocumentDB
MSDEVMTL
 
FOXX - a Javascript application framework on top of ArangoDB
ArangoDB Database
 
Олексій Калініченко — Configuration Management in Drupal8
LEDC 2016
 
N hidden gems in hippo forge and experience plugins (dec17)
Woonsan Ko
 
Azure sql database limitations
BRIJESH KUMAR
 
N hidden gems in forge (as of may '17)
Woonsan Ko
 
Asp.net
ashish kumar
 
In-depth changes to Drupal 8 javascript
Théodore Biadala
 

Viewers also liked (6)

PDF
Everyday - mongodb
elliando dias
 
PPT
Eficientizarea IT - Temperfield
Temperfield
 
PDF
OAuth 2.0
Andreas Åkre Solberg
 
DOCX
тезисы к докладу по электронной аутентификации в государственных системах
Mikhail Vanin
 
PDF
Nuxeo World Session: Nuxeo Distributions
Nuxeo
 
ODP
Sso every where
Paul Seiler
 
Everyday - mongodb
elliando dias
 
Eficientizarea IT - Temperfield
Temperfield
 
тезисы к докладу по электронной аутентификации в государственных системах
Mikhail Vanin
 
Nuxeo World Session: Nuxeo Distributions
Nuxeo
 
Sso every where
Paul Seiler
 
Ad

Similar to Working with disconnected data in Windows Store apps (20)

PDF
Softshake - Offline applications
jeromevdl
 
PPTX
Data In Cloud
rsnarayanan
 
PPTX
Using SQL Local Database in Mobile Applications
Mihail Mateev
 
PDF
your browser, your storage
Francesco Fullone
 
PDF
09.Local Database Files and Storage on WP
Nguyen Tuan
 
PPTX
All about data persistence in Windows 8
Andrei Marukovich
 
PDF
Local Storage
Ivano Malavolta
 
PDF
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
BradNeuberg
 
PPTX
Azure, Cloud Computing & Services
Alan Dean
 
PDF
Your browser, your storage (extended version)
Francesco Fullone
 
PPTX
In-browser storage and me
Jason Casden
 
PDF
Taking Web Apps Offline
Pedro Morais
 
PPT
Windows Azure and a little SQL Data Services
ukdpe
 
PPTX
Getting started with Couchbase
Josue Bustos
 
PDF
Naked and afraid Offline Mobile
ColdFusionConference
 
PDF
Naked and afraid Offline mobile
devObjective
 
PDF
Local storage in Web apps
Ivano Malavolta
 
PDF
Non-Relational Databases & Key/Value Stores
Joël Perras
 
PDF
Local data storage for mobile apps
Ivano Malavolta
 
PPT
ArcReady - Architecting For The Cloud
Microsoft ArcReady
 
Softshake - Offline applications
jeromevdl
 
Data In Cloud
rsnarayanan
 
Using SQL Local Database in Mobile Applications
Mihail Mateev
 
your browser, your storage
Francesco Fullone
 
09.Local Database Files and Storage on WP
Nguyen Tuan
 
All about data persistence in Windows 8
Andrei Marukovich
 
Local Storage
Ivano Malavolta
 
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
BradNeuberg
 
Azure, Cloud Computing & Services
Alan Dean
 
Your browser, your storage (extended version)
Francesco Fullone
 
In-browser storage and me
Jason Casden
 
Taking Web Apps Offline
Pedro Morais
 
Windows Azure and a little SQL Data Services
ukdpe
 
Getting started with Couchbase
Josue Bustos
 
Naked and afraid Offline Mobile
ColdFusionConference
 
Naked and afraid Offline mobile
devObjective
 
Local storage in Web apps
Ivano Malavolta
 
Non-Relational Databases & Key/Value Stores
Joël Perras
 
Local data storage for mobile apps
Ivano Malavolta
 
ArcReady - Architecting For The Cloud
Microsoft ArcReady
 
Ad

More from Alex Casquete (6)

PDF
Redis no es solo una caché
Alex Casquete
 
PPTX
Functional Programming with F#: Getting Started & Basic Concepts
Alex Casquete
 
PDF
45 F#antastic minutes!
Alex Casquete
 
PDF
JavaScript no es Vietnam
Alex Casquete
 
PDF
Aplicaciones robustas con Programación Orientada a Aspectos
Alex Casquete
 
PDF
Entity Framework 4 desde cero
Alex Casquete
 
Redis no es solo una caché
Alex Casquete
 
Functional Programming with F#: Getting Started & Basic Concepts
Alex Casquete
 
45 F#antastic minutes!
Alex Casquete
 
JavaScript no es Vietnam
Alex Casquete
 
Aplicaciones robustas con Programación Orientada a Aspectos
Alex Casquete
 
Entity Framework 4 desde cero
Alex Casquete
 

Recently uploaded (20)

PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 

Working with disconnected data in Windows Store apps

Editor's Notes

  • #2: Hello everyone. Thank you for coming at the last session of MCT Summit.In this talk I want to show you how to deal with connected and disconnected scenarios using Windows Store apps and how to synchronize data between a local and an external database.
  • #3: Againefore I start, I want to thanks Sponsors:Aplixure, Microsoft Learning, Virsoft. Withoutthem, this Summit wouldn’t be posible!
  • #4: As I said, I thistalk I wanttotalkdisconnectedscenarios. And I wantto show youhowto store local data usingSQLite and IndexedDB. And thenhowtosynchronizewithexternal server. We’llseehowtosyncrhonizeSQLitewith Mobile Services, and theIndexedDBwithanexternalCouchDBdatabase.
  • #5: I’m Alex Casquete I’m working in Spain as a developer and trainer in a consultant company specialized in Microsoft Technologies. The last two years I have been involved in developing mobility solutions using windows store apps and Windows azure, in particular I’m developing business store apps. Apps related with an specific business of a company. I think is in this kind of application where dealing with connected and disconnected and with how to synchronize data became important. Here you have my email address and my twitter if you want to ask me after this talk or stay in contact.
  • #6: Thisisthecommonmessagethatweseewhenanaplicattionisnotsupporting offline navigation. That means that we cant use the application if we are not connected.In manybusiness store apps, thisisnotanoption, weneedtheapplicationsalwaysrunning.
  • #7: Ok, let’sgowiththefirsttopic. The key thing is that Mobiles phone and tablets are not always connected and so experience latencies with getting data that we don’t have in on promise clients. But the application always needs to be running.
  • #8: Besides, when working in disconnected apps we need to consider other additional aspects. First, mobile devices and phones have less storage and processing capacity than a desktop or notebook computer. We need to use the local storage properly. We cant store locally a complete database.we need to use Wi-Fi connections when possible To keep down the cost of running a mobile application, and we should use a compact data format like JSON.Another consideration when working offline is that we are not working alone. Probably another disconnected user is working with the same data at the same time, and in some cases we need to resolve conflicts.All this is important, but the most important is that we need to have a local storage for the applications.
  • #9: And the options we have many options to store data locally.We can store data using the file system, we can create files in any folder to store settings or whatever.Another option is to store the data using the app local storage, and isolated storage for the app. And another solution is to use third parties databases as SQLite.But besides, if we are using JavaScript to developing Store Apps or even HTML apps, we can use IndexedDB that allow us to store a pair key/value in a local database.These last options are the recommended when we need to manipulate a large quantity of data, because if we use other mechanism, we must implement our own mechanism for searching, sorting, etc.
  • #10: SQLite is an embedded SQL database engine that does not have a separate server process. It’s working as library. The data isstored in a single file.Implementsmost of the SQL standard and we can use it in manyplatforms (…)
  • #12: Now, we have an application that stores the data locally. And now we need to upload this data to an external server so that it could we shared between all the clients. We have many options, but I want to show you how to synchronize this data using Windows Azure Mobile Services. Do you know what Windows Azure Mobile Services is?Windows Azure Mobile Servicesenablesyoutoaccelerateyourmobileappdevelopmentbyproviding a fast and easywayto store data, authenticateusers, and sendpushnotifications. Today, we’vereleasedseveralimportantupdatesto Mobile Services, includingOptimisticconcurrency in structured data todetect and resolvescenarioswheretwoor more users are concurrentlyupdatingthesame data rowWindows Azure Mobile Services is a Windows Azure service designed to make it easy to create highly-functional mobile apps. Mobile Services brings together a set of Windows Azure services that enable backend capabilities for mobile apps. Mobile Services provides a set of REST APIs that are used to access and change table data and retrieve authenticated login information.
  • #13: Windows Azure Mobile Services is a Windows Azure service designed to make it easy to create highly-functional mobile apps. Mobile Services brings together a set of Windows Azure services that enable backend capabilities for mobile apps. Mobile Services provides a set of REST APIs that are used to access and change table data and retrieve authenticated login information.Windows Mobile Service are perfect for create the backed of a Windows Store app, Windows Phone, iOS, Android, web applications.We can implementquicklycommontasks as userauthenticatio, sendpushnotifications, etc.
  • #15: Whathappensifwehavetwoclients?In some scenarios Two or more clients may write changes to the same item, at the same time. Without any conflict detection, the last write would overwrite any previous updates.Optimistic Concurrency Control assumes that each transaction can commit without any lock.Windows Azure Mobile Services supports optimistic concurrency control by tracking changes to each item using the __version system property column that is added to each table. This is a new feature added past week.Before committing a transaction, optimistic concurrency control verifies that no other transaction has modified the data. If the data has been modified, the committing transaction is rolled back.
  • #16: I’ll show you how to the application to detect these write conflicts through the __version system property. The application will be notified by a MobileServicePreconditionFailedException during an update attempt if the record has changed since the last query. It will then be able to make a choice of whether to commit its change to the database or leave the last change to the database intact. Forthis demo Imgoingto use the default solution.
  • #17: Untilnowwehaveseenhowto store local data usingSQLite and howtosinchronizewithexternal server using C# in Windows Store apps.Ifyou are using JavaScript you can do thesame. You can use SQLitedirectlyfrom JavaScript a Windows RT component and use SQLite
  • #18: But in Windows Storeswith JavaScript wehaveanotherengineto store data locally.
  • #19: IndexDBis a databaseengingsuportedbymany browsers and Windows Store appusingJavascript.We can store pairkey / value and each record isidentifiedby a uniquekey.We can store largeamount of data, images, objects, arrays, etc.
  • #20: Here we can see how to work with indexeddb.Howwe open a database.Howwecreate a transaction. When working with data in indexeddb it’s necessary to use a transaction. Transactions take two arguments. The first is an array of tables you’ll be working with. Most of the time this will be one table. The second argument is the type of transaction. There are two types of transactions: readonly and readwrite. Adding data will be a readwrite operation. And then web can add a entityusingmethodadd.
  • #21: Instead of using indexed directly we can use other libraries. In the next demo, I will show you how to work with PouchDB. PouchDBstores data in local usingindexdb.This library is an implementation of Apache CouchDB that works in a native way in every browser using IndexedDB as storage system. It has the same model of data, the same API and the same conflicts resolution that CouchDB. But the most important is that allows to synchronize the data with a CouchDB Database. To show the use of PouchDBimgoiung to create a simple app that allow to edit the infomation from a customer list and we can synchronize with other devices.
  • #26: Againefore I start, I want to thanks Sponsors:Aplixure, Microsoft Learning, Virsoft. Withoutthem, this Summit wouldn’t be posible!