SlideShare une entreprise Scribd logo
1  sur  36
Azure Mobile Services 
Mobile Services <3 Web API 
Filip Ekberg
Page / Copyright ©2014 2 by Readify Pty Ltd @fekberg
Page 
Filip Ekberg 
C# MVP 
http://fekberg.com 
@fekberg 
C# Smorgasbord 
/ Copyright ©2014 3 by Readify Pty Ltd
@fekberg 
Page 
Agenda 
› Quick re-cap: What is Azure Mobile Services? 
› The .NET Backend for Mobile Services 
› Offline Data 
› Alternative Data Stores 
/ Copyright ©2014 4 by Readify Pty Ltd
@fekberg 
Page 
What is Azure 
Mobile Services? 
/ Copyright ©2014 5 by Readify Pty Ltd
@fekberg 
Page 
Scalable backend in the cloud 
› Runs in Azure 
› Backed by Node.JS 
› Dynamic data schema 
/ Copyright ©2014 6 by Readify Pty Ltd
@fekberg 
Page 
Cross-platform capabilities 
› iOS 
› Android 
› .NET 
› REST API 
/ Copyright ©2014 7 by Readify Pty Ltd
@fekberg 
Page 
Push Notifications 
› Windows Store 
› Windows Phone 
› Android 
› iOS 
/ Copyright ©2014 8 by Readify Pty Ltd
@fekberg 
Page 
Authentication & Authorization 
› Microsoft Account 
› AD 
› Twitter 
› Facebook 
› Google 
/ Copyright ©2014 9 by Readify Pty Ltd
@fekberg 
Page 
NodeJS 
/ Copyright ©2014 10 by Readify Pty Ltd
@fekberg 
Page 
The .NET Backend 
for Mobile 
Services 
/ Copyright ©2014 11 by Readify Pty Ltd
@fekberg 
Page 
Powerful backend 
with WebAPI 
/ Copyright ©2014 12 by Readify Pty Ltd
@fekberg 
Page 
Host Anywhere 
/ Copyright ©2014 13 by Readify Pty Ltd
@fekberg 
Page 
Cross-Platform 
capabilities 
/ Copyright ©2014 14 by Readify Pty Ltd
@fekberg 
Page 
Debugging in the 
cloud 
/ Copyright ©2014 15 by Readify Pty Ltd
@fekberg 
Page 
Demo 
Using WebAPI and Mobile Services 
/ Copyright ©2014 16 by Readify Pty Ltd
@fekberg 
Page 
Going Offline 
/ Copyright ©2014 17 by Readify Pty Ltd
@fekberg 
Page 
Different connectivity patterns 
› Always connected with High-Speed Internet 
› Always connected with Mobile Internet Connection 
› Occasionally Connected 
› Barely Connected 
/ Copyright ©2014 18 by Readify Pty Ltd
@fekberg 
Page 
We need to cater 
for all connectivity 
patterns 
/ Copyright ©2014 19 by Readify Pty Ltd
@fekberg 
Page 
Delivering data 
costs money! 
/ Copyright ©2014 20 by Readify Pty Ltd
@fekberg 
Page 
Managing Offline 
Data 
/ Copyright ©2014 21 by Readify Pty Ltd
@fekberg 
Page 
Out of the box 
support for 
SQLite 
/ Copyright ©2014 22 by Readify Pty Ltd
@fekberg 
Page 
Synchronizing 
Data 
/ Copyright ©2014 23 by Readify Pty Ltd
@fekberg 
Page 
Handling 
concurrency 
/ Copyright ©2014 24 by Readify Pty Ltd
@fekberg 
Page 
Who wins in a collision? 
/ Copyright ©2014 25 by Readify Pty Ltd
@fekberg 
Page 
Concurrency 
Strategies 
/ Copyright ©2014 26 by Readify Pty Ltd
@fekberg 
Page 
Optimistic Concurrency 
› No locks! 
› Notified about conflicts 
› Ask the end-user which version to take? 
/ Copyright ©2014 27 by Readify Pty Ltd
@fekberg 
Page 
Advanced Conflict Resolution 
› Can we merge data? 
/ Copyright ©2014 28 by Readify Pty Ltd
@fekberg 
Page 
Demo 
Taking Data Offline 
/ Copyright ©2014 29 by Readify Pty Ltd
@fekberg 
Page 
Alternative Data 
Stores 
/ Copyright ©2014 30 by Readify Pty Ltd
@fekberg 
Page 
Use your on-premises 
solution 
/ Copyright ©2014 31 by Readify Pty Ltd
@fekberg 
Page 
Supports a wide 
range of stores 
/ Copyright ©2014 32 by Readify Pty Ltd
@fekberg 
Page 
Demo 
Going offline with SQL Server & 
MongoDB 
/ Copyright ©2014 33 by Readify Pty Ltd
@fekberg 
Page 
Summary 
› Mobile Services just got a whole lot more powerful 
› Create a powerful backend using WebAPI 
› We can easily debug our WebAPIonce in the cloud 
› Offline data let’s us cater for all usage patterns 
› Support for a wide range of different data stores 
› Synchronization problems(collisions) can be handled 
in multiple ways 
/ Copyright ©2014 34 by Readify Pty Ltd
@fekberg 
Page 
Questions? 
/ Copyright ©2014 35 by Readify Pty Ltd
Page 
Thank you! 
http://fekberg.com 
@fekberg 
C# Smorgasbord 
/ Copyright ©2014 36 by Readify Pty Ltd

