Windows Azure Toolkit for iOS

  • 1,764 views
Uploaded on

 

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,764
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
16
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • 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

Transcript

  • 1. Windows Azure Toolkit for iOS
    Simon Guest
    Director, Mobility Solutions
    Neudesic, LLC
    simon.guest@neudesic.com
  • 2.
  • 3. 26% of the US Smartphone Market
    95% of the WW Tablet Market
  • 4. Over 80% of the F500 testing and/or deploying
    iPad applications in the Enterprise
  • 5. Over 350,000 iPhone Apps
    Over 100,000 iPad Apps
  • 6. Apple will have sold another 54 iPhones and 11 iPads
  • 7.
  • 8. Many mobile-cloud scenarios
  • 9. iPhone/iPad device on the front end
    Windows Azure on the back end
  • 10. Using Windows Azure services from iOS is complex
  • 11.
  • 12. Mobile Scenarios enabled by Windows Azure
    Windows Azure Toolkit for iOS
    Future Direction and Thoughts
  • 13.
  • 14. 1. Storing and Accessing Photos, Videos, Music
  • 15. 2. Storing and Accessing Structured Data
    Title: Frog on a twig
    Author: Simon Guest
    Date: 7/26/2011
    Time: 12.45pm
    Notes: <…>
  • 16. 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!”
  • 17.
    • Most suitable for binary data (images, video, audio)
    • 18. Container-based approach
    • 19. Streaming and multi-part
    Blob Storage
    • Most suitable for structured data
    • 20. Dynamic schema
    • 21. Partitioning to enable scale
    Table Storage
    • Most suitable for short messages
    • 22. First in, First out mechanism
    • 23. Limited durability
    Queue Storage
  • 24.
    • Most suitable for binary data (images, video, audio)
    • 25. Container-based approach
    • 26. Streaming and multi-part
    Blob Storage
    • Most suitable for structured data
    • 27. Dynamic schema
    • 28. Partitioning to enable scale
    Table Storage
    • Most suitable for short messages
    • 29. First in, First out mechanism
    • 30. Limited durability
    Queue Storage
  • 31. Then, why so complex?
  • 32. Blob Storage
  • 33. Blob Storage
  • 34. REST Endpoint:
    http://[account].blob.core.windows.net
    List, Create, and Delete Containers
    List, Put, Get, Delete Blobs
    Blob Storage
  • 35. 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
  • 36. How do I get that computed hash?
  • 37. 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…
  • 38. 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…
  • 39. 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…
  • 40. Repeat process for every service call
  • 41.
  • 42. Different authentication signatures between
    table, blob, and queue storage
  • 43. XML Parsing in Objective C hurts
  • 44. Memory allocation/disposal of objects
  • 45.
  • 46.
  • 47.
  • 48. Toolkit should be as simple as possible
    Everything works on the Mac
    Enable others to contribute
  • 49. Title: Frog on a twig
    Author: Simon Guest
    Date: 7/26/2011
    Time: 12.45pm
    Notes: <…>
    Message: “Check out my new photo!”
  • 50. Demo
  • 51. Do I really have to store the
    Azure account name and key on the device?
  • 52.
  • 53. 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
  • 54.
  • 55. Blob Storage
    Request signed with Account Key
    Response
    Table Storage
    Account Key
    Queue Storage
  • 56. Authentication using Username/Password
    Blob Storage
    Session token
    Request with session token
    Table Storage
    Response
    Web Role
    Queue Storage
  • 57. Authentication using Username/Password
    Blob Storage
    Session token
    Request with Session token
    Table Storage
    Response
    Web Role
    Queue Storage
  • 58. Authentication using Username/Password
    Blob Storage
    Session token
    Request with Session token
    Table Storage
    Response
    Web Role
    Queue Storage
  • 59. Demo
  • 60. Authentication using Username/Password
    Blob Storage
    Session token
    Request with Session token
    Table Storage
    Response
    Web Role
    Queue Storage
  • 61. Toolkit should be as simple as possible
    Everything works on the Mac
    Enable others to contribute
  • 62. Authentication using Username/Password
    Blob Storage
    Session token
    Request with Session token
    Table Storage
    Response
    Web Role
    Queue Storage
  • 63. Authentication using Username/Password
    Blob Storage
    Session token
    Request with Session token
    Table Storage
    Response
    Web Role
    Queue Storage
  • 64. Demo
  • 65. Membership works, but still have to maintain usernames and passwords
  • 66. v1.2 (released yesterday!) supports ACS
  • 67. 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
  • 68. 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
  • 69. Demo
  • 70. One more thing…
  • 71. Windows Azure Queues good for pull,
    but what about push?
  • 72.
  • 73. AppRegistration
    Apple Push Notification Service
    gateway.sandbox.push.apple.com
    Native Application
    iPad/iPhone OS 4.3.1
    User Acceptance
  • 74. 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
  • 75. 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
  • 76. Demo
  • 77. Toolkit should be as simple as possible
    Everything works on the Mac
    Enable others to contribute
  • 78.
  • 79.
  • 80.
  • 81. Many other iOS libraries are available on GitHub
  • 82. GitHub integrated into XCode 4
  • 83. Strong fork/collaboration model
  • 84. Community Reaction
  • 85. #1 on TechMeme
    8000+ views in 24 hours
    40+ placements in online/technical publications
  • 86. @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
  • 87.
  • 88. http://github.com/microsoft-dpe
  • 89. Version 1.0.1 (Refactor)
    Version 1.1 (APN)
    Version 1.2 (ACS)
    Version 1.0
    Jul
    May
    Jun
  • 90. Future Directions
  • 91. Other Windows Azure functionality
    ServiceBus? Management API? Cache?
  • 92. Android Version
  • 93. Case studies and samples
  • 94.
  • 95. Municipality
    Pinpointed photo using Bing Maps
    Situational
    Analysis
    http://www.j-resq.com
  • 96. Gold Certified Microsoft Partner
  • 97. Thank You!
    Simon Guest
    Director, Mobility Solutions
    Neudesic, LLC
    simon.guest@neudesic.com