View
2.366
Download
4
Category
Preview:
Citation preview
Windows Azure Toolkit for iOS
Simon GuestDirector, Mobility Solutions
Neudesic, LLCsimon.guest@neudesic.com
iPhone and iPad Momentum
iPhone and iPad Momentum
26% of the US Smartphone Market95% of the WW Tablet Market
iPhone and iPad Momentum
Over 80% of the F500 testing and/or deploying iPad applications in the Enterprise
iPhone and iPad Momentum
Over 350,000 iPhone AppsOver 100,000 iPad Apps
iPhone and iPad Momentum
Apple will have sold another 54 iPhones and 11 iPads
Opportunity
Opportunity
Many mobile-cloud scenarios
Opportunity
iPhone/iPad device on the front endWindows Azure on the back end
Opportunity
Using Windows Azure services from iOS is complex
Objectives
Objectives
Mobile Scenarios enabled by Windows Azure
Windows Azure Toolkit for iOS
Future Direction and Thoughts
Mobile – Cloud Scenarios
Mobile – Cloud Scenarios1. Storing and Accessing Photos, Videos, Music
Mobile – Cloud Scenarios2. Storing and Accessing Structured Data
Title: Frog on a twigAuthor: Simon GuestDate: 7/26/2011Time: 12.45pmNotes: <…>
Mobile – Cloud Scenarios3. Sharing with Others
Title: Frog on a twigAuthor: Simon GuestDate: 7/26/2011Time: 12.45pmNotes: <…>Message: “Check out my new photo!”
Mobile – Cloud Scenarios
Blob Storage
Table Storage
• Most suitable for binary data (images, video, audio)
• Container-based approach• Streaming and multi-part
• Most suitable for structured data
• Dynamic schema• Partitioning to enable scale
• Most suitable for short messages
• First in, First out mechanism• Limited durability Queue Storage
Mobile – Cloud Scenarios
Blob Storage
Table Storage
Queue Storage
• Most suitable for binary data (images, video, audio)
• Container-based approach• Streaming and multi-part
• Most suitable for structured data
• Dynamic schema• Partitioning to enable scale
• Most suitable for short messages
• First in, First out mechanism• Limited durability
Mobile – Cloud Scenarios
Then, why so complex?
Mobile – Cloud Scenarios
Blob Storage
Mobile – Cloud Scenarios
Blob Storage
Mobile – Cloud Scenarios
Blob Storage
REST Endpoint:http://[account].blob.core.windows.net
List, Create, and Delete ContainersList, Put, Get, Delete Blobs
Mobile – Cloud Scenarios
Blob Storage
REST Endpoint:http://[account].blob.core.windows.net
List, Create, and Delete ContainersList, 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 GMTx-ms-version: 2009-09-19x-ms-blob-type: BlockBlobAuthorization: SharedKey iostest:[ComputedHash]
Mobile – Cloud Scenarios
How do I get that computed hash?
Mobile – Cloud Scenarios
Blob Storage
REST Endpoint:http://[account].blob.core.windows.net
List, Create, and Delete ContainersList, Put, Get, Delete BlobsAccountKey: /9seXadQ9HwOpXUO1jKxFN8q…
Request: GET\n\n\n\n\n\n\n\n\n\n\n\nx-ms-blob-type:BlockBlob\nx-ms-date:Thu, 14 Apr 2011 20:30:00 GMT\nx-ms-version:2009-09-19\n/iostest/\ncomp:list\ninclude:metadata
Hash = HMACSHA256(UTF8Encode(Request), Base64Decode(AccountKey))
Account Key: /9seXadQ9HwOpXUO1jKxFN8q…
Mobile – Cloud Scenarios
Blob Storage
REST Endpoint:http://[account].blob.core.windows.net
List, Create, and Delete ContainersList, Put, Get, Delete Blobs
Account Key: /9seXadQ9HwOpXUO1jKxFN8q…
GET http://iostest.blob.core.windows.net/?comp=list&include=metadata
x-ms-date: Thu, 14 Apr 2011 20:30:00 GMTx-ms-version: 2009-09-19x-ms-blob-type: BlockBlobAuthorization: SharedKey iostest:[ComputedHash]
<?xml version="1.0" encoding="utf-8"?><EnumerationResults AccountName="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>
Mobile – Cloud Scenarios
Blob Storage
REST Endpoint:http://[account].blob.core.windows.net
List, Create, and Delete ContainersList, Put, Get, Delete Blobs
Account Key: /9seXadQ9HwOpXUO1jKxFN8q…
PUT http://iostest.blob.core.windows.net/photos/party.jpg
x-ms-date: Thu, 14 Apr 2011 20:30:00 GMTx-ms-version: 2009-09-19x-ms-blob-type: BlockBlobAuthorization: SharedKey iostest:[ComputedHash]
{...binary representation of photo...}
Mobile – Cloud Scenarios
Repeat process for every service call
Developer Headache
Developer Headache
Different authentication signatures between table, blob, and queue storage
Developer Headache
XML Parsing in Objective C hurts
Developer Headache
Memory allocation/disposal of objects
Developer Headache
Developer Headache
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
1. Toolkit should be as simple as possible2. Everything works on the Mac3. Enable others to contribute
Mobile – Cloud Scenarios
Title: Frog on a twigAuthor: Simon GuestDate: 7/26/2011Time: 12.45pmNotes: <…>Message: “Check out my new photo!”
Mobile – Cloud Scenarios
Demo
Mobile – Cloud Scenarios
Do I really have to store the Azure account name and key on the device?
Identity Storage
Identity Storage
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
Identity Storage
Mobile – Cloud Scenarios
Blob Storage
Table Storage
Queue Storage
Request signed with Account Key
Response
Account Key
Mobile – Cloud Scenarios
Blob Storage
Table Storage
Queue Storage
Authentication using Username/Password
Session token
Web Role
Request with session token
Response
Mobile – Cloud Scenarios
Blob Storage
Table Storage
Queue Storage
Authentication using Username/Password
Session token
Web Role
Request with Session token
Response
Mobile – Cloud Scenarios
Blob Storage
Table Storage
Queue Storage
Authentication using Username/Password
Session token
Web Role
Request with Session token
Response
Mobile – Cloud Scenarios
Demo
Mobile – Cloud Scenarios
Blob Storage
Table Storage
Queue Storage
Authentication using Username/Password
Session token
Web Role
Request with Session token
Response
Windows Azure Toolkit for iOS
1. Toolkit should be as simple as possible2. Everything works on the Mac3. Enable others to contribute
Mobile – Cloud Scenarios
Blob Storage
Table Storage
Queue Storage
Authentication using Username/Password
Session token
Web Role
Request with Session token
Response
Mobile – Cloud Scenarios
Blob Storage
Table Storage
Queue Storage
Authentication using Username/Password
Session token
Web Role
Request with Session token
Response
Mobile – Cloud Scenarios
Demo
Mobile – Cloud Scenarios
Membership works, but still have to maintain usernames and passwords
Mobile – Cloud Scenarios
v1.2 (released yesterday!) supports ACS
Mobile – Cloud Scenarios
Blob Storage
Table Storage
Queue Storage
Authentication against AppFabric
ACS Session
token
Web Role
Request with OAuth
Response
AppFabric
Yahoo!
Windows Live
WS-Fed MEX
Mobile – Cloud Scenarios
Blob Storage
Table Storage
Queue Storage
Authentication against AppFabric
ACS Session
token
Web Role
Request with OAuth
Response
AppFabric
Yahoo!
Windows Live
WS-Fed MEX
Mobile – Cloud Scenarios
Demo
Mobile – Cloud Scenarios
One more thing…
Mobile – Cloud Scenarios
Windows Azure Queues good for pull, but what about push?
Mobile – Cloud Scenarios
Mobile – Cloud Scenarios
iPad/iPhone OS 4.3.1
Native Application
User Acceptance
Apple Push Notification Servicegateway.sandbox.push.apple.com
App Registration
Mobile – Cloud Scenarios
iPad/iPhone OS 4.3.1
Native ApplicationApple Push Notification Service
gateway.sandbox.push.apple.com
User Acceptance
App Registration
Worker Role
Send Message Payload
0 0 32 deviceToken 0 34 message
Token Length Payload Length JSON formatted
Mobile – Cloud Scenarios
iPad/iPhone OS 4.3.1
Native ApplicationApple Push Notification Service
gateway.sandbox.push.apple.com
User Acceptance
App Registration
Worker Role
Send Message Payload
Windows Azure Queue
Web Role
Receive Message, Launch App
Request
Response
Mobile – Cloud Scenarios
Demo
Windows Azure Toolkit for iOS
1. Toolkit should be as simple as possible2. Everything works on the Mac3. Enable others to contribute
Toolkit Release
Toolkit Release
Toolkit Release
Toolkit Release
Many other iOS libraries are available on GitHub
Toolkit Release
GitHub integrated into XCode 4
Toolkit Release
Strong fork/collaboration model
Toolkit Release
Community Reaction
Toolkit Release
#1 on TechMeme8000+ views in 24 hours
40+ placements in online/technical publications
Toolkit Release
@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: @WadeWegner finally me and my wife could work out some code together :)
she is an iOS Dev. Cc: @kPrajakta #azure #awesomesauce
Conclusion
Conclusion
http://github.com/microsoft-dpe
Conclusion
JulMay Jun
Versi
on 1.
0
Versi
on 1.
0.1 (R
efac
tor)
Versi
on 1.
1 (APN
)
Versi
on 1.
2 (ACS
)
Conclusion
Future Directions
Conclusion
Other Windows Azure functionalityServiceBus? Management API? Cache?
Conclusion
Android Version
Conclusion
Case studies and samples
Conclusion
Conclusion
Municipality
Pinpointed photo using Bing Maps
http://www.j-resq.com
SituationalAnalysis
Windows Phone 7 iPhone iPad Android Blackberry
Kelley Blue Book
Realtor.com
Neudesic Pulse
Whole Foods
Symetra Financial
Jeep TripCast
Azure Toolkit for iOS
SimonMed
VHA Inc
Kelley Blue Book
Symetra Financial
Kelley Blue Book
Neudesic Pulse
Azure Toolkit for Android
Neudesic Pulse
Gold Certified Microsoft Partner
Thank You!Simon Guest
Director, Mobility SolutionsNeudesic, LLC
simon.guest@neudesic.com
Recommended