Contenu connexe

Similaire à Azure Mobile Services .NET Backend

What is IoT and how Modulus and Pacific can Help - Featuring Node.js and Roll...
What is IoT and how Modulus and Pacific can Help - Featuring Node.js and Roll...What is IoT and how Modulus and Pacific can Help - Featuring Node.js and Roll...
What is IoT and how Modulus and Pacific can Help - Featuring Node.js and Roll...Eduardo Pelegri-Llopart
 
Xamarin & Azure - BFF, Really?
Xamarin & Azure - BFF, Really?Xamarin & Azure - BFF, Really?
Xamarin & Azure - BFF, Really?Benjamin Tam
 
Sydney 2015 Azure bootcamp PaaS presentation
Sydney 2015 Azure bootcamp PaaS presentationSydney 2015 Azure bootcamp PaaS presentation
Sydney 2015 Azure bootcamp PaaS presentationAaron Saikovski
 
BethClip Investors Pitch Deck (widescreen)
BethClip Investors Pitch Deck (widescreen)BethClip Investors Pitch Deck (widescreen)
BethClip Investors Pitch Deck (widescreen)Rashid Aliyev
 
Have your cake and eat it too: adopting technologies without sacrificing - Pa...
Have your cake and eat it too: adopting technologies without sacrificing - Pa...Have your cake and eat it too: adopting technologies without sacrificing - Pa...
Have your cake and eat it too: adopting technologies without sacrificing - Pa...Internet World
 
FiSH 2017 (Fukuoka International Startup Hub)| SORACOM The secure, scalable, ...
FiSH 2017 (Fukuoka International Startup Hub)| SORACOM The secure, scalable, ...FiSH 2017 (Fukuoka International Startup Hub)| SORACOM The secure, scalable, ...
FiSH 2017 (Fukuoka International Startup Hub)| SORACOM The secure, scalable, ...SORACOM,INC
 
WizShark : Wi-Fi Troubleshooting Made Easy - CWNP Conference 2014
WizShark :  Wi-Fi Troubleshooting Made Easy - CWNP Conference 2014WizShark :  Wi-Fi Troubleshooting Made Easy - CWNP Conference 2014
WizShark : Wi-Fi Troubleshooting Made Easy - CWNP Conference 2014AirTight Networks
 
WizShark : Wi-Fi Troubleshooting Made Easy - CWNP-conference 2014
WizShark :  Wi-Fi Troubleshooting Made Easy - CWNP-conference 2014WizShark :  Wi-Fi Troubleshooting Made Easy - CWNP-conference 2014
WizShark : Wi-Fi Troubleshooting Made Easy - CWNP-conference 2014gopinathkn
 
Android & the Web of Things: Bluetooth Low Energy, Bluetooth 4.0, iBeacons, B...
Android & the Web of Things: Bluetooth Low Energy, Bluetooth 4.0, iBeacons, B...Android & the Web of Things: Bluetooth Low Energy, Bluetooth 4.0, iBeacons, B...
Android & the Web of Things: Bluetooth Low Energy, Bluetooth 4.0, iBeacons, B...EVRYTHNG
 
