SlideShare a Scribd company logo
Developing iPhone and iPad apps that leverage Windows Azure
Developing iPhone and iPad apps that Leverage Windows AzureSimon GuestDirector, Mobility SolutionsNeudesic, LLCsimon.guest@neudesic.com
I go to a lot of conferences…
Intro SectionSome of them are a little boring…Some of them are more interesting than others…
IntroductionMIX is always interesting!
Intro Section“There’s an app for that!”“There’s an app for that!”Share stuffAccess agendaKeep up to date
Uploading stuffAccessing agendaKeeping up to date321Use Cloud for StorageReceive NotificationsAccess Applications
Developing iPhone and iPad apps that leverage Windows Azure
1
Developing iPhone and iPad apps that leverage Windows Azure
Blob StorageTable Storage
Most suitable for binary data (images, video, audio)
Container-based approach
8k metadata for each blobBlob StorageTable Storage
Blob StorageTable StorageMost suitable for structured data
Dynamic schema
Partitioning to enable scaleBlob Storage
Blob Storage
Blob Storage
REST Endpoint:http://[account].blob.core.windows.netList, Create, and Delete Containers
List, Put, Get, Delete BlobsphotosBlob Storage
REST request for listing all containersREST Endpoint:http://[account].blob.core.windows.netGET http://iostest.blob.core.windows.net/?comp=list&include=metadatax-ms-date: Thu, 14 Apr 2011 20:30:00 GMTx-ms-version: 2009-09-19x-ms-blob-type: BlockBlobAuthorization: SharedKeyiostest:[ComputedHash]Blob Storage
…but how do I get that computed hash?REST Endpoint:http://[account].blob.core.windows.netTo calculate the computed hash:AccountKey: /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:metadataHash = HMACSHA256(UTF8Encode(Request), Base64Decode(AccountKey))Blob StorageAccount Key:  /9seXadQ9HwOpXUO1jKxFN8q…
Making the callGET http://iostest.blob.core.windows.net/?comp=list&include=metadatax-ms-date: Thu, 14 Apr 2011 20:30:00 GMTx-ms-version: 2009-09-19x-ms-blob-type: BlockBlobAuthorization: SharedKeyiostest:[ComputedHash]<?xml version="1.0" encoding="utf-8"?><EnumerationResultsAccountName="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>REST Endpoint:http://[account].blob.core.windows.netBlob Storage
REST request (PUT) for adding a new photoREST Endpoint:http://[account].blob.core.windows.netPUT http://iostest.blob.core.windows.net/photos/party.jpgx-ms-date: Thu, 14 Apr 2011 20:30:00 GMTx-ms-version: 2009-09-19x-ms-blob-type: BlockBlobAuthorization: SharedKeyiostest:[ComputedHash]{...binary representation of photo...}Blob Storage
Using Blob Storage from iOSdemo
REST Endpoint:http://[account].table.core.windows.netList, Create, and Delete Tables
List, Put, Get, Delete Table EntitiesphotodataTable Storage
REST request for listing all tablesREST Endpoint:http://[account].table.core.windows.netList, Create, and Delete Tables
List, Put, Get, Delete Table EntitiesGET http://iostest.blob.core.windows.net/Tablesx-ms-date: Thu, 14 Apr 2011 20:30:00 GMTx-ms-version: 2009-09-19DataServiceVersion: 1.0;NetFxMaxDataServiceVersion: 2.0;NetFxAuthorization: SharedKeyiostest:[ComputedHash]<feed xml:base="http://iostest.tables.core.windows.net/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">  <title type="text">Tables</title>  <id>http://iostest.tables.core.windows.net/Tables</id>  <updated>2011-04-04T17:18:54.7062347Z</updated>  <link rel="self" title="Tables" href="Tables" />  <entry>    <id>http://myaccount.tables.core.windows.net/Tables(’photodata')</id>    <title type="text"></title>    <updated>2009-01-04T17:18:54.7062347Z</updated>    <author>      <name />    </author>    <link rel="edit" title="Tables" href="Tables(’photodata')" />     <m:properties>        <d:TableName>photodata</d:TableName>      </m:properties>    </content>  </entry></feed>photodataTable Storage
REST request for inserting an entityREST Endpoint:http://[account].table.core.windows.netList, Create, and Delete Tables
List, Put, Get, Delete Table EntitiesPUT http://iostest.blob.core.windows.net/Tablesx-ms-date: Thu, 14 Apr 2011 20:30:00 GMTx-ms-version: 2009-09-19DataServiceVersion: 1.0;NetFxMaxDataServiceVersion: 2.0;NetFxAuthorization: SharedKeyiostest:[ComputedHash]<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">  <title />  <updated>2011-04-10T23:46:19.3857256Z<updated/>  <author>    <name />  </author>  <id />  <content type="application/xml">    <m:properties><d:Description>My coworker is drunk</d:Description>      <d:DrinkCountm:type="Edm.Int32”>10</d:DrinkCount></m:properties>  </content></entry>photodataTable Storage
Using Table Storage from iOSdemo
J!ResQ – Japanese Earthquake Rescuecase study
13,333 death toll.  15,000 missing.  (4/13/11)
Developing iPhone and iPad apps that leverage Windows Azure
Developing iPhone and iPad apps that leverage Windows Azure
Developing iPhone and iPad apps that leverage Windows Azure
Developing iPhone and iPad apps that leverage Windows Azure
MunicipalityPinpointed photo using Bing MapsSituationalAnalysishttp://www.j-resq.com
Scenario 1 - TakeawaysRecommendations:Use blob storage for images, videos, audio
Use table storage for structured, non relational data
Wrap REST calls in libraryWatch out for:Blob storage doesn’t offer hierarchical structure
REST signatures can be a little complex and differ between the two storage types2
“Where is my next session?”
PagesWeb RoleAbility to host ASP.NET (MVC) application in Windows Azure
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8)HTTP RequestHTTP ResponsePagesWindows 7 / IE8.0Web Role
UserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5HTTP RequestHTTP ResponsePagesWeb RoleiPhone OS 4.3.1
Mozilla/5.0 (iPad; U; CPU OS 4_3_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.3.1 Mobile/7B334b Safari/531.21.10HTTP RequestHTTP ResponsePagesWeb RoleiPad OS 4.3.1
if (useragentcontains ”MSIE”)User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8)Windows 7 / IE8.0Pagesif (useragentcontains ”iPhone”)Web RoleUserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5PagesiPhone OS 4.3.1
if (useragent contains ”MSIE”)User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8)if (Response.Headers[“User-Agent”].Contains(“iPhone”)){return View(“iPhone”);}if (Response.Headers[“User-Agent”].Contains(“iPad”)){return View(“iPad”);}if (Response.Headers[“User-Agent].Contains...Windows 7 / IE8.0ViewCSSControllerif (useragentcontains”iPhone”)Web RoleASP.NETMVCViewEngineUserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5ViewCSSiPhone OS 4.3.1
Using ASP.NET View Enginedemo
“Great!  …but it still looks like my original webpage”
if (useragent contains ”MSIE”)User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8)Windows 7 / IE8.0ViewCSSControllerif (useragentcontains”iPhone”)Web RoleASP.NETMVCViewEngineUserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5ViewCSSiPhone OS 4.3.1
Mobile Web FrameworksiUIhttp://iui-js.orgjQTouchhttp://jqtouch.comjQueryMobilehttp://jquerymobile.com
if (useragent contains ”MSIE”)User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8)Windows 7 / IE8.0ViewCSSControllerif (useragentcontains”iPhone”)Web RoleASP.NETMVCViewEngineUserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5ViewCSSiPhone OS 4.3.1
Using jQueryMobiledemo
Accessing the Camera?Local storage?“Looking good!  But this is still a mobile web app.  How about…”Getting location via GPS?Uploading to the AppStore?
Device-Integrated Web FrameworksAppceleratorhttp://appcelerator.comUnifyhttp://unify.github.com/unifyPhoneGaphttp://phonegap.com
WebViewControllerNative shell upload to AppStoreif (useragent contains ”MSIE”)JavaScript bridgeViewCSSControlleriPhone OS 4.3.1Native Libraries (ObjC)if (useragentcontains”iPhone”)Web RoleASP.NETMVCViewEngineViewCSSWeb StorageLocal HTML
Integrating the App with PhoneGapdemo
Scenario 2 - TakeawaysRecommendations:Mobile Web sites let you target multiple devices
ASP.NET MVC with ViewEnginesupport.  V3 for improved HTML5 attributes
Hybrid approach with PhoneGapWatch out for:Many different UI frameworks – choose carefully, think about longevity3

