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
PDF
[Gstar 2013] Unity Security
PDF
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
PPT
Learning AOSP - Android Booting Process
PPTX
What is new in Notes & Domino Deleopment V10.x
PDF
Thotcon - All aboard the Fail Whale
PDF
DEF CON 27 - workshop - GUILLAUME ROSS - defending environments and hunting m...
PDF
Tools and Process for Streamlining Mac Deployment
Timings of Init : Android Ramdisks for the Practical Hacker
[Gstar 2013] Unity Security
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
Learning AOSP - Android Booting Process
What is new in Notes & Domino Deleopment V10.x
Thotcon - All aboard the Fail Whale
DEF CON 27 - workshop - GUILLAUME ROSS - defending environments and hunting m...
Tools and Process for Streamlining Mac Deployment

What's hot (10)

PDF
Tutorial j boss
PPTX
O porque das minhas aplicações funcionarem... E o que acontece com os recurso...
PDF
OSDC 2017 - Julien Pivotto - Automating Jenkins
PDF
Continuous Integration with Hackintosh
PDF
Docker security
PDF
Init of Android
PPTX
The Ultimate Deobfuscator - ToorCON San Diego 2008
PPTX
Beginner’s Guide to Windows Installer XML (WiX)
PDF
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
PDF
Attacking Oracle with the Metasploit Framework
Tutorial j boss
O porque das minhas aplicações funcionarem... E o que acontece com os recurso...
OSDC 2017 - Julien Pivotto - Automating Jenkins
Continuous Integration with Hackintosh
Docker security
Init of Android
The Ultimate Deobfuscator - ToorCON San Diego 2008
Beginner’s Guide to Windows Installer XML (WiX)
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
Attacking Oracle with the Metasploit Framework
Ad

Viewers also liked (20)

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

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

PDF
Work with Windows Azure from Mobile Apps
PPTX
Azure Functions primer - LDNA01-2019
PPTX
Plone FSR
PPT
Os Henrikson
PPTX
SQL Server on Linux
PPT
Microsoft Azure, door Rob Brommer op de 4DotNet Developers Day
PPTX
Lecture1
PDF
Hopping in clouds: a tale of migration from one cloud provider to another
PPTX
Silverlight 4 @ MSDN Live
PPTX
What's new in vs 2010 sp1 for web developers
KEY
node.js: Javascript's in your backend
PPTX
Building Rich Internet Applications Using Microsoft Silverlight 2, Part 2
PPTX
Techdays 2011 - Things I will remember
PDF
your browser, your storage
PDF
Meteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJS
PPTX
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
PPT
iPhone development from a Java perspective (Jazoon '09)
PPTX
Meteor Angular
PPSX
Asp net mvc
PPTX
Windows azure camp - Kolkata
Work with Windows Azure from Mobile Apps
Azure Functions primer - LDNA01-2019
Plone FSR
Os Henrikson
SQL Server on Linux
Microsoft Azure, door Rob Brommer op de 4DotNet Developers Day
Lecture1
Hopping in clouds: a tale of migration from one cloud provider to another
Silverlight 4 @ MSDN Live
What's new in vs 2010 sp1 for web developers
node.js: Javascript's in your backend
Building Rich Internet Applications Using Microsoft Silverlight 2, Part 2
Techdays 2011 - Things I will remember
your browser, your storage
Meteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJS
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
iPhone development from a Java perspective (Jazoon '09)
Meteor Angular
Asp net mvc
Windows azure camp - Kolkata

More from Simon Guest (9)

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

Developing iPhone and iPad apps that leverage Windows Azure

  • 2. Developing iPhone and iPad apps that Leverage Windows AzureSimon GuestDirector, Mobility SolutionsNeudesic, LLCsimon.guest@neudesic.com
  • 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 Solutionssimon.guest@neudesic.com© 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