Windows Azure Toolkit for iOS
Upcoming SlideShare
Loading in...5
×
 

Windows Azure Toolkit for iOS

on

  • 2,278 views

 

Statistics

Views

Total Views
2,278
Views on SlideShare
2,089
Embed Views
189

Actions

Likes
1
Downloads
16
Comments
0

3 Embeds 189

http://simonguest.com 184
http://www.jroller.com 3
http://jroller.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI
  • Segoe UI

Windows Azure Toolkit for iOS Windows Azure Toolkit for iOS Presentation Transcript

  • Windows Azure Toolkit for iOS
    Simon Guest
    Director, Mobility Solutions
    Neudesic, LLC
    simon.guest@neudesic.com
  • 26% of the US Smartphone Market
    95% of the WW Tablet Market
  • Over 80% of the F500 testing and/or deploying
    iPad applications in the Enterprise
  • Over 350,000 iPhone Apps
    Over 100,000 iPad Apps
  • Apple will have sold another 54 iPhones and 11 iPads
  • Many mobile-cloud scenarios
  • iPhone/iPad device on the front end
    Windows Azure on the back end
  • Using Windows Azure services from iOS is complex
  • Mobile Scenarios enabled by Windows Azure
    Windows Azure Toolkit for iOS
    Future Direction and Thoughts
  • 1. Storing and Accessing Photos, Videos, Music
  • 2. Storing and Accessing Structured Data
    Title: Frog on a twig
    Author: Simon Guest
    Date: 7/26/2011
    Time: 12.45pm
    Notes: <…>
  • 3. Sharing with Others
    Title: Frog on a twig
    Author: Simon Guest
    Date: 7/26/2011
    Time: 12.45pm
    Notes: <…>
    Message: “Check out my new photo!”
    • Most suitable for binary data (images, video, audio)
    • Container-based approach
    • Streaming and multi-part
    Blob Storage
    • Most suitable for structured data
    • Dynamic schema
    • Partitioning to enable scale
    Table Storage
    • Most suitable for short messages
    • First in, First out mechanism
    • Limited durability
    Queue Storage
    • Most suitable for binary data (images, video, audio)
    • Container-based approach
    • Streaming and multi-part
    Blob Storage
    • Most suitable for structured data
    • Dynamic schema
    • Partitioning to enable scale
    Table Storage
    • Most suitable for short messages
    • First in, First out mechanism
    • Limited durability
    Queue Storage
  • Then, why so complex?
  • Blob Storage
  • Blob Storage
  • REST Endpoint:
    http://[account].blob.core.windows.net
    List, Create, and Delete Containers
    List, Put, Get, Delete Blobs
    Blob Storage
  • REST Endpoint:
    http://[account].blob.core.windows.net
    List, Create, and Delete Containers
    List, Put, Get, Delete Blobs
    GET http://iostest.blob.core.windows.net/?comp=list&include=metadata
    x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT
    x-ms-version: 2009-09-19
    x-ms-blob-type: BlockBlob
    Authorization: SharedKeyiostest:[ComputedHash]
    Blob Storage
  • How do I get that computed hash?
  • REST Endpoint:
    http://[account].blob.core.windows.net
    List, Create, and Delete Containers
    List, Put, Get, Delete Blobs
    AccountKey: /9seXadQ9HwOpXUO1jKxFN8q…
    Request: GETnnnnnnnnnnnnx-ms-blob-type:BlockBlobnx-ms-date:Thu, 14 Apr 2011 20:30:00 GMTnx-ms-version:2009-09-19n/iostest/ncomp:listninclude:metadata
    Hash = HMACSHA256(UTF8Encode(Request), Base64Decode(AccountKey))
    Blob Storage
    Account Key:
    /9seXadQ9HwOpXUO1jKxFN8q…
  • GET http://iostest.blob.core.windows.net/?comp=list&include=metadata
    x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT
    x-ms-version: 2009-09-19
    x-ms-blob-type: BlockBlob
    Authorization: SharedKeyiostest:[ComputedHash]
    <?xml version="1.0" encoding="utf-8"?>
    <EnumerationResultsAccountName="http://myaccount.blob.core.windows.net/">
    <Prefix>c</Prefix>
    <MaxResults>3</MaxResults>
    <Containers>
    <Container>
    <Name>container1</Name>
    <Url>http://iostest.blob.core.windows.net/photos</Url>
    <Properties>
    <Last-Modified>Sun, 14 Apr 2011 20:09:03 GMT</Last-Modified>
    </Properties>
    </Container>
    </Containers>
    REST Endpoint:
    http://[account].blob.core.windows.net
    List, Create, and Delete Containers
    List, Put, Get, Delete Blobs
    Blob Storage
    Account Key:
    /9seXadQ9HwOpXUO1jKxFN8q…
  • REST Endpoint:
    http://[account].blob.core.windows.net
    List, Create, and Delete Containers
    List, Put, Get, Delete Blobs
    PUT http://iostest.blob.core.windows.net/photos/party.jpg
    x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT
    x-ms-version: 2009-09-19
    x-ms-blob-type: BlockBlob
    Authorization: SharedKeyiostest:[ComputedHash]
    {...binary representation of photo...}
    Blob Storage
    Account Key:
    /9seXadQ9HwOpXUO1jKxFN8q…
  • Repeat process for every service call
  • Different authentication signatures between
    table, blob, and queue storage
  • XML Parsing in Objective C hurts
  • Memory allocation/disposal of objects
  • Toolkit should be as simple as possible
    Everything works on the Mac
    Enable others to contribute
  • Title: Frog on a twig
    Author: Simon Guest
    Date: 7/26/2011
    Time: 12.45pm
    Notes: <…>
    Message: “Check out my new photo!”
  • Demo
  • Do I really have to store the
    Azure account name and key on the device?
  • Azure account name and key give access to everything!
    Could store in keychain, but also open to compromise
    Distributed reset mechanism would be very difficult
  • Blob Storage
    Request signed with Account Key
    Response
    Table Storage
    Account Key
    Queue Storage
  • Authentication using Username/Password
    Blob Storage
    Session token
    Request with session token
    Table Storage
    Response
    Web Role
    Queue Storage
  • Authentication using Username/Password
    Blob Storage
    Session token
    Request with Session token
    Table Storage
    Response
    Web Role
    Queue Storage
  • Authentication using Username/Password
    Blob Storage
    Session token
    Request with Session token
    Table Storage
    Response
    Web Role
    Queue Storage
  • Demo
  • Authentication using Username/Password
    Blob Storage
    Session token
    Request with Session token
    Table Storage
    Response
    Web Role
    Queue Storage
  • Toolkit should be as simple as possible
    Everything works on the Mac
    Enable others to contribute
  • Authentication using Username/Password
    Blob Storage
    Session token
    Request with Session token
    Table Storage
    Response
    Web Role
    Queue Storage
  • Authentication using Username/Password
    Blob Storage
    Session token
    Request with Session token
    Table Storage
    Response
    Web Role
    Queue Storage
  • Demo
  • Membership works, but still have to maintain usernames and passwords
  • v1.2 (released yesterday!) supports ACS
  • Google
    Yahoo!
    Windows Live
    AppFabric
    WS-Fed MEX
    Authentication against AppFabric ACS
    Session token
    Blob Storage
    Request with OAuth
    Response
    Table Storage
    Web Role
    Queue Storage
  • Google
    Yahoo!
    Windows Live
    AppFabric
    WS-Fed MEX
    Authentication against AppFabric ACS
    Session token
    Blob Storage
    Request with OAuth
    Response
    Table Storage
    Web Role
    Queue Storage
  • Demo
  • One more thing…
  • Windows Azure Queues good for pull,
    but what about push?
  • AppRegistration
    Apple Push Notification Service
    gateway.sandbox.push.apple.com
    Native Application
    iPad/iPhone OS 4.3.1
    User Acceptance
  • Token Length
    Payload Length
    JSON formatted
    AppRegistration
    Send Message Payload
    0
    0
    32
    deviceToken
    0
    34
    message
    Apple Push Notification Service
    gateway.sandbox.push.apple.com
    Native Application
    Worker Role
    iPad/iPhone OS 4.3.1
    User Acceptance
  • AppRegistration
    Send Message Payload
    Apple Push Notification Service
    gateway.sandbox.push.apple.com
    Native Application
    Worker Role
    Request
    Response
    iPad/iPhone OS 4.3.1
    Web Role
    User Acceptance
    Windows Azure Queue
    Receive Message, LaunchApp
  • Demo
  • Toolkit should be as simple as possible
    Everything works on the Mac
    Enable others to contribute
  • Many other iOS libraries are available on GitHub
  • GitHub integrated into XCode 4
  • Strong fork/collaboration model
  • Community Reaction
  • #1 on TechMeme
    8000+ views in 24 hours
    40+ placements in online/technical publications
  • @aallan: MS has announced #Azure toolkits for iOS, Android and Windows Phone, bit.ly/jgROPK. The sky might be falling, let me look outside...
    @kevatron: Windows azure back end. Android, iOS or Windows Phone front end. Nice work Microsoft. t.co/k0tpId5
    @sarangbk: @WadeWegnerfinally me and my wife could work out some code together :) she is an iOS Dev. Cc: @kPrajakta #azure #awesomesauce
  • http://github.com/microsoft-dpe
  • Version 1.0.1 (Refactor)
    Version 1.1 (APN)
    Version 1.2 (ACS)
    Version 1.0
    Jul
    May
    Jun
  • Future Directions
  • Other Windows Azure functionality
    ServiceBus? Management API? Cache?
  • Android Version
  • Case studies and samples
  • Municipality
    Pinpointed photo using Bing Maps
    Situational
    Analysis
    http://www.j-resq.com
  • Gold Certified Microsoft Partner
  • Thank You!
    Simon Guest
    Director, Mobility Solutions
    Neudesic, LLC
    simon.guest@neudesic.com