Web of Things Platforms Tutorial
Web of Things Platforms TutorialWeb of Things Platforms Tutorial
Web of Things Platforms TutorialEVRYTHNG
 
Deploying WebRTC successfully – A web developer perspective
Deploying WebRTC successfully – A web developer perspectiveDeploying WebRTC successfully – A web developer perspective
Deploying WebRTC successfully – A web developer perspectiveDialogic Inc.
 
The Web of Things - IoTExpo SF - May 2014
The Web of Things - IoTExpo SF - May 2014The Web of Things - IoTExpo SF - May 2014
The Web of Things - IoTExpo SF - May 2014Frank Greco
 
Intro to the HTML5 Application Repository Service
Intro to the HTML5 Application Repository ServiceIntro to the HTML5 Application Repository Service
Intro to the HTML5 Application Repository ServiceMarius Obert
 
How to Make WebRTC Useful for Business
How to Make WebRTC Useful for BusinessHow to Make WebRTC Useful for Business
How to Make WebRTC Useful for BusinessDialogic Inc.
 
Airheads main conference slideshare v1.0
Airheads main conference slideshare v1.0Airheads main conference slideshare v1.0
Airheads main conference slideshare v1.0Jason Boud
 
DeveloperWeek 2015 - WebRTC - Where to start and how to scale
DeveloperWeek 2015 - WebRTC - Where to start and how to scaleDeveloperWeek 2015 - WebRTC - Where to start and how to scale
DeveloperWeek 2015 - WebRTC - Where to start and how to scaleDialogic Inc.
 
Value Added Services and WebRTC
Value Added Services and WebRTCValue Added Services and WebRTC
Value Added Services and WebRTCDialogic Inc.
 
Using IBM DataPower for rapid security and application integration with an op...
Using IBM DataPower for rapid security and application integration with an op...Using IBM DataPower for rapid security and application integration with an op...
Using IBM DataPower for rapid security and application integration with an op...Gennadiy Civil
 

Similaire à Azure Mobile Services .NET Backend (20)

What is IoT and how Modulus and Pacific can Help - Featuring Node.js and Roll...
What is IoT and how Modulus and Pacific can Help - Featuring Node.js and Roll...What is IoT and how Modulus and Pacific can Help - Featuring Node.js and Roll...
What is IoT and how Modulus and Pacific can Help - Featuring Node.js and Roll...
 
Xamarin & Azure - BFF, Really?
Xamarin & Azure - BFF, Really?Xamarin & Azure - BFF, Really?
Xamarin & Azure - BFF, Really?
 
Node.js as an IOT Bridge
Node.js as an IOT BridgeNode.js as an IOT Bridge
Node.js as an IOT Bridge
 
Sydney 2015 Azure bootcamp PaaS presentation
Sydney 2015 Azure bootcamp PaaS presentationSydney 2015 Azure bootcamp PaaS presentation
Sydney 2015 Azure bootcamp PaaS presentation
 
BethClip Investors Pitch Deck (widescreen)
BethClip Investors Pitch Deck (widescreen)BethClip Investors Pitch Deck (widescreen)
BethClip Investors Pitch Deck (widescreen)
 
Have your cake and eat it too: adopting technologies without sacrificing - Pa...
Have your cake and eat it too: adopting technologies without sacrificing - Pa...Have your cake and eat it too: adopting technologies without sacrificing - Pa...
Have your cake and eat it too: adopting technologies without sacrificing - Pa...
 
FiSH 2017 (Fukuoka International Startup Hub)| SORACOM The secure, scalable, ...
FiSH 2017 (Fukuoka International Startup Hub)| SORACOM The secure, scalable, ...FiSH 2017 (Fukuoka International Startup Hub)| SORACOM The secure, scalable, ...
FiSH 2017 (Fukuoka International Startup Hub)| SORACOM The secure, scalable, ...
 
WizShark : Wi-Fi Troubleshooting Made Easy - CWNP Conference 2014
WizShark :  Wi-Fi Troubleshooting Made Easy - CWNP Conference 2014WizShark :  Wi-Fi Troubleshooting Made Easy - CWNP Conference 2014
WizShark : Wi-Fi Troubleshooting Made Easy - CWNP Conference 2014
 
