Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com [email protected].
-
Upload
ferdinand-wilson -
Category
Documents
-
view
214 -
download
0
Transcript of Live Mesh and Live Framework Oran Dennison @orand orand.blogspot.com [email protected].
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 MeshResources, collections and links
resource
collection
resource
UriEntityTagSubscriptionUri…
UriLastUpdateTime…
resource
linkUriTitleRelationshipType…
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!
NewsContactsFolders and filesCustom app dataAppsDevicesSharingUser presenceChange notifications
Live Framework Resource Model
Devices
Media Resources
Data Entry
Members Mappings Data Feeds News Subscription
Applications News Notification Queue
Mesh Objects
Scripts ProfilesMesh 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
…
http://<storage>
http://<directory>
http://<contacts>
<peer devices>
[Client|Cloud] Live Operating Environment
WL ServicesWL
ServicesWL ServicesLive
Services
Web Apps
HTTPHTTPHTTP
HTTP
Device
Cloud
Always Online
AJAX/SL/FlashApps
DesktopApps Mobile Apps
Live Operating Environment
(https://user.windows.net)
AJAX/SL/FlashApps
DesktopApps Local
Cache
WL ServicesWL
ServicesWL ServicesLive
Services
Device
Cloud
Occasionally Connected
P2P to another device
Live Operating Environment
(http://localhost:2048)
Live Operating Environment
(https://user.windows.net)
HTTP
HTTP
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 & AuthorizationMesh 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 deployment 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
<?phprequire_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 Startedhttp://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
^Unauthorized
New Device Types•Media Center•Ultra Mobile PC•Windows Home Server
New Devices Printers
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 developerhttp://developer.mesh-ctp.com
Live Framework Forum