Windows Azure Toolkit for iOS

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

Google

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

Google

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