85
Windows Azure Toolkit for iOS Simon Guest Director, Mobility Solutions Neudesic, LLC [email protected]

Windows Azure Toolkit for iOS

Embed Size (px)

Citation preview

Page 1: Windows Azure Toolkit for iOS

Windows Azure Toolkit for iOS

Simon GuestDirector, Mobility Solutions

Neudesic, [email protected]

Page 2: Windows Azure Toolkit for iOS

iPhone and iPad Momentum

Page 3: Windows Azure Toolkit for iOS

iPhone and iPad Momentum

26% of the US Smartphone Market95% of the WW Tablet Market

Page 4: Windows Azure Toolkit for iOS

iPhone and iPad Momentum

Over 80% of the F500 testing and/or deploying iPad applications in the Enterprise

Page 5: Windows Azure Toolkit for iOS

iPhone and iPad Momentum

Over 350,000 iPhone AppsOver 100,000 iPad Apps

Page 6: Windows Azure Toolkit for iOS

iPhone and iPad Momentum

Apple will have sold another 54 iPhones and 11 iPads

Page 7: Windows Azure Toolkit for iOS

Opportunity

Page 8: Windows Azure Toolkit for iOS

Opportunity

Many mobile-cloud scenarios

Page 9: Windows Azure Toolkit for iOS

Opportunity

iPhone/iPad device on the front endWindows Azure on the back end

Page 10: Windows Azure Toolkit for iOS

Opportunity

Using Windows Azure services from iOS is complex

Page 11: Windows Azure Toolkit for iOS

Objectives

Page 12: Windows Azure Toolkit for iOS

Objectives

Mobile Scenarios enabled by Windows Azure

Windows Azure Toolkit for iOS

Future Direction and Thoughts

Page 13: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Page 14: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios1. Storing and Accessing Photos, Videos, Music

Page 15: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios2. Storing and Accessing Structured Data

Title: Frog on a twigAuthor: Simon GuestDate: 7/26/2011Time: 12.45pmNotes: <…>

Page 16: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios3. Sharing with Others

Title: Frog on a twigAuthor: Simon GuestDate: 7/26/2011Time: 12.45pmNotes: <…>Message: “Check out my new photo!”

Page 17: Windows Azure Toolkit for iOS

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

Page 18: Windows Azure Toolkit for iOS

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

Page 19: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Then, why so complex?

Page 20: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Blob Storage

Page 21: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Blob Storage

Page 22: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Blob Storage

REST Endpoint:http://[account].blob.core.windows.net

List, Create, and Delete ContainersList, Put, Get, Delete Blobs

Page 23: Windows Azure Toolkit for iOS

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]

Page 24: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

How do I get that computed hash?

Page 25: Windows Azure Toolkit for iOS

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…

Page 26: Windows Azure Toolkit for iOS

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>

Page 27: Windows Azure Toolkit for iOS

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...}

Page 28: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Repeat process for every service call

Page 29: Windows Azure Toolkit for iOS

Developer Headache

Page 30: Windows Azure Toolkit for iOS

Developer Headache

Different authentication signatures between table, blob, and queue storage

Page 31: Windows Azure Toolkit for iOS

Developer Headache

XML Parsing in Objective C hurts

Page 32: Windows Azure Toolkit for iOS

Developer Headache

Memory allocation/disposal of objects

Page 33: Windows Azure Toolkit for iOS

Developer Headache

Page 34: Windows Azure Toolkit for iOS

Developer Headache

Page 35: Windows Azure Toolkit for iOS

Windows Azure Toolkit for iOS

Page 36: 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

Page 37: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Title: Frog on a twigAuthor: Simon GuestDate: 7/26/2011Time: 12.45pmNotes: <…>Message: “Check out my new photo!”

Page 38: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Demo

Page 39: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Do I really have to store the Azure account name and key on the device?

Page 40: Windows Azure Toolkit for iOS

