Post on 24-Dec-2015
transcript
Offline-Enabled Data Services And Desktop Applications
Pablo CastroSoftware ArchitectMicrosoft Corporation
TL08
Why The problem space
What The developer experience
How A look at the details
When Standard roadmap drill
Agenda
Why: Motivation
Why “offline” Access to a service may not be always available Bandwidth may not be enough/too expensive etc.
Why “data services” We have sync technology for databases, but… Lots of data now sits behind a service boundary We can layer more data capabilities on
services with a uniform interface
Application Scenarios
Offline-capable applications Microsoft Outlook-style applications Service is typically domain specific, includes
business logic
Application speed-up/bandwidth usage Cache service data locally for fast processing Could be a general purpose data service
Closed-system versus external services Service side may be a 3rd party service
What: Taking Services Offline
Project Codename “Astoria Offline”
End-to-end solution Visual Studio integrated experience Sync APIs, algorithms, formats, protocols Modeled at the level of conceptual “entities” Client and service environment setup
Sync-enable database schemas Generate sync-enabled clients
Maintains an open interface
Application ModelSync-enabled
service
1-tier client application
Sync in the background
Local schema follows service
Online clients can consume
service
Sync-Enabling a Service
“Piece of cake” scenario Relational database through Entity Framework
1. Augment the database with sync information2. Add sync-related elements to metadata files3. Enable synchronization in the service itself
You can also do everything manually
Creating Sync-Enabled Clients
Client-side “piece of cake” flow “Add service reference” will prompt
if the server is sync-enabled1. Download service metadata2. Create local Compact database3. Setup Entity Framework data-access layer4. Add sync support to both database and
Entity Framework
Can also use the building blocks independently
Building On Existing Technology
Data Services Framework: RESTful data services
Sync Framework
Entity Framework:Model & Data Access
Data source extensibility
Local store: SQL Server Compact
Entity Framework: local data access
Database:SQL Server
Sync Framework
Regular Desktop/Server
application
Typical Requirements
Business logic Server: Query and change interceptors Client: Usual UI interaction, plus sync events
Conflict detection and resolution We’ll precisely detect conflicts You provide resolution handlers
Incremental synchronization Batching & dependency management
Choosing which data to sync Scopes
Security Aspects
Authentication ASP.NET authentication model applies Built-in Windows, Forms auth Modules for Basic and custom schemes
Authorization Query/change interceptors on the server Use ASP.NET roles or custom code
How: The Details
Synchronization Strategy Interaction model Database schema requirements
Synchronization Strategy
Follow the Microsoft Sync Framework way Multi-master replication
Peers make changes independently Sync makes peers aware of all changes
Reliable, precise conflict detection Minimize over-enumeration
Basic Concepts
“Scope” All things you want to synchronize
“Version” A change is tagged with “who” and “when”
“Knowledge” Concise description of the set of
changes that a peer is aware of Can be understood by any peer Main operations on knowledge
Test if a given knowledge covers a given change Add one piece of knowledge to another to produce
combined knowledge
Interaction Model
Request changes based on A’s knowledge Enumerate changes in B: Is B’s version covered by
A’s knowledge? If not, send Send changes: Version of change, B’s knowledge Apply Changes: Is A’s version covered by
B’s knowledge? If not, there is a conflict
A B1. Request changes
3. Send changes
4. Apply Changes 2. Enumerate Changes
Data Store Requirements
Per-scope A place to put knowledge in (1 row)
Per-entity Creation version (node, tick count) Modification version (node, tick count) Globally unique Sync ID Deletion markers
Default strategy used by Visual Studio Side tables for sync version information Columns in user tables (timestamp x 2, syncid) Delete trigger for deletion markers Gets better with Compact and SQL Server 2008
Can be completely replaced We define an “API” in terms of entry points Encapsulated in Entity Framework
metadata files
Sync Metadata In Entity Framework
When: Roadmap To "Astoria Offline"
Alpha preview release before end of year We’ll ship CTPs as we make progress What we want to take on
v1: core protocol/service support in place, great tooling
Later: first-class devices support, more application services, scenarios for synchronization other than offline
We'd Love To Hear From You
We are following our “transparent design” process Design notes posted in the Astoria Team blog
http://blogs.msdn.com/astoriateam Feedback is welcome, the earlier the
more likely we can incorporate it You get to see team members in an awkward
setting trying to explain features in videos
Summary
“Astoria Offline” enables applications to take data from services offline Work while disconnected Speed and bandwidth optimizations
End-to-end solution Tools, runtime, database support Starts easy, incrementally customizable
Builds on existing technology for data, services and synchronization
Resources
Blogs Astoria team
http://blogs.msdn.com/astoriateam Mine
http://blogs.msdn.com/pablo @ MSDN
Data: http://msdn.microsoft.com/data Sync:
http://msdn.microsoft.com/en-us/sync/default.aspx @ PDC
TL30 Microsoft Sync Framework Advances TL07 Developing Applications Using Data Services TL20 Entity Framework Futures
Please use the microphones provided
Q&A
Evals & Recordings
Please fill
out your
evaluation for
this session at:
This session will be available as a recording at:
www.microsoftpdc.com
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.