Live Mesh and Live Framework
Oran Dennison
@
orand
orand.blogspot.com
odennison@gmail.com
the consumer experience
the developer experience
future experiences
What is the mesh?
Live Mesh
Live Framework
Wild Speculation
Live Mesh on the Mac
Live Framework
the developer experience
•
What’s new
•
The platform
•
The programming model
Live Framework as a Platform
•
User
-
centric data & services
–
Over 460M users, 30B relationships
•
Simple standards
-
based web architecture
•
Sync, communications, and P2P
•
Identity,
authN
,
authZ
•
App management
•
Analytics
User
-
centric data
•
Users own their data
–
Can grant access to:
•
Other users
–
Roles: Full, Writer, Reader
•
Devices
•
Apps
–
Can see who has access to what
–
Can revoke access
•
Apps & devices access data
on behalf of
users
User
-
centric services
•
Contacts
•
Profiles
•
Calendar
•
Mail
•
Photos
•
Groups
•
Favorites
•
Geospatial
•
And much more…
Standards
-
based architecture
•
HTTP
–
REST
•
Atom, RSS, JSON, POX
•
Atom Publishing Protocol (
AtomPub
)
•
FeedSync
Verbs
•
Standard HTTP methods
–
POST
Create a new resource entity
–
PUT
Update an existing resource entity
–
GET
Read a resource entity/collection
–
DELETE
Delete a resource entity
–
OPTIONS
Discover the capabilities
–
HEAD
{GET
–
entity body}
•
Consistent across the entire Resource Model
•
AtomPub
for CRUD and
FeedSync
for sync
•
URI
-
LINQ mappings for queries
Uses HTTP 1.1 semantics for…
•
Caching
•
Change notification
•
Incremental state transfer
REST In The Mesh
Resources, collections and links
resource
collection
resource
Uri
EntityTag
SubscriptionUri
…
Uri
LastUpdateTime
…
resource
link
Uri
Title
RelationshipType
…
FeedSync
•
Synchronization via RSS and Atom feeds
•
Bi
-
directional sync (multi
-
master)
•
Preserves conflicting data
•
Creative Commons
•
Microsoft Open Specification Promise
<
rss
version="2.0">
<channel>
<title>To Do List</title>
<description>A list of items to do</description>
<link> http://example.com/partial.xml </link>
<item>
<title>Buy groceries</title>
<description>Get milk, ... </description>
<
sx:sync
id="item_1_myapp_2005
-
05
-
21T11:43:33Z" updates="3">
<
sx:history
sequence="1" when="2005
-
05
-
21T09:43:33Z" by="a9"/>
<
sx:conflicts
...>
<item>
...
</item>
</
sx:conflicts
>
</
sx:sync
>
</item>
</channel>
</
rss
>
FeedSync
example
It’s feeds all the way down!
News
Contacts
Folders and files
Custom app data
Apps
Devices
Sharing
User presence
Change notifications
Live Framework Resource Model
Devices
Media
Resources
Data Entry
Members
Mappings
Data Feeds
News
Subscription
Applications
News
Notification
Queue
Mesh
Objects
Scripts
Profiles
Mesh
Contacts
Live Operating
Environment
Data Entry
Live Operating Environment
•
Live Framework’s service composition engine
•
Takes care of the hard problems…
–
Offline and sync
–
Communication
–
Device management, user/device presence, notifications
•
Exists in cloud and on all devices
–
All the incarnations look and feel the same
•
Provides a unified and consistent programming model
“I consider lack of data sync in Gears one of my greatest
personal failures. I was not able to convince Google to
take on the data sync problem. So I moved on.”
“Live
Framework imposes a data schema (Atom) on you,
but for that price of admission you get free automatic data
sync between devices and the cloud, as well as cloud
storage and associated services such as authentication
.”
Sync is a big deal.
Danny Thorpe
–
founding member of Google Gears, now at Microsoft working on Live Framework tools
Live Operating Environment
WL
Services
WL
Services
WL
Services
Web Apps
Device
Cloud
Always Online
Live Operating
Environment
(https://user.windows.net)
WL
Services
WL
Services
WL
Services
Device
Cloud
Occasionally Connected
P2P to
another device
Live Operating
Environment
(https://user.windows.net)
Mesh Resource
Partitioning
https://accounts.mesh.com/Identities/FKEXBSLJR3VUXEXMTPSSOVO6GM/DeviceClaims/CSOW2TEBYUSE5BD3I5QOS724UU
each resource lives in a ‘home’ datacenter
each resource has a stable canonical
URI based on its resource identifier
each resource has a location URI that routes
requests directly to its ‘home’ datacenter
https://accounts.clus9.bay.mesh.com/Identities/FKEXBSLJR3VUXEXMTPSSOVO6GM/DeviceClaims/CSOW2TEBYUSE5BD3I5QOS724UU
requests to the ‘wrong’ datacenter get redirected,
and clients cache the redirect URI for future use
mapping a resource identifier to its ‘home’
datacenter requires a lookup in a replicated database
you are here
Authentication & Authorization
Mesh Apps Overview
Mesh
-
Enabled
Web Application
•
Pre
-
authenticated
•
Pre
-
authorized to only
access data in its own
Mesh Object
•
Pre
-
authorized to only
access user data that it
is granted access to
Web Apps
•
App runs with specific
permissions
specifically granted by
the user (Delegated
Authorization)
•
Authentication
through Domain, App
ID & Secret
Rich Client Apps
•
App runs as the user,
with same privilege
•
Need Device ID & App
ID
•
Access to Cloud or
Client Live Operating
Environment
Mesh
-
Enabled Web Applications
•
Same app
on website, Live Desktop, and devices
•
HTML/JavaScript,
Silverlight
, Flash, etc.
•
Auto d
eployment and update
•
Socially aware and easily shareable
•
Accessed by originating website with user consent
•
Runs in a sandbox
Mesh
-
Enabled Web App Packaging
YourApp.zip
–
index.html
–
Manifest.xml
–
Logo.png
–
[folders, other static content]
Live Framework Programming
•
HTTP
•
AtomPub
client
•
Microsoft SDKs
•
.NET,
Silverlight
, JavaScript
•
Tools for Visual Studio
•
PHP library
•
Roll your own
Coding time:
Let’s party on the mesh with .NET!
JavaScript SDK
MeshApp.run
=
function
MeshApp$run
() {
Microsoft.LiveFX.MeshApplication.loadAsync
(
windows.location.hostname
,
Delegate.create
(
null
,
function
(
meshApplicationContext
)
{
if
(
meshApplicationContext.state
!==
Microsoft.LiveFX.OperationState.Success
)
{
MeshApp._showError
(
'
MeshApplication
Load Failed'
);
}
else
{
var
meshApplication
=
meshApplicationContext.resource
;
meshApplication.get_runtimeEndpoint
().
get_mesh
().
loadAsync
(
Delegate.create
(
null
,
function
(
meshOperationContext
)
{
MeshApp._onLoadMesh
(
meshOperationContext
);
}));
}
}));
PHP Helpers
<?
php
require_once
'LiveFX.php'
;
$token
=
"<delegated authentication token>"
;
$
livefx
=
new
LiveFX
();
$
loe
=
$
livefx
-
>
connectWithToken
(
$token
);
$contacts
=
$
livefx
-
>
getContacts
(
$
loe
[
'
ContactsLink
'
]);
$
livefx
-
>
printArray
(
$contacts
);
?>
“A whole new world…
A new fantastic point of view…”
•
Data
deeply
owned by users not apps or devices
•
Just feeds? I want my RDBMS/
filesystem
/… back!
–
Hierarchies
–
Transactions
–
Referential integrity
–
Eventually consistent systems
•
Conflict resolution: the dark side of sync
Getting Started
http://developer.mesh
-
ctp.com
Click on Join, Continue, click
click
click
,
type
type
type
, pretend to read
EULAs, Privacy Policies, Terms of Use,
click
click
click
, etc.
This step is the non
-
obvious one.
Tokens are no longer required.
Sign in at
http://developer.mesh
-
ctp.com
Speculative stuff ahead
Warning
^
New Device Types
•
Media Center
•
Ultra Mobile PC
•
Windows Home Server
New Devices
P
rinters
New Devices
Cars,
Zunes
,
XBoxes
Even More Speculative Device Stuff
•
Mesh
-
enabled picture frames
•
Mesh
-
enabled Eye
-
Fi
cards in cameras
•
Mesh
-
enabled NAS appliance
•
Intel Remote Wake Technology
•
Listens to Mesh Services while the device is asleep
Note: this is an early mockup and doesn’t imply actual product plans (but wouldn’t it be cool)
New App Types
MSI,CAB, and more
Visual Resource Script Designer
SDKs for More languages
•
ActionScript
•
Python
•
Ruby
•
Java
•
Perl
New Resource
TYpes
•
Calendar
•
Mail
•
Photos
•
Groups
•
Favorites
•
Mapping / geospatial
•
Search
•
Messenger
More Operating Systems
•
Windows Mobile
•
Zune
•
XBox
•
Embedded
•
Symbian
•
Linux
External Data Sources
•
Custom external service proxies
•
Facebook
•
Twitter
•
Flickr
•
Photobucket
•
SmugMug
•
TripIt
•
Dopplr
•
eHome
ETC.
•
App Marketplace
•
Office
•
Enterprise support
•
Streaming video & P2P
•
WebDAV
Get
meshified
!
As a user
(you, your friends & coworkers, your mom)
http://www.mesh.com
As a developer
http://developer.mesh
-
ctp.com
Live Framework Forum
Thank you.
Any questions?
Oran Dennison
@
orand
orand.blogspot.com
odennison@gmail.com
Enter the password to open this PDF file:
File name:
-
File size:
-
Title:
-
Author:
-
Subject:
-
Keywords:
-
Creation Date:
-
Modification Date:
-
Creator:
-
PDF Producer:
-
PDF Version:
-
Page Count:
-
Preparing document for printing…
0%
Comments 0
Log in to post a comment