Your SlideShare is downloading. ×
0
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Windows Azure Toolkit for iOS

2,421

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,421
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
17
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<br />Simon Guest<br />Director, Mobility Solutions<br />Neudesic, LLC<br />simon.guest@neudesic.com<br />
    • 2.
    • 3. 26% of the US Smartphone Market<br />95% of the WW Tablet Market<br />
    • 4. Over 80% of the F500 testing and/or deploying <br />iPad applications in the Enterprise<br />
    • 5. Over 350,000 iPhone Apps<br />Over 100,000 iPad Apps<br />
    • 6. Apple will have sold another 54 iPhones and 11 iPads<br />
    • 7.
    • 8. Many mobile-cloud scenarios<br />
    • 9. iPhone/iPad device on the front end<br />Windows Azure on the back end<br />
    • 10. Using Windows Azure services from iOS is complex<br />
    • 11.
    • 12. Mobile Scenarios enabled by Windows Azure<br />Windows Azure Toolkit for iOS<br />Future Direction and Thoughts<br />
    • 13.
    • 14. 1. Storing and Accessing Photos, Videos, Music<br />
    • 15. 2. Storing and Accessing Structured Data<br />Title: Frog on a twig<br />Author: Simon Guest<br />Date: 7/26/2011<br />Time: 12.45pm<br />Notes: &lt;…&gt; <br />
    • 16. 3. Sharing with Others<br />Title: Frog on a twig<br />Author: Simon Guest<br />Date: 7/26/2011<br />Time: 12.45pm<br />Notes: &lt;…&gt;<br />Message: “Check out my new photo!” <br />
    • 17. <ul><li>Most suitable for binary data (images, video, audio)
    • 18. Container-based approach
    • 19. Streaming and multi-part</li></ul>Blob Storage<br /><ul><li>Most suitable for structured data
    • 20. Dynamic schema
    • 21. Partitioning to enable scale</li></ul>Table Storage<br /><ul><li>Most suitable for short messages
    • 22. First in, First out mechanism
    • 23. Limited durability</li></ul>Queue Storage<br />
    • 24. <ul><li>Most suitable for binary data (images, video, audio)
    • 25. Container-based approach
    • 26. Streaming and multi-part</li></ul>Blob Storage<br /><ul><li>Most suitable for structured data
    • 27. Dynamic schema
    • 28. Partitioning to enable scale</li></ul>Table Storage<br /><ul><li>Most suitable for short messages
    • 29. First in, First out mechanism
    • 30. Limited durability</li></ul>Queue Storage<br />
    • 31. Then, why so complex?<br />
    • 32. Blob Storage<br />
    • 33. Blob Storage<br />
    • 34. REST Endpoint:<br />http://[account].blob.core.windows.net<br />List, Create, and Delete Containers<br />List, Put, Get, Delete Blobs<br />Blob Storage<br />
    • 35. REST Endpoint:<br />http://[account].blob.core.windows.net<br />List, Create, and Delete Containers<br />List, Put, Get, Delete Blobs<br />GET http://iostest.blob.core.windows.net/?comp=list&amp;include=metadata<br />x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT<br />x-ms-version: 2009-09-19<br />x-ms-blob-type: BlockBlob<br />Authorization: SharedKeyiostest:[ComputedHash]<br />Blob Storage<br />
    • 36. How do I get that computed hash?<br />
    • 37. REST Endpoint:<br />http://[account].blob.core.windows.net<br />List, Create, and Delete Containers<br />List, Put, Get, Delete Blobs<br />AccountKey: /9seXadQ9HwOpXUO1jKxFN8q…<br />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<br />Hash = HMACSHA256(UTF8Encode(Request), Base64Decode(AccountKey))<br />Blob Storage<br />Account Key: <br />/9seXadQ9HwOpXUO1jKxFN8q…<br />
    • 38. GET http://iostest.blob.core.windows.net/?comp=list&amp;include=metadata<br />x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT<br />x-ms-version: 2009-09-19<br />x-ms-blob-type: BlockBlob<br />Authorization: SharedKeyiostest:[ComputedHash]<br />&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />&lt;EnumerationResultsAccountName=&quot;http://myaccount.blob.core.windows.net/&quot;&gt;<br /> &lt;Prefix&gt;c&lt;/Prefix&gt;<br /> &lt;MaxResults&gt;3&lt;/MaxResults&gt;<br /> &lt;Containers&gt;<br /> &lt;Container&gt;<br /> &lt;Name&gt;container1&lt;/Name&gt;<br /> &lt;Url&gt;http://iostest.blob.core.windows.net/photos&lt;/Url&gt;<br /> &lt;Properties&gt;<br /> &lt;Last-Modified&gt;Sun, 14 Apr 2011 20:09:03 GMT&lt;/Last-Modified&gt;<br /> &lt;/Properties&gt;<br /> &lt;/Container&gt;<br /> &lt;/Containers&gt;<br />REST Endpoint:<br />http://[account].blob.core.windows.net<br />List, Create, and Delete Containers<br />List, Put, Get, Delete Blobs<br />Blob Storage<br />Account Key: <br />/9seXadQ9HwOpXUO1jKxFN8q…<br />
    • 39. REST Endpoint:<br />http://[account].blob.core.windows.net<br />List, Create, and Delete Containers<br />List, Put, Get, Delete Blobs<br />PUT http://iostest.blob.core.windows.net/photos/party.jpg <br />x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT<br />x-ms-version: 2009-09-19<br />x-ms-blob-type: BlockBlob<br />Authorization: SharedKeyiostest:[ComputedHash]<br />{...binary representation of photo...}<br />Blob Storage<br />Account Key: <br />/9seXadQ9HwOpXUO1jKxFN8q…<br />
    • 40. Repeat process for every service call<br />
    • 41.
    • 42. Different authentication signatures between <br />table, blob, and queue storage<br />
    • 43. XML Parsing in Objective C hurts<br />
    • 44. Memory allocation/disposal of objects<br />
    • 45.
    • 46.
    • 47.
    • 48. Toolkit should be as simple as possible<br />Everything works on the Mac<br />Enable others to contribute<br />
    • 49. Title: Frog on a twig<br />Author: Simon Guest<br />Date: 7/26/2011<br />Time: 12.45pm<br />Notes: &lt;…&gt;<br />Message: “Check out my new photo!” <br />
    • 50. Demo<br />
    • 51. Do I really have to store the <br />Azure account name and key on the device?<br />
    • 52.
    • 53. Azure account name and key give access to everything!<br />Could store in keychain, but also open to compromise<br />Distributed reset mechanism would be very difficult<br />
    • 54.
    • 55. Blob Storage<br />Request signed with Account Key<br />Response<br />Table Storage<br />Account Key<br />Queue Storage<br />
    • 56. Authentication using Username/Password<br />Blob Storage<br />Session token<br />Request with session token<br />Table Storage<br />Response<br />Web Role<br />Queue Storage<br />
    • 57. Authentication using Username/Password<br />Blob Storage<br />Session token<br />Request with Session token<br />Table Storage<br />Response<br />Web Role<br />Queue Storage<br />
    • 58. Authentication using Username/Password<br />Blob Storage<br />Session token<br />Request with Session token<br />Table Storage<br />Response<br />Web Role<br />Queue Storage<br />
    • 59. Demo<br />
    • 60. Authentication using Username/Password<br />Blob Storage<br />Session token<br />Request with Session token<br />Table Storage<br />Response<br />Web Role<br />Queue Storage<br />
    • 61. Toolkit should be as simple as possible<br />Everything works on the Mac<br />Enable others to contribute<br />
    • 62. Authentication using Username/Password<br />Blob Storage<br />Session token<br />Request with Session token<br />Table Storage<br />Response<br />Web Role<br />Queue Storage<br />
    • 63. Authentication using Username/Password<br />Blob Storage<br />Session token<br />Request with Session token<br />Table Storage<br />Response<br />Web Role<br />Queue Storage<br />
    • 64. Demo<br />
    • 65. Membership works, but still have to maintain usernames and passwords<br />
    • 66. v1.2 (released yesterday!) supports ACS<br />
    • 67. Google<br />Yahoo!<br />Windows Live<br />AppFabric<br />WS-Fed MEX<br />Authentication against AppFabric ACS<br />Session token<br />Blob Storage<br />Request with OAuth<br />Response<br />Table Storage<br />Web Role<br />Queue Storage<br />
    • 68. Google<br />Yahoo!<br />Windows Live<br />AppFabric<br />WS-Fed MEX<br />Authentication against AppFabric ACS<br />Session token<br />Blob Storage<br />Request with OAuth<br />Response<br />Table Storage<br />Web Role<br />Queue Storage<br />
    • 69. Demo<br />
    • 70. One more thing…<br />
    • 71. Windows Azure Queues good for pull, <br />but what about push?<br />
    • 72.
    • 73. AppRegistration<br />Apple Push Notification Service<br />gateway.sandbox.push.apple.com<br />Native Application<br />iPad/iPhone OS 4.3.1<br />User Acceptance<br />
    • 74. Token Length<br />Payload Length<br />JSON formatted<br />AppRegistration<br />Send Message Payload<br />0<br />0<br />32<br />deviceToken<br />0<br />34<br />message<br />Apple Push Notification Service<br />gateway.sandbox.push.apple.com<br />Native Application<br />Worker Role<br />iPad/iPhone OS 4.3.1<br />User Acceptance<br />
    • 75. AppRegistration<br />Send Message Payload<br />Apple Push Notification Service<br />gateway.sandbox.push.apple.com<br />Native Application<br />Worker Role<br />Request<br />Response<br />iPad/iPhone OS 4.3.1<br />Web Role<br />User Acceptance<br />Windows Azure Queue<br />Receive Message, LaunchApp<br />
    • 76. Demo<br />
    • 77. Toolkit should be as simple as possible<br />Everything works on the Mac<br />Enable others to contribute<br />
    • 78.
    • 79.
    • 80.
    • 81. Many other iOS libraries are available on GitHub<br />
    • 82. GitHub integrated into XCode 4<br />
    • 83. Strong fork/collaboration model<br />
    • 84. Community Reaction<br />
    • 85. #1 on TechMeme<br />8000+ views in 24 hours<br />40+ placements in online/technical publications <br />
    • 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...<br />@kevatron: Windows azure back end. Android, iOS or Windows Phone front end. Nice work Microsoft. t.co/k0tpId5<br />@sarangbk: @WadeWegnerfinally me and my wife could work out some code together :) she is an iOS Dev. Cc: @kPrajakta #azure #awesomesauce<br />
    • 87.
    • 88. http://github.com/microsoft-dpe<br />
    • 89. Version 1.0.1 (Refactor)<br />Version 1.1 (APN)<br />Version 1.2 (ACS)<br />Version 1.0<br />Jul<br />May<br />Jun<br />
    • 90. Future Directions<br />
    • 91. Other Windows Azure functionality<br />ServiceBus? Management API? Cache? <br />
    • 92. Android Version<br />
    • 93. Case studies and samples<br />
    • 94.
    • 95. Municipality<br />Pinpointed photo using Bing Maps<br />Situational<br />Analysis<br />http://www.j-resq.com<br />
    • 96. Gold Certified Microsoft Partner<br />
    • 97. Thank You!<br />Simon Guest<br />Director, Mobility Solutions<br />Neudesic, LLC<br />simon.guest@neudesic.com<br />

    ×