Sei sulla pagina 1di 41

Live Services

Synchronizing Life

Live fx Cloud APIs


Live Services
Synchronizing Life

No Problem.

But I don’t use .NET!


How about these? Live Services
Synchronizing Life
Live Framework Live Services
Synchronizing Life

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

Live Operating Environment


Analytics

CRUD Sync App Hosting CRUD Sync Hosting

Resource Resource Script Engine Auth/Z Local Store


Script Engine
Auth/Z Analytics

Cache … P2P File Sys …

Cloud Client Developer


Sandbox
Windows “Strata” Windows Embedded Windows Mobile Other
Programming Models Live Services
Synchronizing Life

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

Mesh Contacts Profiles ...

MeshObjects Devices News

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

• Retrieves the feed for the resource


• Common return codes
– OK
– Internal Server Error
• Request Headers
– Accept
– ContentLength
– ContentType
– IfModifiedSince
– Authorization
– Cookie
GET Request 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

<?xml version="1.0" encoding="utf-8"?><service xmlns:atom="http://www.w3.org/2005/Atom"


xml:base="https://user-ctp.windows.net/V0.1/" xmlns="http://www.w3.org/2007/
app"><workspace><atom:title name="text">V0.1</atom:title><collection href="Mesh"><atom:title
name="text">Mesh</atom:title><accept>application/atomsvc+xml</accept><accept>application/
json</accept><accept>text/xml</accept><accept>binary/xml</accept><categories fixed="no" /></
collection><collection href="Script"><atom:title name="text">Script</
atom:title><accept>application/resourceScript+xml</accept><accept>application/xml</
accept><accept>text/xml</accept><categories fixed="no" /></collection><collection
href="cid-8570814432615864321/Profiles"><atom:title name="text">Profiles</
atom:title><accept>application/atom+xml;type=feed</accept><accept>application/json</
accept><accept>text/xml</accept><accept>binary/xml</accept><categories fixed="no" /></
collection><collection href="cid-8570814432615864321/Contacts"><atom:title
name="text">Contacts</atom:title><accept>application/atom+xml;type=feed</
accept><accept>application/json</accept><accept>text/xml</accept><accept>binary/xml</
accept><categories fixed="no" /></collection></workspace></service>
PUT a resource Live Services
Synchronizing Life

• Updates the resource


• Common return codes
– OK
– InternalServerError
– PreconditionFailed
• Request Headers
– IfMatch
– ContentLength
– ContentType
– Authorization
– Cookie
PUT Request Live Services
Synchronizing Life

PUT /V0.1/Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU HTTP/1.1


Accept: application/atom+xml
Content-Type: application/atom+xml
Authorization:
dD1Fd0R3QVdyM0F3QVVja09xYW12ZEtTc1ZjK0F0QkdBYmhUSXdlWW1BQUFaV2FheWNxQWRVN
m53eHRCemFiOUo5NjdhV2F0QUt6eWF0WE5ydE8yeEs2TjhtYi9sS3RrY1BNMnhJZ0gwYkw1Vn
pHMU94TVpZMHV6K2YrZjdLbkc3ZGJHbXlFNlUzcXpSZW9MTFl3YS9hc2ErK2ZBQS9kQXFtcEE
1a0lsQm5jdFl5U2IwR2NjRXIwZ2poRTFOVmkxbExBcElMTHV0aUlFb0srejZjR004c0EyWUFB
QWpkR3AxNndXand6MEFCL2NkZGw0WVVWRmxNYUtzOH

Host: user-ctp.windows.net
Content-Length: 209
Expect: 100-continue

<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>
</entry>
PUT Response Live Services
Synchronizing Life

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

• Deletes the resource


• Common return codes
– OK
– InternalServerError
– PreconditionFailed
• Request Headers
– IfMatch
– Authorization
– Cookie
OPTIONS for a resource Live Services
Synchronizing Life

• Returns information about the resource


– Authentication model
– Concurrency control
– Whether the resource is subscribable
– Whether the resource is extensible
– List of supported media types
– List of supported query parameters
– List of relationships for the resource
– List of supported methods (Verbs)
– XML Schema Definition (XSD) for the resource
• Common return codes
– OK
– InternalServerError
– PreconditionFailed
• Request Headers
– IfMatch
OPTIONS Request 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>&lt;name of the link relationship&gt;</PossibleValues>
</QueryParameter>
<QueryParameter>
<Name>$format</Name>
<PossibleValues>json, pox, xml, atom, rss</PossibleValues>
</QueryParameter>
<QueryParameter>
<Name>$callback</Name>

Demo
Live Services
Synchronizing Life

The Resource Browser is


your friend!
Live Services
Synchronizing Life