Identity Storage

Page 41: Windows Azure Toolkit for iOS

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

Page 42: Windows Azure Toolkit for iOS

Identity Storage

Page 43: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Blob Storage

Table Storage

Queue Storage

Request signed with Account Key

Response

Account Key

Page 44: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Blob Storage

Table Storage

Queue Storage

Authentication using Username/Password

Session token

Web Role

Request with session token

Response

Page 45: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Blob Storage

Table Storage

Queue Storage

Authentication using Username/Password

Session token

Web Role

Request with Session token

Response

Page 46: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Blob Storage

Table Storage

Queue Storage

Authentication using Username/Password

Session token

Web Role

Request with Session token

Response

Page 47: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Demo

Page 48: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Blob Storage

Table Storage

Queue Storage

Authentication using Username/Password

Session token

Web Role

Request with Session token

Response

Page 49: 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

Page 50: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Blob Storage

Table Storage

Queue Storage

Authentication using Username/Password

Session token

Web Role

Request with Session token

Response

Page 51: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Blob Storage

Table Storage

Queue Storage

Authentication using Username/Password

Session token

Web Role

Request with Session token

Response

Page 52: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Demo

Page 53: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Membership works, but still have to maintain usernames and passwords

Page 54: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

v1.2 (released yesterday!) supports ACS

Page 55: Windows Azure Toolkit for iOS

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

Page 56: Windows Azure Toolkit for iOS

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

Page 57: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Demo

Page 58: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

One more thing…

Page 59: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Windows Azure Queues good for pull, but what about push?

Page 60: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Page 61: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

iPad/iPhone OS 4.3.1

Native Application

User Acceptance

Apple Push Notification Servicegateway.sandbox.push.apple.com

App Registration

Page 62: Windows Azure Toolkit for iOS

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

Page 63: Windows Azure Toolkit for iOS

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

Page 64: Windows Azure Toolkit for iOS

Mobile – Cloud Scenarios

Demo

Page 65: 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

Page 66: Windows Azure Toolkit for iOS

Toolkit Release

Page 67: Windows Azure Toolkit for iOS

Toolkit Release

Page 68: Windows Azure Toolkit for iOS

Toolkit Release

Page 69: Windows Azure Toolkit for iOS

Toolkit Release

Many other iOS libraries are available on GitHub

Page 70: Windows Azure Toolkit for iOS

Toolkit Release

GitHub integrated into XCode 4

Page 71: Windows Azure Toolkit for iOS

Toolkit Release

Strong fork/collaboration model

Page 72: Windows Azure Toolkit for iOS

Toolkit Release

Community Reaction

Page 73: Windows Azure Toolkit for iOS

Toolkit Release

#1 on TechMeme8000+ views in 24 hours

40+ placements in online/technical publications

Page 74: Windows Azure Toolkit for iOS

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

Page 75: Windows Azure Toolkit for iOS

Conclusion

Page 76: Windows Azure Toolkit for iOS

Conclusion

http://github.com/microsoft-dpe

Page 77: Windows Azure Toolkit for iOS

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

)

Page 78: Windows Azure Toolkit for iOS

Conclusion

Future Directions

Page 79: Windows Azure Toolkit for iOS

Conclusion

Other Windows Azure functionalityServiceBus? Management API? Cache?

Page 80: Windows Azure Toolkit for iOS

Conclusion

Android Version

Page 81: Windows Azure Toolkit for iOS

Conclusion

Case studies and samples

Page 82: Windows Azure Toolkit for iOS

Conclusion

Page 83: Windows Azure Toolkit for iOS

Conclusion

Municipality

Pinpointed photo using Bing Maps

http://www.j-resq.com

SituationalAnalysis

Page 84: Windows Azure Toolkit for iOS

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

Page 85: Windows Azure Toolkit for iOS

Thank You!Simon Guest

Director, Mobility SolutionsNeudesic, LLC

[email protected]