More Related Content

PDF
Timings of Init : Android Ramdisks for the Practical Hacker
Stacy Devino
 
PDF
[Gstar 2013] Unity Security
Seungmin Shin
 
PDF
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch
 
PPT
Learning AOSP - Android Booting Process
Nanik Tolaram
 
PPTX
What is new in Notes & Domino Deleopment V10.x
Ulrich Krause
 
PDF
Thotcon - All aboard the Fail Whale
Erin Willingham
 
PDF
DEF CON 27 - workshop - GUILLAUME ROSS - defending environments and hunting m...
Felipe Prado
 
PDF
Tools and Process for Streamlining Mac Deployment
Timothy Sutton
 
Timings of Init : Android Ramdisks for the Practical Hacker
Stacy Devino
 
[Gstar 2013] Unity Security
Seungmin Shin
 
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch
 
Learning AOSP - Android Booting Process
Nanik Tolaram
 
What is new in Notes & Domino Deleopment V10.x
Ulrich Krause
 
Thotcon - All aboard the Fail Whale
Erin Willingham
 
DEF CON 27 - workshop - GUILLAUME ROSS - defending environments and hunting m...
Felipe Prado
 
Tools and Process for Streamlining Mac Deployment
Timothy Sutton
 

What's hot (10)

PDF
Tutorial j boss
Natan Loterio
 
