Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Windows Azure Toolkit for iOS

  • Identifiez-vous pour voir les commentaires

Windows Azure Toolkit for iOS

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

×