No problem.

But I don’t know


ATOM!
Multiple Formats Live Services
Synchronizing Life

• Feed types available today


– ATOM
– RSS
– JSON
– POX I thought you
could!
Can you use one of those?
ATOM Live Services
Synchronizing Life

<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 Folder!</title>
<summary type="text">Live Mesh folder to synchronize and share data.</summary>
<published>2008-10-17T13:00:58Z</published>
<updated>2008-10-17T13:00:58Z</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="LiveMeshFolder" label="LiveMeshFolder" scheme="http://user.windows.net/
MeshObject" />
<category term="MeshObject" label="MeshObject" scheme="http://user.windows.net/Resource" />
<category term="LiveDesktop" label="Creator" />
JSON Live Services
Synchronizing Life

{
"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

<MeshObject xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://user.windows.net">


<AuthorProfileLink>email-live.user@live.com/Profiles</AuthorProfileLink>
<Authors>
<Person>
<Name>Ben Williams</Name>
<Uri>email-live.user@live.com/Profiles</Uri>
<Email>live.user@live.com</Email>
</Person>
</Authors>
<BaseUri>https://user-ctp.windows.net/V0.1/</BaseUri>
<Categories>
<Category>
<Label>MeshObject</Label>
<Name>MeshObject</Name>
<Scheme>http://user.windows.net/Resource</Scheme>
</Category>
<Category>
<Label>Creator</Label>
<Name>LiveDesktop</Name>
</Category>
</Categories>
<Id>urn:uuid:26bcf987-8ab2-4c2c-bf9f-f5b46e285625</Id>
<LastUpdatedTime>2008-10-17T13:00:58Z</LastUpdatedTime>
<PublishDate>2008-10-17T13:00:58Z</PublishDate>
<SelfLink>Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU</SelfLink>
<Summary>Live Mesh folder to synchronize and share data.</Summary>
<Title>My Folder!</Title>
<ActivitiesLink>Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/Activities</ActivitiesLink>
<DataFeedsLink>Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/DataFeeds</DataFeedsLink>
<MappingsLink>Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/Mappings</MappingsLink>
<MembersLink>Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/Members</MembersLink>
<NewsFeedLink>Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/News</NewsFeedLink>
<SubscriptionLink>Mesh/MeshObjects/Q743YJVSRIWEZP476W2G4KCWEU/Subscriptions</SubscriptionLink>
<Type>LiveMeshFolder</Type>
Demo
Live Services
Synchronizing Life

Resource Browser, still your


friend!
Live Services
Synchronizing Life

No problem.

But I have a lot of


data!
Sorting & Filtering Live Services
Synchronizing Life

• Don’t pull all the data down


• Pre-sort the data
• Use the power of the server
Filter Queries Live Services
Synchronizing Life

• Used only on GETs


• Add clauses to regular queries

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

Return the second dozen Mesh Objects


that are folders and sort them by title
https://user.windows.net/v1.0/Mesh/MeshObjects/?
$filter=(Type%20eq%20'LiveMeshFolder')&$skip=12&
$take=12&$orderby=Title
Live Services
Synchronizing Life

Can I automate it?

Resource Scripts
Resource Scripts Live Services
Synchronizing Life

• What are they?


– Small domain specific language
– Declarative way to interact with LOE
– Logical equivalent of batched procedures
• Why use them?
– Frees you from the lower level details of
the HTTP protocol
– Improves efficiency
– Extend the Request processing pipeline
with custom business logic
Resource Scripts Live Services
Synchronizing Life

• Declarative modeling for


– Control Flow Statements
• Sequence, Interleave, Conditional, CRUD
– Data Flow Statements
• Bind statements
• Run locally or on the server
• Can run as triggers
• Serialized as POX or JSON
Statements 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

• Server Side Execution


– Script.RunAtServer(credentials)
– Single HTTP request/response

• Client Side (In Process) Execution


– Script.Run(credentials)
– Multiple HTTP requests/responses
– Each statement generates request
Triggers Live Services
Synchronizing Life

• Attach to a resource instance


• Pre and post logic on Create, Update
and Delete
Examples:
– Create a thumbnail after an image
resource is created
– Remove a folder if the last child object is
removed
Authoring and Running Live Services
Synchronizing Life

• Create the statement DOM


• Compile the DOM and generate the
ResourceScript instance
• Execute the ResourceScript instance
• If a trigger, attach to the resource
Demo
Live Services
Synchronizing Life

Resource Script Sample


To use the cloud API Live Services
Synchronizing Life

• Understand the Resource Model


• Use standard HTTP requests
• Use the format you are comfortable
with
Questions?
Live Services
Synchronizing Life

Potrebbero piacerti anche