PPTX
O porque das minhas aplicações funcionarem... E o que acontece com os recurso...
Comunidade NetPonto
 
PDF
OSDC 2017 - Julien Pivotto - Automating Jenkins
NETWAYS
 
PDF
Continuous Integration with Hackintosh
David Ventura, M.E.T.
 
PDF
Docker security
Janos Suto
 
PDF
Init of Android
Tetsuyuki Kobayashi
 
PPTX
The Ultimate Deobfuscator - ToorCON San Diego 2008
Stephan Chenette
 
PPTX
Beginner’s Guide to Windows Installer XML (WiX)
Alek Davis
 
PDF
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
PROIDEA
 
PDF
Attacking Oracle with the Metasploit Framework
Chris Gates
 
Tutorial j boss
Natan Loterio
 
O porque das minhas aplicações funcionarem... E o que acontece com os recurso...
Comunidade NetPonto
 
OSDC 2017 - Julien Pivotto - Automating Jenkins
NETWAYS
 
Continuous Integration with Hackintosh
David Ventura, M.E.T.
 
Docker security
Janos Suto
 
Init of Android
Tetsuyuki Kobayashi
 
The Ultimate Deobfuscator - ToorCON San Diego 2008
Stephan Chenette
 
Beginner’s Guide to Windows Installer XML (WiX)
Alek Davis
 
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
PROIDEA
 
Attacking Oracle with the Metasploit Framework
Chris Gates
 
Ad

Viewers also liked (20)

PPTX
Top Ten Tips for HTML5/Mobile Web Development
Simon Guest
 
PDF
TechEd Preconference
Simon Guest
 
PPT
Demystifying The Cloud
Simon Guest
 
PPTX
Windows Azure Toolkit for iOS
Simon Guest
 
PPTX
Objective View of MEAPs
Simon Guest
 
PPTX
Building solutions on the Microsoft platform that target iPhone, iPad, and An...
Simon Guest
 
PPTX
Developing Enterprise-Grade Mobile Applications
Simon Guest
 
PPTX
My customers are using iPhone/Android, but I'm a Microsoft Guy.
Simon Guest
 
PPT
Patterns For Moving To The Cloud
Simon Guest
 
PDF
Patterns for Cloud Computing
Simon Guest
 
PPTX
iPhone and iPad Security
Simon Guest
 
PPT
Impact Of The Cloud For IT Managers
Simon Guest
 
PPT
Architectural Principles for Software + Services
Simon Guest
 
PDF
ReMix Keynote (Vienna, Austria)
Simon Guest
 
PDF
Interviewing Techniques
Simon Guest
 
PDF
Next Generation LOB (Line of Business) Applications
Simon Guest
 
PDF
Indoor location in mobile applications using iBeacons
Simon Guest
 
PPTX
Future of Mobility
Simon Guest
 
