Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Synchronizing Life
No Problem.
Libraries
.NET FX 3.5 Silverlight JavaScript Client Tools &
Web Controls …
APIs APIs APIs Controls Services
Resource Model
Developer
ATOM JSON POX RSS Binary XML Portal
AtomPub FeedSync
Resource Introspectio
CRUD Sync URI-LINQ Triggers Auth/Z Hosting
Scripts n
Core Data Communications App Model Provisioning
User Mesh / Account
Identity P2P Catalog Management
Folders News
Device Mesh Notifications Hosting
Photos Favorites
Applications Presence Mesh Applications
Contacts Lists
App Data & Settings
Profile Calendar Visual Studio
Application Tools /
System Management Designers
Mapping
Search
Programming
Development model State model Platforms
languages
Any programming
Any platform that
XML and HTTP Stateless Restful language that can work
supports HTTP
with Restful AtomPub
JavaScript on all
JavaScript Stateful JavaScript browsers and all
platforms
Windows-based built
Any programming
Atom Publishing on .NET 3.5
Stateless Restful language that
Protocol Silverlight 2 on all the
supports .NET libraries
supported browsers
Windows-based built
Any programming on .NET 3.5
Mesh Object Model
Stateful language that Silverlight 2 on all the
Libraries
supports .NET libraries supported browsers
and all platforms
Live Framework .NET Kit Live Services
Synchronizing Life
LiveOperatingEnvironment
NewsItems
Members
DataFeeds
DataEntries
Resource Access Live Services
Synchronizing Life
• Relative URI
• Optimistic Concurrency
• HTTP verbs
– GET
– PUT
– OPTIONS
– DELETE
Resource Access Points Live Services
Synchronizing Life
Resource URIs
Applications /Mesh/Applications/{applicationId}/
Application /Mesh/InstalledApplications/
Instance {installedApplicationId}/ApplicationInstances/
Contacts {applicationInstanceId}
/{IdentityId}/Contacts/{ContactId}
DataEntry /Mesh/{storageServiceId}/MeshObjects/
{coreObjectId}/DataFeeds/ {dataFeedDescriptorId}/
DataFeed Entries/{dataEntryId}
/Mesh/MeshObjects/{MeshObjectId}/DataFeeds/
{dataFeedId}
NewsItem /Mesh/News/{newsItemId}
Profile /{IdentityId}/Profiles/{profileId}
GET a resource Live Services
Synchronizing Life
GET / HTTP/1.1
Accept: application/atom+xml
Content-Type: application/atom+xml
Authorization:
dD1Fd0R3QVdyM0F3QVVja09xYW12ZEtTc1ZjK0F0QkdBYmhUSXd
lWW1BQUJBMlhZWFpONkQ3OXMxTDBadTdjTmhyeU16RlJsWURCR3
kzaTZWVWN5ZGw4cXU1eUgybDUzaUNVMzltSUI5WEc0TEZGNGg2c
md2U1IrOG1EVUQxUE5oWk4rdTBUUVlmL2Vo
Host: user-ctp.windows.net
Connection: Keep-Alive
GET Response Live Services
Synchronizing Life
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/atomsvc+xml
Content-Location: https://user-ctp.windows.net/
LiveFX-Request-Id: [7745a1ea-d785-4dde-87bb-b3517cb92c01::]
Date: Mon, 20 Oct 2008 15:07:09 GMT
Content-Length: 1216
Host: user-ctp.windows.net
Content-Length: 209
Expect: 100-continue
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: application/atom+xml
Content-Location: https://user-ctp.windows.net/V0.1/Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU
ETag: 170690609048835
LiveFX-Request-Id: [adf64a2a-adf2-4066-a7fe-7193da751c9a::]
Date: Thu, 23 Oct 2008 17:22:50 GMT
5e4
<?xml version="1.0" encoding="utf-8"?><entry xml:base="https://user-ctp.windows.net/V0.1/"
xmlns="http://www.w3.org/2005/Atom"><id>urn:uuid:26bcf987-8ab2-4c2c-bf9f-f5b46e285625</
id><title type="text">My new folder name!</title><published>2008-10-17T13:00:58Z</
published><updated>2008-10-23T17:22:50Z</updated><author><name>Ben Williams</name><uri>email-
live.user@live.com/Profiles</uri><email>live.user@live.com</email></author><link rel="LiveFX/
DataFeeds" title="LiveFX/DataFeeds" href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/
DataFeeds" /><link rel="LiveFX/Members" title="LiveFX/Members" href="Mesh/MeshObjects/
Q743YJVSRIWEZP476W2G4KCWEU/Members" /><link rel="LiveFX/Mappings" title="LiveFX/Mappings"
href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/Mappings" /><link rel="LiveFX/Activities"
title="LiveFX/Activities" href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/Activities" /
><link rel="LiveFX/NewsItems" title="LiveFX/NewsItems" href="Mesh/MeshObjects/
Q743YJVSRIWEZP476W2G4KCWEU/News" /><link rel="LiveFX/Subscription" title="LiveFX/
Subscription" href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/Subscriptions" /><link
rel="self" title="self" href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU" /><link rel="edit"
title="edit" href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU" /><link rel="LiveFX/
AuthorProfile" title="LiveFX/AuthorProfile" href="email-live.user@live.com/Profiles" /
><category term="MeshObject" label="MeshObject" scheme="http://user.windows.net/Resource" /
></entry>
0
DELETE a resource Live Services
Synchronizing Life
OPTIONS /V0.1/Mesh/MeshObjects/
Q743YJVSRIWEZP476W2G4KCWEU HTTP/1.1
Accept: application/atom+xml
Content-Type: application/atom+xml
Authorization:
dD1Fd0R3QVdyM0F3QVVja09xYW12ZEtTc1ZjK0F0QkdBYmhUSXd
lWW1BQUJBMlhZWFpONkQ3OXMxTDBadTdjTmhyeU16RlJsWURCR3
kzaTZWVWN5ZGw4cXU1eUgybDUzaUNVMzltSUI5WEc0TEZGNGg2c
md2U1IrOG1EVUQxUE5oWk4rdTBUUVlmL2VoRGd5THQvS0JVRVZN
M1ZkTjQvUDgwNkUwOHBvL3dKRytzRkFoMFVPTUVoTlJjUVBXQ0p
TU09FREg5eWticmRQZ2kzY3JMM2NvSEEyWUFBQWpOM3pLcENaNE
k3VUFCL2hSRFd2UDh6b25tdURZU2h2dGZqaVVNRVZCeTB3Q29RT
2pacGR1ZDE3OExMSDVoUDArHost: user-ctp.windows.net
OPTIONS Response Live Services
Synchronizing Life
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: text/xml
Content-Location: https://user-ctp.windows.net/V0.1/Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU
LiveFX-Request-Id: [b01aa71f-67b5-41ab-8933-31b184e6bd9b::]
Date: Mon, 20 Oct 2008 15:28:06 GMT
17ff
<?xml version="1.0" encoding="utf-8"?><ResourceEntryDescription xmlns:i="http://www.w3.org/2001/
XMLSchema-instance" xmlns="http://user.windows.net">
<UriTemplate>Mesh/{storageServiceId}/MeshObjects/{coreObjectId}</UriTemplate>
<AuthenticationModel>WindowsLiveIDAuthentication,WindowsLiveDelegatedAuth</AuthenticationModel>
<QueryParameters>
<QueryParameter>
<Name>$expand</Name>
<PossibleValues><name of the link relationship></PossibleValues>
</QueryParameter>
<QueryParameter>
<Name>$format</Name>
<PossibleValues>json, pox, xml, atom, rss</PossibleValues>
</QueryParameter>
<QueryParameter>
<Name>$callback</Name>
…
Demo
Live Services
Synchronizing Life
No problem.
{
"AuthorProfileLink" : "email-live.user@live.com/Profiles",
"Authors" : [
{
"Name" : "Ben Williams",
"Uri" : "email-live.user@live.com/Profiles",
"Email" : "live.user@live.com"
}
],
"BaseUri" : "https://user-ctp.windows.net/V0.1/",
"Categories" : [
{
"Label" : "MeshObject",
"Name" : "MeshObject",
"Scheme" : "http://user.windows.net/Resource"
},
{
"Label" : "Creator",
"Name" : "LiveDesktop"
}
],
"Id" : "urn:uuid:26bcf987-8ab2-4c2c-bf9f-f5b46e285625",
"LastUpdatedTime" : "/Date(1224248458000)/",
"PublishDate" : "/Date(1224248458000)/",
"SelfLink" : "Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU",
"Summary" : "Live Mesh folder to synchronize and share data.",
"Title" : "My Folder!",
"ActivitiesLink" : "Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/Activities",
"DataFeedsLink" : "Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/DataFeeds",
"MappingsLink" : "Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/Mappings",
"MembersLink" : "Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/Members",
"NewsFeedLink" : "Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/News",
"SubscriptionLink" : "Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/Subscriptions",
"Type" : "LiveMeshFolder"
RSS Live Services
Synchronizing Life
<item xml:base="https://user-ctp.windows.net/V0.1/">
<guid isPermaLink="false">urn:uuid:26bcf987-8ab2-4c2c-bf9f-f5b46e285625</guid>
<author>live.user@live.com</author>
<category domain="http://user.windows.net/MeshObject">LiveMeshFolder</category>
<category domain="http://user.windows.net/Resource">MeshObject</category>
<category>LiveDesktop</category>
<title>My Folder!</title>
<description>Live Mesh folder to synchronize and share data.</description>
<pubDate>Fri, 17 Oct 2008 13:00:58 Z</pubDate>
<link rel="LiveFX/DataFeeds" title="LiveFX/DataFeeds" href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/
DataFeeds" xmlns="http://www.w3.org/2005/Atom" />
<link rel="LiveFX/Members" title="LiveFX/Members" href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/Members"
xmlns="http://www.w3.org/2005/Atom" />
<link rel="LiveFX/Mappings" title="LiveFX/Mappings" href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/
Mappings" xmlns="http://www.w3.org/2005/Atom" />
<link rel="LiveFX/Activities" title="LiveFX/Activities" href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/
Activities" xmlns="http://www.w3.org/2005/Atom" />
<link rel="LiveFX/NewsItems" title="LiveFX/NewsItems" href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/News"
xmlns="http://www.w3.org/2005/Atom" />
<link rel="LiveFX/Subscription" title="LiveFX/Subscription" href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/
Subscriptions" xmlns="http://www.w3.org/2005/Atom" />
<link rel="self" title="self" href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU" xmlns="http://www.w3.org/
2005/Atom" />
<link rel="edit" title="edit" href="Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU" xmlns="http://www.w3.org/
2005/Atom" />
<link rel="LiveFX/AuthorProfile" title="LiveFX/AuthorProfile" href="email-live.user@live.com/Profiles"
xmlns="http://www.w3.org/2005/Atom" />
<updated xmlns="http://www.w3.org/2005/Atom">2008-10-17T13:00:58Z</updated>
</item>
POX Live Services
Synchronizing Life
No problem.
https://user.windows.net/v0.1/Moe/Mesh/MeshObjects/?
$filter=(Title%20eq%20'My%20Junk')
Filter Query Operators Live Services
Synchronizing Life
• Equivalence
– eq, ne, gt, lt
• Boolean
– and, not, or
• Output Parameters
– orderby, skip, take, top
Filter Query Example Live Services
Synchronizing Life
Resource Scripts
Resource Scripts Live Services
Synchronizing Life
• SequenceStatement
– Sequentially executes child statements
• InterleaveStatement
– Executes child statements in parallel
• ConditionalStatement
– If … Else … execution
• CRUD statements
– Operate on resources
Client vs Server Live Services
Synchronizing Life