WizShark : Wi-Fi Troubleshooting Made Easy - CWNP-conference 2014
WizShark :  Wi-Fi Troubleshooting Made Easy - CWNP-conference 2014WizShark :  Wi-Fi Troubleshooting Made Easy - CWNP-conference 2014
WizShark : Wi-Fi Troubleshooting Made Easy - CWNP-conference 2014
 
Android & the Web of Things: Bluetooth Low Energy, Bluetooth 4.0, iBeacons, B...
Android & the Web of Things: Bluetooth Low Energy, Bluetooth 4.0, iBeacons, B...Android & the Web of Things: Bluetooth Low Energy, Bluetooth 4.0, iBeacons, B...
Android & the Web of Things: Bluetooth Low Energy, Bluetooth 4.0, iBeacons, B...
 
Web of Things Platforms Tutorial
Web of Things Platforms TutorialWeb of Things Platforms Tutorial
Web of Things Platforms Tutorial
 
Deploying WebRTC successfully – A web developer perspective
Deploying WebRTC successfully – A web developer perspectiveDeploying WebRTC successfully – A web developer perspective
Deploying WebRTC successfully – A web developer perspective
 
The Web of Things - IoTExpo SF - May 2014
The Web of Things - IoTExpo SF - May 2014The Web of Things - IoTExpo SF - May 2014
The Web of Things - IoTExpo SF - May 2014
 
IOT - Presentation to PEP @ Progress
IOT - Presentation to PEP @ ProgressIOT - Presentation to PEP @ Progress
IOT - Presentation to PEP @ Progress
 
Intro to the HTML5 Application Repository Service
Intro to the HTML5 Application Repository ServiceIntro to the HTML5 Application Repository Service
Intro to the HTML5 Application Repository Service
 
How to Make WebRTC Useful for Business
How to Make WebRTC Useful for BusinessHow to Make WebRTC Useful for Business
How to Make WebRTC Useful for Business
 
Airheads main conference slideshare v1.0
Airheads main conference slideshare v1.0Airheads main conference slideshare v1.0
Airheads main conference slideshare v1.0
 
DeveloperWeek 2015 - WebRTC - Where to start and how to scale
DeveloperWeek 2015 - WebRTC - Where to start and how to scaleDeveloperWeek 2015 - WebRTC - Where to start and how to scale
DeveloperWeek 2015 - WebRTC - Where to start and how to scale
 
Value Added Services and WebRTC
Value Added Services and WebRTCValue Added Services and WebRTC
Value Added Services and WebRTC
 
Using IBM DataPower for rapid security and application integration with an op...
Using IBM DataPower for rapid security and application integration with an op...Using IBM DataPower for rapid security and application integration with an op...
Using IBM DataPower for rapid security and application integration with an op...
 

Dernier

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 