PPTX
Creating Context-Aware Applications
Simon Guest
 
PPTX
Automated Testing using JavaScript
Simon Guest
 
Top Ten Tips for HTML5/Mobile Web Development
Simon Guest
 
TechEd Preconference
Simon Guest
 
Demystifying The Cloud
Simon Guest
 
Windows Azure Toolkit for iOS
Simon Guest
 
Objective View of MEAPs
Simon Guest
 
Building solutions on the Microsoft platform that target iPhone, iPad, and An...
Simon Guest
 
Developing Enterprise-Grade Mobile Applications
Simon Guest
 
My customers are using iPhone/Android, but I'm a Microsoft Guy.
Simon Guest
 
Patterns For Moving To The Cloud
Simon Guest
 
Patterns for Cloud Computing
Simon Guest
 
iPhone and iPad Security
Simon Guest
 
Impact Of The Cloud For IT Managers
Simon Guest
 
Architectural Principles for Software + Services
Simon Guest
 
ReMix Keynote (Vienna, Austria)
Simon Guest
 
Interviewing Techniques
Simon Guest
 
Next Generation LOB (Line of Business) Applications
Simon Guest
 
Indoor location in mobile applications using iBeacons
Simon Guest
 
Future of Mobility
Simon Guest
 
Creating Context-Aware Applications
Simon Guest
 
Automated Testing using JavaScript
Simon Guest
 
Ad

Similar to Developing iPhone and iPad apps that leverage Windows Azure (20)

PDF
Work with Windows Azure from Mobile Apps
Andri Yadi
 
PDF
C# Client to Cloud
Stuart Lodge
 
PPTX
Building services using windows azure
Suliman AlBattat
 
PDF
Utilizing HTML5 APIs
Ido Green
 
PPT
ArcReady - Architecting For The Cloud
Microsoft ArcReady
 
PDF
C# - Azure, WP7, MonoTouch and Mono for Android (MonoDroid)
Stuart Lodge
 
PDF
HTML5 and the dawn of rich mobile web applications
James Pearce
 
PPTX
HTML5 for Rich User Experience
Mahbubur Rahman
 
PPTX
Windows azure mobile services and windows phone 8
Karthikeyan Anbarasan (AK)
 
PPT
Advanced Web Development
Robert J. Stein
 
PPTX
Connecting to Data from Windows Phone 8 VSLive! Redmond 2013
Woodruff Solutions LLC
 
PDF
Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)
Ido Green
 
PDF
Modern Web Applications Utilizing HTML5 APIs
Ido Green
 
PPTX
Azure, Cloud Computing & Services
Alan Dean
 
PPTX
Connecting to Data from Windows Phone 8
Woodruff Solutions LLC
 
PDF
Building Cross Platform Mobile Web Apps
James Pearce
 
PPTX
Social Photos - My presentation at Microsoft Tech Day
TechMaster Vietnam
 
PPTX
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
St. Petersburg College
 
PPT
Arc Ready Cloud Computing
Philip Wheat
 
PPTX
70-480 - Programming in HTML5 with JavaScript and CSS3
Roxycodone Pills
 
Work with Windows Azure from Mobile Apps
Andri Yadi
 
C# Client to Cloud
Stuart Lodge
 
Building services using windows azure
Suliman AlBattat
 
Utilizing HTML5 APIs
Ido Green
 
ArcReady - Architecting For The Cloud
Microsoft ArcReady
 
C# - Azure, WP7, MonoTouch and Mono for Android (MonoDroid)
Stuart Lodge
 
HTML5 and the dawn of rich mobile web applications
James Pearce
 
HTML5 for Rich User Experience
Mahbubur Rahman
 
Windows azure mobile services and windows phone 8
Karthikeyan Anbarasan (AK)
 
Advanced Web Development
Robert J. Stein
 
Connecting to Data from Windows Phone 8 VSLive! Redmond 2013
Woodruff Solutions LLC
 
Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)
Ido Green
 
Modern Web Applications Utilizing HTML5 APIs
Ido Green
 
Azure, Cloud Computing & Services
Alan Dean
 
Connecting to Data from Windows Phone 8
Woodruff Solutions LLC
 
Building Cross Platform Mobile Web Apps
James Pearce
 
Social Photos - My presentation at Microsoft Tech Day
TechMaster Vietnam
 
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
St. Petersburg College
 
