SlideShare ist ein Scribd-Unternehmen logo
1 von 64
Developing iPhone and iPad apps that Leverage Windows Azure Simon Guest Director, Mobility Solutions Neudesic, LLC simon.guest@neudesic.com
I go to a lot of conferences…
Intro Section Some of them are a little boring… Some of them are more interesting than others…
Introduction MIX is always interesting!
Intro Section “There’s an app for that!” “There’s an app for that!” Share stuff Access agenda Keep up to date
Uploading stuff Accessing agenda Keeping up to date 3 2 1 Use Cloud for Storage Receive Notifications Access Applications
1
Blob Storage Table Storage
[object Object]
Container-based approach
8k metadata for each blobBlob Storage Table Storage
Blob Storage Table Storage ,[object Object]
Dynamic schema
Partitioning to enable scale,[object Object]
Blob Storage
Blob Storage
REST Endpoint: http://[account].blob.core.windows.net ,[object Object]
List, Put, Get, Delete Blobsphotos Blob Storage
REST request for listing all containers REST Endpoint: http://[account].blob.core.windows.net GET http://iostest.blob.core.windows.net/?comp=list&include=metadata x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT x-ms-version: 2009-09-19 x-ms-blob-type: BlockBlob Authorization: SharedKeyiostest:[ComputedHash] Blob Storage
…but how do I get that computed hash? REST Endpoint: http://[account].blob.core.windows.net To calculate the computed hash: AccountKey: /9seXadQ9HwOpXUO1jKxFN8q… Request: GETx-ms-blob-type:BlockBlobx-ms-date:Thu, 14 Apr 2011 20:30:00 GMTx-ms-version:2009-09-19/iostest/comp:listinclude:metadata Hash = HMACSHA256(UTF8Encode(Request), Base64Decode(AccountKey)) Blob Storage Account Key:   /9seXadQ9HwOpXUO1jKxFN8q…
Making the call GET http://iostest.blob.core.windows.net/?comp=list&include=metadata x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT x-ms-version: 2009-09-19 x-ms-blob-type: BlockBlob Authorization: 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.net Blob Storage
REST request (PUT) for adding a new photo REST Endpoint: http://[account].blob.core.windows.net PUT http://iostest.blob.core.windows.net/photos/party.jpg x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT x-ms-version: 2009-09-19 x-ms-blob-type: BlockBlob Authorization: SharedKeyiostest:[ComputedHash] {...binary representation of photo...} Blob Storage
Using Blob Storage from iOS demo
REST Endpoint: http://[account].table.core.windows.net ,[object Object]
List, Put, Get, Delete Table Entitiesphotodata Table Storage
REST request for listing all tables REST Endpoint: http://[account].table.core.windows.net ,[object Object]
List, Put, Get, Delete Table EntitiesGET http://iostest.blob.core.windows.net/Tables x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT x-ms-version: 2009-09-19 DataServiceVersion: 1.0;NetFx MaxDataServiceVersion: 2.0;NetFx Authorization: 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> photodata Table Storage
REST request for inserting an entity REST Endpoint: http://[account].table.core.windows.net ,[object Object]
List, Put, Get, Delete Table EntitiesPUT http://iostest.blob.core.windows.net/Tables x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT x-ms-version: 2009-09-19 DataServiceVersion: 1.0;NetFx MaxDataServiceVersion: 2.0;NetFx Authorization: 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> photodata Table Storage
Using Table Storage from iOS demo
J!ResQ – Japanese Earthquake Rescue case study
13,333 death toll.  15,000 missing.  (4/13/11)
Municipality Pinpointed photo using Bing Maps Situational Analysis http://www.j-resq.com
Scenario 1 - Takeaways Recommendations: ,[object Object]
Use table storage for structured, non relational data
Wrap REST calls in libraryWatch out for: ,[object Object]
REST signatures can be a little complex and differ between the two storage types,[object Object]
“Where is my next session?”
Pages Web Role Ability 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 Request HTTP Response Pages Windows 7 / IE8.0 Web 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.5 HTTP Request HTTP Response Pages Web Role iPhone 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.10 HTTP Request HTTP Response Pages Web Role iPad 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) Windows 7 / IE8.0 Pages if (useragentcontains ”iPhone”) Web 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.5 Pages iPhone 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.0 View CSS Controller if (useragentcontains”iPhone”) Web Role ASP.NETMVC ViewEngine 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.5 View CSS iPhone OS 4.3.1
Using ASP.NET View Engine demo
“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.0 View CSS Controller if (useragentcontains”iPhone”) Web Role ASP.NETMVC ViewEngine 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.5 View CSS iPhone OS 4.3.1
Mobile Web Frameworks iUI http://iui-js.org jQTouch http://jqtouch.com jQueryMobile http://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.0 View CSS Controller if (useragentcontains”iPhone”) Web Role ASP.NETMVC ViewEngine 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.5 View CSS iPhone OS 4.3.1
Using jQueryMobile demo
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 Frameworks Appcelerator http://appcelerator.com Unify http://unify.github.com/unify PhoneGap http://phonegap.com
WebViewController Native shell upload to AppStore if (useragent contains ”MSIE”) JavaScript bridge View CSS Controller iPhone OS 4.3.1 Native Libraries (ObjC) if (useragentcontains”iPhone”) Web Role ASP.NETMVC ViewEngine View CSS Web Storage Local HTML
Integrating the App with PhoneGap demo
Scenario 2 - Takeaways Recommendations: ,[object Object]
ASP.NET MVC with ViewEnginesupport.  V3 for improved HTML5 attributes
Hybrid approach with PhoneGapWatch out for: ,[object Object],[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

The Ultimate Deobfuscator - ToorCON San Diego 2008
The Ultimate Deobfuscator - ToorCON San Diego 2008The Ultimate Deobfuscator - ToorCON San Diego 2008
The Ultimate Deobfuscator - ToorCON San Diego 2008
Stephan Chenette
 
Attacking Oracle with the Metasploit Framework
Attacking Oracle with the Metasploit FrameworkAttacking Oracle with the Metasploit Framework
Attacking Oracle with the Metasploit Framework
Chris Gates
 

Was ist angesagt? (10)

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

Andere mochten auch

TechEd Preconference
TechEd PreconferenceTechEd Preconference
TechEd Preconference
Simon Guest
 
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOSWindows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
Simon Guest
 

Andere mochten auch (20)

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

Ähnlich wie Developing iPhone and iPad apps that leverage Windows Azure

Os Henrikson
Os HenriksonOs Henrikson
Os Henrikson
oscon2007
 
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
MS Day EPITA 2010: Visual Studio 2010 et Framework .NET 4.0
Thomas Conté
 
Asp net mvc
Asp net mvcAsp net mvc
Asp net mvc
bgrynko
 

Ähnlich wie Developing iPhone and iPad apps that leverage Windows Azure (20)

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

Mehr von Simon Guest

Enterprise Social Networking - Myth or Magic?
Enterprise Social Networking - Myth or Magic?Enterprise Social Networking - Myth or Magic?
Enterprise Social Networking - Myth or Magic?
Simon Guest
 

Mehr von Simon Guest (9)

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

Developing iPhone and iPad apps that leverage Windows Azure

  • 1.
  • 2. Developing iPhone and iPad apps that Leverage Windows Azure Simon Guest Director, Mobility Solutions Neudesic, LLC simon.guest@neudesic.com
  • 3. I go to a lot of conferences…
  • 4. Intro Section Some of them are a little boring… Some of them are more interesting than others…
  • 5. Introduction MIX is always interesting!
  • 6. Intro Section “There’s an app for that!” “There’s an app for that!” Share stuff Access agenda Keep up to date
  • 7. Uploading stuff Accessing agenda Keeping up to date 3 2 1 Use Cloud for Storage Receive Notifications Access Applications
  • 8.
  • 9. 1
  • 10.
  • 12.
  • 14. 8k metadata for each blobBlob Storage Table Storage
  • 15.
  • 17.
  • 20.
  • 21. List, Put, Get, Delete Blobsphotos Blob Storage
  • 22. REST request for listing all containers REST Endpoint: http://[account].blob.core.windows.net GET http://iostest.blob.core.windows.net/?comp=list&include=metadata x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT x-ms-version: 2009-09-19 x-ms-blob-type: BlockBlob Authorization: SharedKeyiostest:[ComputedHash] Blob Storage
  • 23. …but how do I get that computed hash? REST Endpoint: http://[account].blob.core.windows.net To calculate the computed hash: AccountKey: /9seXadQ9HwOpXUO1jKxFN8q… Request: GETx-ms-blob-type:BlockBlobx-ms-date:Thu, 14 Apr 2011 20:30:00 GMTx-ms-version:2009-09-19/iostest/comp:listinclude:metadata Hash = HMACSHA256(UTF8Encode(Request), Base64Decode(AccountKey)) Blob Storage Account Key: /9seXadQ9HwOpXUO1jKxFN8q…
  • 24. Making the call GET http://iostest.blob.core.windows.net/?comp=list&include=metadata x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT x-ms-version: 2009-09-19 x-ms-blob-type: BlockBlob Authorization: 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.net Blob Storage
  • 25. REST request (PUT) for adding a new photo REST Endpoint: http://[account].blob.core.windows.net PUT http://iostest.blob.core.windows.net/photos/party.jpg x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT x-ms-version: 2009-09-19 x-ms-blob-type: BlockBlob Authorization: SharedKeyiostest:[ComputedHash] {...binary representation of photo...} Blob Storage
  • 26. Using Blob Storage from iOS demo
  • 27.
  • 28. List, Put, Get, Delete Table Entitiesphotodata Table Storage
  • 29.
  • 30. List, Put, Get, Delete Table EntitiesGET http://iostest.blob.core.windows.net/Tables x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT x-ms-version: 2009-09-19 DataServiceVersion: 1.0;NetFx MaxDataServiceVersion: 2.0;NetFx Authorization: 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> photodata Table Storage
  • 31.
  • 32. List, Put, Get, Delete Table EntitiesPUT http://iostest.blob.core.windows.net/Tables x-ms-date: Thu, 14 Apr 2011 20:30:00 GMT x-ms-version: 2009-09-19 DataServiceVersion: 1.0;NetFx MaxDataServiceVersion: 2.0;NetFx Authorization: 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> photodata Table Storage
  • 33. Using Table Storage from iOS demo
  • 34. J!ResQ – Japanese Earthquake Rescue case study
  • 35. 13,333 death toll. 15,000 missing. (4/13/11)
  • 36.
  • 37.
  • 38.
  • 39.
  • 40. Municipality Pinpointed photo using Bing Maps Situational Analysis http://www.j-resq.com
  • 41.
  • 42. Use table storage for structured, non relational data
  • 43.
  • 44.
  • 45. “Where is my next session?”
  • 46. Pages Web Role Ability 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 Request HTTP Response Pages Windows 7 / IE8.0 Web 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.5 HTTP Request HTTP Response Pages Web Role iPhone 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.10 HTTP Request HTTP Response Pages Web Role iPad OS 4.3.1
  • 50. 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.0 Pages if (useragentcontains ”iPhone”) Web 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.5 Pages iPhone 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.0 View CSS Controller if (useragentcontains”iPhone”) Web Role ASP.NETMVC ViewEngine 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.5 View CSS iPhone OS 4.3.1
  • 52. Using ASP.NET View Engine demo
  • 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.0 View CSS Controller if (useragentcontains”iPhone”) Web Role ASP.NETMVC ViewEngine 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.5 View CSS iPhone OS 4.3.1
  • 55. Mobile Web Frameworks iUI http://iui-js.org jQTouch http://jqtouch.com jQueryMobile http://jquerymobile.com
  • 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.0 View CSS Controller if (useragentcontains”iPhone”) Web Role ASP.NETMVC ViewEngine 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.5 View CSS iPhone 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?
  • 59. Device-Integrated Web Frameworks Appcelerator http://appcelerator.com Unify http://unify.github.com/unify PhoneGap http://phonegap.com
  • 60. WebViewController Native shell upload to AppStore if (useragent contains ”MSIE”) JavaScript bridge View CSS Controller iPhone OS 4.3.1 Native Libraries (ObjC) if (useragentcontains”iPhone”) Web Role ASP.NETMVC ViewEngine View CSS Web Storage Local HTML
  • 61. Integrating the App with PhoneGap demo
  • 62.
  • 63. ASP.NET MVC with ViewEnginesupport. V3 for improved HTML5 attributes
  • 64.
  • 65. “Looks like we have a session change”
  • 66. AppRegistration Apple Push Notification Service gateway.sandbox.push.apple.com Native Application iPad/iPhone OS 4.3.1 User Acceptance
  • 67.
  • 68. AppRegistration Send Message Payload Apple Push Notification Service gateway.sandbox.push.apple.com Native Application Worker Role Windows Azure Queue iPad/iPhone OS 4.3.1 User Acceptance
  • 69. AppRegistration Send Message Payload Apple Push Notification Service gateway.sandbox.push.apple.com Native Application Worker Role RequestChangedSession Details Windows Azure Queue iPad/iPhone OS 4.3.1 Web Role SessionUpdatedthrough Web User Acceptance Update Queue Receive Message, LaunchApp
  • 70. Sending Push Notifications to iOSfrom Windows Azure demo
  • 71.
  • 72. Worker Role, Azure Queue, and Web Role can be used in conjunction with APN
  • 73.
  • 74. Conclusion Historically not much interaction between iOS and Windows Azure 3 2 1 Use Cloud for Storage Receive Notifications Access Applications Possibilities for building iPhone/iPad apps that leverage Windows Azure
  • 75. Simon Guest Director, Mobility Solutions simon.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.

Hinweis der Redaktion

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