Date post: | 28-Dec-2015 |
Category: |
Documents |
Upload: | claire-welch |
View: | 219 times |
Download: | 0 times |
Live Framework: Architecture and Insights
Ori AmigaGroup Program ManagerMicrosoft Corporation
Azure™ Services Platform
Azure™ Services Platform
Agenda
Hard Problems Execution Engine Programming Model Summary Q & A
Observations
Devices Diversity of devices on the rise My Computer My Mesh
Data Users’ data is everywhere, in cloud,on devices Data is often shared
Applications Span devices Are getting social
People An integral part of our digital life
Hard problems
Composing data across cloud services and devices
Overlay ‘uber’ schema Making data available, efficiently and
consistently Synchronized consistent cache Writing robust communication code Dealing with async and managing state Dealing with disjoint programming models Centralized resource management
Live Operating Environment
Live Framework’s service composition engine Provides a programmable schema in the cloud
“cached reflection” on all my devices Takes care of the hard problems…
Offline and sync Centralized Resource management Communication Device management, user/device presence, notifications
Exists in cloud and on all devices All the incarnations look and feel the same Architected the same way
Provides a unified and consistent programming model to all the apps
Live Operating Environment…
http://<storage>
http://<directory>
http://<contacts>
<peer devices>
[Client|Cloud] Live Operating Environment
Provides applications unified access to user’s data
Is everywhere On local device (Client LOE) In the cloud (Cloud LOE) All incarnations share an identical architecture
Its just HTTP
demo
WL ServicesWL
ServicesWL ServicesLive
Services
Web Apps
HTTPHTTPHTTP
HTTP
Device
Cloud
Always Online
AJAX/SL/FlashApps
DesktopApps Mobile Apps
Live Operating Environment
(http://user.windows.net)
AJAX/SL/FlashApps
DesktopApps Local
Cache
WL ServicesWL
ServicesWL ServicesLive
Services
Device
Cloud
Occasionally Connected
P2P to another device
HTTP
HTTP
Live Operating Environment
(http://localhost:2048)
Live Operating Environment
(http://user.windows.net)
HTTP
Cloud and Client Symmetry
demo
Inside Live Operating Environment
Host (Web/desktop)
(Full /Min) CLR
Live Operating Environment Engine
Scheduler
Sync EnginesSync Engines
Sync Engines
Cache
Sync EnginesSync EnginesService Proxies
Formatters
Notifications
FS Manager Auth/AuthZ
Analytics
API Throttler
App Engine
Resource Manager
Script Engine
P2P Comms
HTTP Comms Device Mgmt
Live Framework Programming Model
Live Framework Infoset
Programming Model – Building Blocks
ResourceExtensibility
Resources & Relationships
Naming & Addressing
IntrospectionURI-LINQ Query
Script/TriggersCRUDWire
Formats Sync Auth
Nouns
Everything interesting is a resource Data, applications, news,
subscriptions/notifications, social graph… Resources
are URL addressable based on a simple infoset (properties, records,
collections) projected onto wire as Atom, JSON, POX, RSS can come from various data sources MeshObject -- a distinguished resource meant
for domain specific extensibility Relationships
Hyperlink based across resources Can be in-lined
Verbs
Standard HTTP methods and their interpretation 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
Resource Scripts
A domain specific language to do AtomPub and FeedSync
Grammar includes statements for CRUD, sync, control flow and data binding
Usage patterns Powerful batching model Pre/Post Triggers associated with resources
Programs serialized in JSON and POX in v0.1 Native XAML and DLR bindings in future Compensation!
Late binding of execution locality (local vs. remote) Allows you to Visually design Live Framework
programs
AtomPub statements (Request/Response) CreateResource ReadResource/ReadResourceCollection UpdateResource DeleteResource CreateMediaResource ReadMediaResource UpdateMediaResource DeleteMediaResource
FeedSync statements SynchronizeResourceCollection
Resource Scripts
Control Flow statements Sequence ala {…} block, executed sequentially Interleave ala spawning a thread and executing
each statement in the block on a separate thread. Conditional ala If and If Else statement. The
conditional expression is a Expression<Func<Statement, bool>> and is a lambda expression which returns a bool.
While looping construct
Assign statements Allows for assigning properties of two statements
Resource Scripts
Basic authoring involves: Build the statement DOM, either from Compile the DOM Execute the Script
Use cases: Help avoiding chattiness/roundtrips.
Single POST can execute a large program. Modularization mechanism.
Allows for factoring out all LOE interactions in a separate unit. Can be used as triggers and sprocs.
Native Silverlight, DLR, JS support on the radarwindow.livefx.scripting.createResourceScript(/*JSON*/).compile().run();
Resource Scripts
Bringing data in the Mesh using Resource Scripts
demo
Data Extensibility
demo
Blow away the DB/MR/Assembler directory to start “fresh”. [Client re-downloads everything on first sign-in)
Local metadata store is in SQLCE (hint hint)[make sure to copy before peaking]
RMB against client/cloud helps differentiate client bugs vs. app bugs.
Monitoring the size of the Assembler vs. MR directory is a lightweight way to measure progress of enclosure fetch.
Collect logs when you run into issues. We absolutely use them.
Tips n' Tricks
Summary
Service composition engine on all devices (cloud is treated as a special device)
A symmetric cloud and client programming model Platform agnostic, and lowest common
denominator approach Resource oriented approach
Everything is a resource Resources are URL addressable Standard HTTP verbs for CRUD, sync and
scripting Simple and open
Related Sessions
Code Date/Time Room Session
BB19 Wed – 10:30am 153 Live Framework Architecture and Insights
BB51 Wed – 1:15pm 501B Programming using non-Microsoft technologies
BB06 Wed – 3:00pm 153 Mesh Services Architecture and Concepts
BB30 Wed – 4:45pm 153 Mesh-Enabled Web Applications
BB31 Thu – 8:30am 153 FeedSync and Mesh Synchronization Services
BB35 Thu – 10:15am 411 The Future of the Device Mesh
BB34 Thu – 12noon 153 Notifications, Awareness, and Communications
BB10 Thu – 1:45pm 408A Deep Dive on Microsoft Virtual Earth
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.
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