Arc Ready Cloud Computing
Philip Wheat
 
70-480 - Programming in HTML5 with JavaScript and CSS3
Roxycodone Pills
 

More from Simon Guest (9)

PDF
10 Life Hacks for Better Productivity
Simon Guest
 
PDF
Building a Great Engineering Culture
Simon Guest
 
PDF
Presentation Anti-Patterns
Simon Guest
 
PDF
10 Life Hacks for Better Productivity
Simon Guest
 
PDF
Automated Web Testing using JavaScript
Simon Guest
 
PDF
Advanced Tips & Tricks for using Angular JS
Simon Guest
 
PDF
Enterprise Social Networking - Myth or Magic?
Simon Guest
 
PDF
Patterns For Cloud Computing
Simon Guest
 
PPT
User Driven Software Architecture
Simon Guest
 
10 Life Hacks for Better Productivity
Simon Guest
 
Building a Great Engineering Culture
Simon Guest
 
Presentation Anti-Patterns
Simon Guest
 
10 Life Hacks for Better Productivity
Simon Guest
 
Automated Web Testing using JavaScript
Simon Guest
 
Advanced Tips & Tricks for using Angular JS
Simon Guest
 
Enterprise Social Networking - Myth or Magic?
Simon Guest
 
Patterns For Cloud Computing
Simon Guest
 
User Driven Software Architecture
Simon Guest
 