Dernier (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 

Azure Mobile Services .NET Backend

  • 1. Azure Mobile Services Mobile Services <3 Web API Filip Ekberg
  • 2. Page / Copyright ©2014 2 by Readify Pty Ltd @fekberg
  • 3. Page Filip Ekberg C# MVP http://fekberg.com @fekberg C# Smorgasbord / Copyright ©2014 3 by Readify Pty Ltd
  • 4. @fekberg Page Agenda › Quick re-cap: What is Azure Mobile Services? › The .NET Backend for Mobile Services › Offline Data › Alternative Data Stores / Copyright ©2014 4 by Readify Pty Ltd
  • 5. @fekberg Page What is Azure Mobile Services? / Copyright ©2014 5 by Readify Pty Ltd
  • 6. @fekberg Page Scalable backend in the cloud › Runs in Azure › Backed by Node.JS › Dynamic data schema / Copyright ©2014 6 by Readify Pty Ltd
  • 7. @fekberg Page Cross-platform capabilities › iOS › Android › .NET › REST API / Copyright ©2014 7 by Readify Pty Ltd
  • 8. @fekberg Page Push Notifications › Windows Store › Windows Phone › Android › iOS / Copyright ©2014 8 by Readify Pty Ltd
  • 9. @fekberg Page Authentication & Authorization › Microsoft Account › AD › Twitter › Facebook › Google / Copyright ©2014 9 by Readify Pty Ltd
  • 10. @fekberg Page NodeJS / Copyright ©2014 10 by Readify Pty Ltd
  • 11. @fekberg Page The .NET Backend for Mobile Services / Copyright ©2014 11 by Readify Pty Ltd
  • 12. @fekberg Page Powerful backend with WebAPI / Copyright ©2014 12 by Readify Pty Ltd
  • 13. @fekberg Page Host Anywhere / Copyright ©2014 13 by Readify Pty Ltd
  • 14. @fekberg Page Cross-Platform capabilities / Copyright ©2014 14 by Readify Pty Ltd
  • 15. @fekberg Page Debugging in the cloud / Copyright ©2014 15 by Readify Pty Ltd
  • 16. @fekberg Page Demo Using WebAPI and Mobile Services / Copyright ©2014 16 by Readify Pty Ltd
  • 17. @fekberg Page Going Offline / Copyright ©2014 17 by Readify Pty Ltd
  • 18. @fekberg Page Different connectivity patterns › Always connected with High-Speed Internet › Always connected with Mobile Internet Connection › Occasionally Connected › Barely Connected / Copyright ©2014 18 by Readify Pty Ltd
  • 19. @fekberg Page We need to cater for all connectivity patterns / Copyright ©2014 19 by Readify Pty Ltd
  • 20. @fekberg Page Delivering data costs money! / Copyright ©2014 20 by Readify Pty Ltd
  • 21. @fekberg Page Managing Offline Data / Copyright ©2014 21 by Readify Pty Ltd
  • 22. @fekberg Page Out of the box support for SQLite / Copyright ©2014 22 by Readify Pty Ltd
  • 23. @fekberg Page Synchronizing Data / Copyright ©2014 23 by Readify Pty Ltd
  • 24. @fekberg Page Handling concurrency / Copyright ©2014 24 by Readify Pty Ltd
  • 25. @fekberg Page Who wins in a collision? / Copyright ©2014 25 by Readify Pty Ltd
  • 26. @fekberg Page Concurrency Strategies / Copyright ©2014 26 by Readify Pty Ltd
  • 27. @fekberg Page Optimistic Concurrency › No locks! › Notified about conflicts › Ask the end-user which version to take? / Copyright ©2014 27 by Readify Pty Ltd
  • 28. @fekberg Page Advanced Conflict Resolution › Can we merge data? / Copyright ©2014 28 by Readify Pty Ltd
  • 29. @fekberg Page Demo Taking Data Offline / Copyright ©2014 29 by Readify Pty Ltd
  • 30. @fekberg Page Alternative Data Stores / Copyright ©2014 30 by Readify Pty Ltd
  • 31. @fekberg Page Use your on-premises solution / Copyright ©2014 31 by Readify Pty Ltd
  • 32. @fekberg Page Supports a wide range of stores / Copyright ©2014 32 by Readify Pty Ltd
  • 33. @fekberg Page Demo Going offline with SQL Server & MongoDB / Copyright ©2014 33 by Readify Pty Ltd
  • 34. @fekberg Page Summary › Mobile Services just got a whole lot more powerful › Create a powerful backend using WebAPI › We can easily debug our WebAPIonce in the cloud › Offline data let’s us cater for all usage patterns › Support for a wide range of different data stores › Synchronization problems(collisions) can be handled in multiple ways / Copyright ©2014 34 by Readify Pty Ltd
  • 35. @fekberg Page Questions? / Copyright ©2014 35 by Readify Pty Ltd
  • 36. Page Thank you! http://fekberg.com @fekberg C# Smorgasbord / Copyright ©2014 36 by Readify Pty Ltd

Notes de l'éditeur

  1. We’ve got a packed Agenda today with everything from A quick re-cap of what mobile services is How to use .NET for the Mobile Service Backend How to take our Data Offline And how to use alternative data stores If you have ANY questions during the talk, please feel free to interrupt me any time! If you don’t like to ask questions here, grab me after the talk, I’ll happily help out and answer the questions to the best of my knowledge
  2. Quick 1-2 minute Mobile Services recap How many Mobile Service Experts do we have in the room? How many of you have never seen Mobile Services Before? How many of you can’t be bothered to raise your hand?
  3. How many of you have used the NodeJS Backend? How many of you actually like working with it? How many of you ENJOY debugging it? NO MORE CONSOLE LOGGING DEBUGGING!
  4. I Give YOU the .NET Backend For Mobile Services
  5. Hosts our controllers, everything else is maintained by Azure “Platform as a Service ++” – “The next generation of platform as a service” Bring Your Own Controllers! Lets us more easily filter data before sent to client Use built in [Authorize] when introducing Authentication
  6. You don’t need to host this in Azure But why wouldn’t you?!
  7. Integrates with the SAME platforms as before: iOS Android Windows Phone Windows Store REST.. The contracts/api is the same as before!
  8. The NodeJS backend we all loved to debug is in the past, we can now debug our application like any other .NET application EVEN when it’s published to the cloud!
  9. Let us now take a look at building a Mobile Service, backed by Web API that we can run, debug and work more easily with both locally and in the cloud
  10. I want to tell you a story… When arriving in Australia – The first thing that I did was to run around with my soon to be wife in Sydney CBD to find a GOOD, fast and reliable mobile carrier. After understanding that there’s no such thing here, I went with the one giving me the most data for the buck – to my surprise even if you are allowed to use a lot of data this doesn’t matter if there’s no reception Time went by and me and my fiancée were quite happy with the 4GB of data that we could use each month, especially since the coverage in Sydney isn’t that too bad! However, once summer approached and our plans to jump on a plane to Cairns and go for a road trip with her parents for 10 days were in action – the fact that coverage in Sydney was good didn’t mean coverage in the roads in the wilderness would be just as good. Now, being on the road for 10 days with your fiancée’s parents is an interesting achievement on it’s own – but when there’s 4 social media addicts in a car without internet coverage – I can just tell you: wow. I don’t know how we survived, but we certainly did This experience had me thinking, a lot of countries outside Australia, especially European countries are so spoiled when it comes to great internet connection When apps are being developed by developers in these countries, they don’t consider us poor souls that have to go on road trips and enjoy ourselves here in Australia – no – they cater their applications towards people with constant 100/100 Mbit connections What if we could use our social media, to for instance just publish our pictures on the trip, do check ins and all that and have this sync whenever we have a connection? This is where I wish these developers thought more about allowing data to be used offline, as well as online
  11. What if the developers of the applications that we so desperately needed on our journey would think of the different connectivity patterns? We have people using high speed wifi all day long We have people using 3G/4G connections more often than wifi We have people on less good mobile connections such as 2G, they rarely want to sync their data because it is too slow. These people may occasionally connect using wifi We have people on airplanes, people working on the farms, we have a lot of spots in Australia where there is no connection what so ever, the people working on these locations primarily – they are barely connected at all
  12. We need to cater for all these different connectivity patterns Our applications may, or may not allow a lower amount of functionality in the different connectivity states – but that is OK! We just don’t want to tell our users to ALWAYS be online to use our applications, unless it is a true online only solution Even Streaming services like Spotify allows a offline mode! (Swedish company by the way!)
  13. In Australia, delivering data both over the mobile network and on your home internet connection will cost money This means we need to think about how much data we send, and when Can we let the user decide?
  14. Taking Data Offline seems like the obvious decision to make How many in here have “rolled their own” Offline sync? We need a good way to manage data we want offline – with all the difficulties that comes with it! Where do we store the data? What happens when data has been produced, modified or deleted from different sources?
  15. How many have heard of or used SQLite? SQLite is a database engine that is: Self contained which means it doesn’t rely on third party libraries or special frameworks to run Server-less – you work directly against the database on the file system No configuration needed! Transactional SQLite runs on a WIDE range of devices, which makes it EXCELLENT for cross-platform development iOS Android Windows Phone Windows Store Etc.. SQLite is supported on all platforms Mobile Services is supported on! The support comes out of the box, we simply need to point to a place where our SQLite database is located
  16. Keeping the local version and the server version up to date is key Mobile Services supply us with an easy way to push and pull changes This will also tell us about potential problems with the push for instance When do we want to sync data? Do we want to sync every time a user comes online? Remember the different connectivity patterns: Barely connected users may want to sync manually when they are on their good corporate wifi again Always connected can be fully automated to look at the device status
  17. Syncing data can cause problems that we need to handle How many of you LOVE concurrency problems? We need a good way to handle concurrency This means that we need a way to handle when data has been changed Remember when I was on my road trip, what if I needed to do some quick work done on a document in a custom built system. Imagine I got this text from my boss sends you a text: I NEED THIS CHANGE ASAP! – Completely forgetting about the lack of connectivity! Now, being in the wilderness surrounded by crocodiles, there’s a few other things on my mind so not taking to much into consideration that I don’t have a good 4G connection – my data isn’t synced Few hours later I got to a 4G spot – my data tries to sync We all know that URGENT messages goes to more than one person, so this document was updated by a co-worker instead, he pushed his change before mine Now I had two problems – Being afraid of nearby crocodiles and sync problems – I really don’t know which one is worse!
  18. So how do we decide what version wins the collision war? In this case here, we have a few people working on the application, pushing their changes occasionally We forget about our friends working out in the wilderness, that rarely have connections They come online and tries to sync their data BAM – doesn’t work because there’s a concurrency issue So who wins? How do we weight which version is the best to take? Last in wins? First in wins? Do we pre-lock data?
  19. In the case of Mobile Services, we have a few concurrency strategies that we can take into consideration We could just overwrite the change whenever there is a push – but that is just avoiding the problem!
  20. We do not want to lock the data, as this requires us to be online When I was running from crocodiles, being haunted by SMSes from my boss – do I really want to start looking for a 4G spot to lock my data? I think not! We can use something called Optimistic Concurrency This means we can notify the user about the concurrency and we’re not locking any data in advance When there is a conflict, we can simply ask the user what version to take We all know that people will always say “CHOOSE LOCAL VERSION” Hands up if you handle sync conflicts by saying “CHOOSE LOCAL VERSION”!
  21. What if two independent fields of an object changed, can’t we just merge? We won’t look at how to implement a more advance sync, where you allow users to merge It is certainly something to keep in mind, users might want to get the options to merge their data instead of overwriting
  22. Let us now take a look at how we can introduce offline data in our application We will look at how to connect to our pre-existing mobile service Without changing anything on the server, we will introduce a local store for our data on our devices We will then make sure that the data is downloaded and synced when there is a change Need to install SQLite extensions Install-Package WindowsAzure.MobileServices.SQLiteStore -pre
  23. We have seen how to setup a new Mobile Service and connect to a SQL Server that is hosted in Azure This may have indicated to you that you could really tell your Mobile Service to connect to any store Bring Your Own Database!
  24. Our On-Premises solution may already have a Web API and a data store attached to it We can easily take our existing Web API controllers and host that with our Mobile Services This pre-existing solution may of course include a connection to a different data store than what comes out of the box with a new Mobile Service
  25. What stores? Table Storage SQL Server MongoDB It is very easy to connect to your on-premises solution In terms of SQL Server What happens with advance mappings? – AutoMapper What happens if we don’t want all data exposed from our existing backend? – Allow subset of the data
  26. Let us now take a look at how we can change our backend to instead connect to a data store like Mongo and SQLServer Connecting to Mongo is much easier than you might think, even though the data store is a bit different from storing something in SQL Server or Table Storage Offline sync with Mongo requires a bit of tweaking Connecting to our on-premises SQL Server requires us to define a mapping, using AutoMapper so that we can tell our service which data to expose To use Mongo: WindowsAzure.MobileServices.Backend.Mongo Let’s get to it!
  27. We’ve seen a lot of REALLY exciting changes coming from Microsoft in this space Mobile Services just got a whole lot more powerful as we can bring in our existing Web API, use Web API to define our .NET backend hosted in Mobile Services and use everything that we already know and love about Web API It’s so awesome that we can hook up our debugger to the cloud and see what is really going on when our application is running – this is an amazing pain point that they have looked after! The next time I’m on a Road Trip – which will actually be later this year – I really hope more developers have incorporated the idea of offline data Not EVERYONE have access to 100/100 Mbit all the time No matter if you are coming in with a Mongo DB, SQL Server or Table Storage – you can introduce this with your Web API and Mobile Service! Doesn’t matter where you host your Mobile Service – You can host it in your private cloud in your basement – or go for the more scalable and reliable option – Azure Finally we’ve discovered different ways to handle concurrency and collisions – it may not be as easy as we think!