Developing iPhone and iPad apps that leverage Windows Azure

  • 2. Developing iPhone and iPad apps that Leverage Windows AzureSimon GuestDirector, Mobility SolutionsNeudesic, [email protected]
  • 3. I go to a lot of conferences…
  • 4. Intro SectionSome of them are a little boring…Some of them are more interesting than others…
  • 6. Intro Section“There’s an app for that!”“There’s an app for that!”Share stuffAccess agendaKeep up to date
  • 7. Uploading stuffAccessing agendaKeeping up to date321Use Cloud for StorageReceive NotificationsAccess Applications
  • 9. 1
  • 12. Most suitable for binary data (images, video, audio)
  • 14. 8k metadata for each blobBlob StorageTable Storage
  • 15. Blob StorageTable StorageMost suitable for structured data
  • 17. Partitioning to enable scaleBlob Storage
  • 21. List, Put, Get, Delete BlobsphotosBlob Storage
  • 22. REST request for listing all containersREST Endpoint:http://[account].blob.core.windows.netGET http://iostest.blob.core.windows.net/?comp=list&include=metadatax-ms-date: Thu, 14 Apr 2011 20:30:00 GMTx-ms-version: 2009-09-19x-ms-blob-type: BlockBlobAuthorization: SharedKeyiostest:[ComputedHash]Blob Storage
  • 23. …but how do I get that computed hash?REST Endpoint:http://[account].blob.core.windows.netTo calculate the computed hash:AccountKey: /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:metadataHash = HMACSHA256(UTF8Encode(Request), Base64Decode(AccountKey))Blob StorageAccount Key: /9seXadQ9HwOpXUO1jKxFN8q…
  • 24. Making the callGET http://iostest.blob.core.windows.net/?comp=list&include=metadatax-ms-date: Thu, 14 Apr 2011 20:30:00 GMTx-ms-version: 2009-09-19x-ms-blob-type: BlockBlobAuthorization: SharedKeyiostest:[ComputedHash]<?xml version="1.0" encoding="utf-8"?><EnumerationResultsAccountName="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>REST Endpoint:http://[account].blob.core.windows.netBlob Storage
  • 25. REST request (PUT) for adding a new photoREST Endpoint:http://[account].blob.core.windows.netPUT http://iostest.blob.core.windows.net/photos/party.jpgx-ms-date: Thu, 14 Apr 2011 20:30:00 GMTx-ms-version: 2009-09-19x-ms-blob-type: BlockBlobAuthorization: SharedKeyiostest:[ComputedHash]{...binary representation of photo...}Blob Storage
  • 26. Using Blob Storage from iOSdemo
  • 28. List, Put, Get, Delete Table EntitiesphotodataTable Storage
  • 29. REST request for listing all tablesREST Endpoint:http://[account].table.core.windows.netList, Create, and Delete Tables
  • 30. List, Put, Get, Delete Table EntitiesGET http://iostest.blob.core.windows.net/Tablesx-ms-date: Thu, 14 Apr 2011 20:30:00 GMTx-ms-version: 2009-09-19DataServiceVersion: 1.0;NetFxMaxDataServiceVersion: 2.0;NetFxAuthorization: SharedKeyiostest:[ComputedHash]<feed xml:base="http://iostest.tables.core.windows.net/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"> <title type="text">Tables</title> <id>http://iostest.tables.core.windows.net/Tables</id> <updated>2011-04-04T17:18:54.7062347Z</updated> <link rel="self" title="Tables" href="Tables" /> <entry> <id>http://myaccount.tables.core.windows.net/Tables(’photodata')</id> <title type="text"></title> <updated>2009-01-04T17:18:54.7062347Z</updated> <author> <name /> </author> <link rel="edit" title="Tables" href="Tables(’photodata')" /> <m:properties> <d:TableName>photodata</d:TableName> </m:properties> </content> </entry></feed>photodataTable Storage
  • 31. REST request for inserting an entityREST Endpoint:http://[account].table.core.windows.netList, Create, and Delete Tables
  • 32. List, Put, Get, Delete Table EntitiesPUT http://iostest.blob.core.windows.net/Tablesx-ms-date: Thu, 14 Apr 2011 20:30:00 GMTx-ms-version: 2009-09-19DataServiceVersion: 1.0;NetFxMaxDataServiceVersion: 2.0;NetFxAuthorization: SharedKeyiostest:[ComputedHash]<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"> <title /> <updated>2011-04-10T23:46:19.3857256Z<updated/> <author> <name /> </author> <id /> <content type="application/xml"> <m:properties><d:Description>My coworker is drunk</d:Description> <d:DrinkCountm:type="Edm.Int32”>10</d:DrinkCount></m:properties> </content></entry>photodataTable Storage
  • 33. Using Table Storage from iOSdemo
  • 34. J!ResQ – Japanese Earthquake Rescuecase study
  • 35. 13,333 death toll. 15,000 missing. (4/13/11)
  • 40. MunicipalityPinpointed photo using Bing MapsSituationalAnalysishttp://www.j-resq.com
  • 41. Scenario 1 - TakeawaysRecommendations:Use blob storage for images, videos, audio
  • 42. Use table storage for structured, non relational data
  • 43. Wrap REST calls in libraryWatch out for:Blob storage doesn’t offer hierarchical structure
  • 44. REST signatures can be a little complex and differ between the two storage types2
  • 45. “Where is my next session?”
  • 46. PagesWeb RoleAbility to host ASP.NET (MVC) application in Windows Azure
  • 47. User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8)HTTP RequestHTTP ResponsePagesWindows 7 / IE8.0Web Role
  • 48. UserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5HTTP RequestHTTP ResponsePagesWeb RoleiPhone OS 4.3.1
  • 49. Mozilla/5.0 (iPad; U; CPU OS 4_3_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.3.1 Mobile/7B334b Safari/531.21.10HTTP RequestHTTP ResponsePagesWeb RoleiPad OS 4.3.1
  • 50. if (useragentcontains ”MSIE”)User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8)Windows 7 / IE8.0Pagesif (useragentcontains ”iPhone”)Web RoleUserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5PagesiPhone OS 4.3.1
  • 51. if (useragent contains ”MSIE”)User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8)if (Response.Headers[“User-Agent”].Contains(“iPhone”)){return View(“iPhone”);}if (Response.Headers[“User-Agent”].Contains(“iPad”)){return View(“iPad”);}if (Response.Headers[“User-Agent].Contains...Windows 7 / IE8.0ViewCSSControllerif (useragentcontains”iPhone”)Web RoleASP.NETMVCViewEngineUserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5ViewCSSiPhone OS 4.3.1
  • 52. Using ASP.NET View Enginedemo
  • 53. “Great! …but it still looks like my original webpage”
  • 54. if (useragent contains ”MSIE”)User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8)Windows 7 / IE8.0ViewCSSControllerif (useragentcontains”iPhone”)Web RoleASP.NETMVCViewEngineUserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5ViewCSSiPhone OS 4.3.1
  • 56. if (useragent contains ”MSIE”)User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; MS-RTC LM 8)Windows 7 / IE8.0ViewCSSControllerif (useragentcontains”iPhone”)Web RoleASP.NETMVCViewEngineUserAgent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5ViewCSSiPhone OS 4.3.1
  • 58. Accessing the Camera?Local storage?“Looking good! But this is still a mobile web app. How about…”Getting location via GPS?Uploading to the AppStore?
  • 60. WebViewControllerNative shell upload to AppStoreif (useragent contains ”MSIE”)JavaScript bridgeViewCSSControlleriPhone OS 4.3.1Native Libraries (ObjC)if (useragentcontains”iPhone”)Web RoleASP.NETMVCViewEngineViewCSSWeb StorageLocal HTML
  • 61. Integrating the App with PhoneGapdemo
  • 62. Scenario 2 - TakeawaysRecommendations:Mobile Web sites let you target multiple devices
  • 63. ASP.NET MVC with ViewEnginesupport. V3 for improved HTML5 attributes
  • 64. Hybrid approach with PhoneGapWatch out for:Many different UI frameworks – choose carefully, think about longevity3
  • 65. “Looks like we have a session change”
  • 66. AppRegistrationApple Push Notification Servicegateway.sandbox.push.apple.comNative ApplicationiPad/iPhone OS 4.3.1User Acceptance
  • 67. Token LengthPayload LengthJSON formattedAppRegistrationSend Message Payload0032deviceToken034messageApple Push Notification Servicegateway.sandbox.push.apple.comNative ApplicationAzure Role optimized for backgroundtasksWorker RoleiPad/iPhone OS 4.3.1User Acceptance
  • 68. AppRegistrationSend Message PayloadApple Push Notification Servicegateway.sandbox.push.apple.comNative ApplicationWorker RoleWindows Azure QueueiPad/iPhone OS 4.3.1User Acceptance
  • 69. AppRegistrationSend Message PayloadApple Push Notification Servicegateway.sandbox.push.apple.comNative ApplicationWorker RoleRequestChangedSessionDetailsWindows Azure QueueiPad/iPhone OS 4.3.1Web RoleSessionUpdatedthrough WebUser AcceptanceUpdate QueueReceive Message, LaunchApp
  • 70. Sending Push Notifications to iOSfrom Windows Azuredemo
  • 71. Scenario 3 - TakeawaysRecommendations:APN useful for updating users of events
  • 72. Worker Role, Azure Queue, and Web Role can be used in conjunction with APN
  • 73. Can also be used with PhoneGap shellWatch out for:Use Worker Role to maintain persistent connection to APN (to prevent DOS)ConclusionHistorically not much interaction between iOS and Windows Azure
  • 74. ConclusionHistorically not much interaction between iOS and Windows Azure321Use Cloud for StorageReceive NotificationsAccess ApplicationsPossibilities for building iPhone/iPad apps that leverage Windows Azure
  • 75. Simon GuestDirector, Mobility [email protected]© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Editor's Notes

  • #4: http://stutteringhub.com/wp-content/uploads/2008/07/iStock_000003749151Small1.jpg
  • #5: http://www.independent.co.uk/multimedia/dynamic/00514/26-boring-3_514784s.jpg
  • #6: http://gizmologia.com/tag/mix08
  • #7: http://stutteringhub.com/wp-content/uploads/2008/07/iStock_000003749151Small1.jpg
  • #8: http://stutteringhub.com/wp-content/uploads/2008/07/iStock_000003749151Small1.jpg
  • #9: http://daily.likeme.net/lm/wp-content/uploads/2010/04/Four-Beers-in-One.jpg
  • #10: http://www.freemages.co.uk/album/etats_unis/las_vegas_mandalay_bay.jpghttp://www.globalnerdy.com/wordpress/wp-content/uploads/2011/01/mix10-keynote.jpg
  • #15: http://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2011/3/17/1300366092912/A-Japanese-Self-Defence-F-011.jpg
  • #16: http://www.abc.net.au/reslib/201103/r733146_5928731.jpg
  • #17: http://s3.amazonaws.com/data.tumblr.com/tumblr_li2196MvwQ1qcokc4o1_1280.jpg?AWSAccessKeyId=AKIAJ6IHWSU3BX3X7X3Q&amp;Expires=1302807999&amp;Signature=jcCDELbr6UQ%2BK00VMYEqw7SP1Rc%3D