SlideShare une entreprise Scribd logo
1  sur  52
Stefan Lange
empira Software GmbH
Stefan.Lange@empira.de
Einführung in die
Windows Azure Mobil Services
03.05.2013
Agenda
 Warum Azure Mobile Services?
 Überblick Features
 Beispielanwendung
 Einsatzszenarien
 Fazit
Fragen / Diskussion
Was sind die Azure Mobile Services?
Automatisch generierter REST-basierter Web-Services mit
• Zugriff auf strukturierten Speicher (MSSQL Server)
• Zugriffskontrolle
• Server-seitiges Scripting
• Authentifizierung
• Notifications
• Diagnose und Logging
• Skalierbar
Alles was man als Backend für seine App braucht
DEMO
 Überblick Windows Azure Portal
 Anlegen eines Azure Mobile Services
Nutznung der Azure Mobile Services
Prerequisites
• Windows Azure Account, z. B. den 90-Tage “Free Trial” oder
ein passendes MSDN Abo
Nutzung der
Preview-Version
muss man
freischalten
Sicht auf die Daten
Client-Seite
 Jeder Zugriff geht auf genau eine Tabellen
 Keine Joins möglich
 Vorteil: Man kann nicht so leicht was falsch machen
Server-Seite
 Default: Durchreichen der Operation an die Datenbank
 Flexibel erweiterbar durch Script-Code
 Ebenfalls sehr einfaches Konzept
 Joins prinzipiell über Views möglich, aber nicht zu
empfehlen
Das REST API der Azure Mobile Services
REST API auf Tabellen einer SQL Server Datenbank
Unterstützte HTTP-Verben
• GET – Einen oder mehrere Einträge abfragen
• POST – Neuen Eintrag anlegen
• PATCH – Einen Eintrag aktualisieren
• DELETE – Eintrag löschen
URI-Format
https://<service_name>.azure-mobile.net/tables/<table_name>[/<item_id>]
 Bei GET ggf. noch weitere Parameter wie where, skip, take, etc.
 Das Datenformat ist JSON
Zugriffsrechte pro Tabelle und Operation
Die vier Operationen je Tabelle
• INSERT (http POST)
• UPDATE (http PATCH)
• DELETE (http DELETE)
• READ (http GET)
Mögliche Berechtigungen je Operation
• Everyone
• Anybody with the Application Key
• Only Authenticated Users
• Only Scripts and Admins
Anlegen einer Tabelle im Portal
Default einer neuen Tabelle
Automatische ID-Spalte mit Index drauf
DEMO
 Anlegen einer Tabelle
 REST API mit Hilfe von POSTMAN ausprobieren
 Dynamisches Schema
 Zugriffskontrolle
Zugriffsschlüssel
Application Key
 Nur für Entwicklung und Tests verwenden
 Nicht in fertige App einbauen
(besser Benutzerauthentifizierung verwenden)
Master Key
 Administration, Backup, Installation
 Server zu Server Kommunikation
 Auf gar keinen Fall rausgeben
 Kann Scripts abschalten
Serverseitiges Scripting
Ein Script pro Operation (insert, update, delete, read) und
pro Tabelle
 Basierend auf node.js
 Zurzeit JavaScript, weil universell verwendbar
(C# ist aber ganz oben auf der Wunschliste)
node.js basiert auf Googles JavaScript Technologie und
läuft jetzt auf Microsoft Azure Servern
Serverseitiges Scripting
Standard-Script am Beispiel der Insert-Operation
item: das einzufügende Item
user: der angemeldete Benutzer
request: das Requestobject dieser Operation
Default
Implementierung
Serverseitiges Scripting
Veränderung des einzufügenden Items
Vor dem Insert
Spalte füllen.
Serverseitiges Scripting
Ändern des Ergebnisses nach execute
JavaScript ist hier besser geeignet als C#
Nach dem Lesen
Element
hinzufügen bzw.
löschen
Serverseitiges Scripting
Logging
Log via
console Objekt
Serverseitiges Scripting
Ergebnisse vollständig selbst berechnen
Eigener HTTP
Statuscode und
eigenes Ergebnis
Stets vorhandene JavaScript Objekte
Table
Operationen auf
Tabellen
tables
Operationen auf
Tabellen
mssql
Datenbankzugriff
über Transact-SQL
User
Aktueller User
console
Logging
statusCodes
HTTP Status Codes
Weitere Module über require("…")
apns
Apple Push
Notification Service
azure
Windows Azure
SDK
request
Externer REST
Service
mpns
Windows Phone 8
Push Notification
Service
sendgrid
E-Mail Service
wns
Windows Store
Notification Service
Anprogrammieren der Mobile Services
 Portal generiert Beispiel-Apps
• Windows / WinRT
• Windows Phone 8
• iOS, Androis, HTML
• Beliebige via REST API
Prerequisites
• Visual Studio 2012
• Windows Phone SDK 8.0
• Live SDK for Windows and Windows Phone (optional)
• Ggf. weitere Tools für iOS oder Android
• Windows Azure Account oder 90 Tage “Free Trial”
Quick Start im Azure Portal
Beispielprojekt „Event Buddy“
Anlegen von Events, Sessions und deren Bewertung
Entities
Event
Rating
Channel
Session
Initialisierung des Mobile Service Clients
sealed class App : Application
{
// Create Mobil Service Client singleton in App class.
public static MobileServiceClient MobileService =
new MobileServiceClient(
"https://eventbuddy-stla.azure-mobile.net/",
"YGClaqlKzjZrf3iUIQLyLzCwBzUJyg57");
…
}
Grundprinzip: „Keep it simple“
Application Key
public class MyData
{
[JsonProperty(PropertyName = "id")]
public int Id { get; set; }
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "start")]
public DateTime Start { get; set; }
[JsonProperty(PropertyName = "end")]
public DateTime End { get; set; }
[JsonProperty(PropertyName = "description")]
public string Description { get; set; }
}
Beispielhafte Datamodel Klasse
PropertyName weil
JSON camelCasing
verwendet
REST Operationen in Code
Einfügen neues Element (http POST)
await App.MobileService.GetTable<MyData>().InsertAsync(item);
Aktualisieren eines Elements (http PATCH)
await App.MobileService.GetTable<MyData>().UpdateAsync(item);
Löschen eines Elements (http DELETE)
await App.MobileService.GetTable<MyData>().DeleteAsync(item);
Lesen von Elementen (http GET)
in Kombination mit Where, Skip, Take, etc.
await App.MobileService.GetTable<MyData>().ReadAsync(…);
DEMO
 Anlegen eines neuen Events in Event Buddy App
private async Task SaveEvent(Event item)
{
// Save a new event.
await App.MobileService.GetTable<Event>().InsertAsync(item);
Events.Add(item);
}
Speichern eines neuen Events
Nach dem Aufruf hat
item eine gültige Id
erhalten.
private async Task LoadEvents()
{
// Query for all existing events.
Events = await App.MobileService.GetTable<Event>().ToEnumerableAsync();
}
public dynamic Events
{
get { return _events; }
set
{
_events.Clear();
foreach (var item in value)
_events.Add(item);
}
}
readonly ObservableCollection<Event> _events = new ObservableCollection<Event>();
Laden der Events
Benutzer-Authentifizierung
Azure Mobile Services hat vier fertige Identity-Provider
• Microsoft Account (Live ID)
• Facebook Login
• Twitter Login
• Google Login
• (weitere in Vorbereitung…)
Vorteile der fertigen Provider
 Keine eigene Benutzerverwaltung
 Sicherheit für den Anwender, denn App kennt die
Credentials nicht
 Man kann sich auf seine eigentliche Anwendung
konzentrieren
 Eigener Identity Provider ist ein Projekt für sich und
zudem noch ein ziemlich anspruchsvolles
Vorbereitung des Logins via Twitter
Twitter die eigene Anwendung bekannt machen
• https://dev.twitter.com/apps
Anlegen einer neuen Application
Der Mobile Service wird bei Twitter registriert
(nicht die eigentliche App)
Twitter generiert die OAuth Settings
Eintragen in den Mobile Service
public async Task LoginTwitter()
{
var user = App.MobileService.CurrentUser;
while (user == null)
{
string message;
try
{
user = await App.MobileService.LoginAsync(
MobileServiceAuthenticationProvider.Twitter);
message = string.Format("You are now logged in as '{0}'",
user.UserId);
}
catch (InvalidOperationException)
{
message = "You must log in. Login Required";
}
var dialog = new MessageDialog(message);
dialog.Commands.Add(new UICommand("OK"));
await dialog.ShowAsync();
}
}
Login
DEMO
 Mit Twitter-Konto anmelden
Twitter Bild-URL speichern
Push Notification
 Via Script werden Notifications an registrierte Geräte
geschickt
(Demo mit Windows Phone)
Scheduler Jobs
Periodischen Ausführen eines Scripts
• Bereinigen der Datenbank
• Archivierung alter Datensätze
• Verarbeiten von Datensätzen, z.B. Bilder skalieren
• Verschicken von Nachrichten
Anlegen eines neuen Jobs
Maximal 1 Job bei einem kostenlosem Mobile Service
möglich
Beispiel Job
Löschen doppelter Channel-Einträge
Azure Console
 Anlegen und Konfigurieren von Mobile Services per
PowerShell Commandline
 Beispielsweise Backup der Scripts aller Tabellen
 Verwalten von Dev/Staging/Prod Services
Skalierbarkeit des Services
Beispiel Szenario 1
Daten synchronisieren zwischen Geräten
Mobile
Service
Phone 8
Windows
iPhone
Android
Browser
DB
Web-Service
Beispiel Szenario 2 (ohne WAMS)
Eine Anwendung mit vielen Datenquellen
Wenn API sich irgendwo ändert, crasht die Anwendung
Anwendung
SharePoint
Facebook
XML-Feed
etc.
Beispiel Szenario 2 (mit WAMS)
Datenintegration über „Single API“ mit Mobile Services
SharePoint
Anwendung
Facebook
XML-Feed
etc.
Mobile
Service
Azure Mobile Services
Wieso eigentlich Mobile Services?
Was ich zurzeit gerade damit mache…
 Überwachung der Kondensatpumpe (Heizung) und der
Alarmanlage
 Sensorenabfrage mit Arduino-Bord über USB an einen
Windows-Service in einem PC
• Info aufs Handy wenn Pumpe ausfällt
• Status der Alarmanlage abfragen
Alarmanlage
• scharf
• Alarm
• Sabotage
Pumpe
• an/aus
Windows
Dienst
Mobile
Service
Fazit
 Alles was man für sein App Backend braucht
 Einstieg einfach und kostenlos
 Fertige Bausteine „out of the box“
 Keine „externen“ Hürden mehr bei der App-Entwicklung
 Focus auf die Apps, nicht auf die Infrastruktur
 Auch über Mobile Szenarien hinaus praktisch
Super coole Sache – unbedingt ausprobieren
Mehr Info zu Mobile Services
 Josh Twist
http://www.thejoyofcode.com/
 Carlos Figueira
http://blogs.msdn.com/b/carlosfigueira/
 Nick Harris
http://www.nickharris.net/
Das war’s
Vielen Dank für Eure Aufmerksamkeit
Fragen?
Stefan.Lange@empira.de

Contenu connexe

Tendances

Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Christian Janz
 
Android Entwicklung (App Entwickler Konferenz 2010 der Telekom)
Android Entwicklung (App Entwickler Konferenz 2010 der Telekom)Android Entwicklung (App Entwickler Konferenz 2010 der Telekom)
Android Entwicklung (App Entwickler Konferenz 2010 der Telekom)greenrobot
 
MicroProfile 2.x: Der alternative Standard
MicroProfile 2.x: Der alternative StandardMicroProfile 2.x: Der alternative Standard
MicroProfile 2.x: Der alternative StandardOPEN KNOWLEDGE GmbH
 
Angular von 0 auf 100
Angular von 0 auf 100Angular von 0 auf 100
Angular von 0 auf 100Yvette Teiken
 
Welches Webframework passt zu mir? (WJAX)
Welches Webframework passt zu mir? (WJAX)Welches Webframework passt zu mir? (WJAX)
Welches Webframework passt zu mir? (WJAX)Alexander Casall
 
Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Wie skaliert man Software as a Service Applikationen in der Windows Azure CloudWie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Wie skaliert man Software as a Service Applikationen in der Windows Azure CloudPatric Boscolo
 
JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)Michael Kurz
 
Schulung jQuery JavaScript-Bibliothek
Schulung jQuery JavaScript-BibliothekSchulung jQuery JavaScript-Bibliothek
Schulung jQuery JavaScript-Bibliothektutego
 

Tendances (12)

Reactive Programming
Reactive ProgrammingReactive Programming
Reactive Programming
 
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
Building Enterprise Applications with AngularJS (GDG DevFest Karlsruhe 2014)
 
Android Entwicklung (App Entwickler Konferenz 2010 der Telekom)
Android Entwicklung (App Entwickler Konferenz 2010 der Telekom)Android Entwicklung (App Entwickler Konferenz 2010 der Telekom)
Android Entwicklung (App Entwickler Konferenz 2010 der Telekom)
 
Einführung in React
Einführung in ReactEinführung in React
Einführung in React
 
GWT: Eintauchen in MVP und Internationalisierung
GWT: Eintauchen in MVP und InternationalisierungGWT: Eintauchen in MVP und Internationalisierung
GWT: Eintauchen in MVP und Internationalisierung
 
MicroProfile 2.x: Der alternative Standard
MicroProfile 2.x: Der alternative StandardMicroProfile 2.x: Der alternative Standard
MicroProfile 2.x: Der alternative Standard
 
Angular von 0 auf 100
Angular von 0 auf 100Angular von 0 auf 100
Angular von 0 auf 100
 
Welches Webframework passt zu mir? (WJAX)
Welches Webframework passt zu mir? (WJAX)Welches Webframework passt zu mir? (WJAX)
Welches Webframework passt zu mir? (WJAX)
 
Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Wie skaliert man Software as a Service Applikationen in der Windows Azure CloudWie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
 
MVP mit dem Google Web Toolkit
MVP mit dem Google Web ToolkitMVP mit dem Google Web Toolkit
MVP mit dem Google Web Toolkit
 
JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)
 
Schulung jQuery JavaScript-Bibliothek
Schulung jQuery JavaScript-BibliothekSchulung jQuery JavaScript-Bibliothek
Schulung jQuery JavaScript-Bibliothek
 

En vedette

Windows Azure Mobile Services
Windows Azure Mobile ServicesWindows Azure Mobile Services
Windows Azure Mobile ServicesJan Hentschel
 
Agile Virtualisierung
Agile VirtualisierungAgile Virtualisierung
Agile VirtualisierungJan Hentschel
 
Cool NoSQL on Azure with DocumentDB
Cool NoSQL on Azure with DocumentDBCool NoSQL on Azure with DocumentDB
Cool NoSQL on Azure with DocumentDBJan Hentschel
 
Cross Platform Mobile Push Notifications with Azure Notifications Hub
Cross Platform Mobile Push Notifications with Azure Notifications HubCross Platform Mobile Push Notifications with Azure Notifications Hub
Cross Platform Mobile Push Notifications with Azure Notifications HubSukriti Sharma
 
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der PraxisMehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der PraxisJan Hentschel
 

En vedette (7)

Windows Azure Mobile Services
Windows Azure Mobile ServicesWindows Azure Mobile Services
Windows Azure Mobile Services
 
Windows 8 Features
Windows 8 FeaturesWindows 8 Features
Windows 8 Features
 
Agile Virtualisierung
Agile VirtualisierungAgile Virtualisierung
Agile Virtualisierung
 
Cool NoSQL on Azure with DocumentDB
Cool NoSQL on Azure with DocumentDBCool NoSQL on Azure with DocumentDB
Cool NoSQL on Azure with DocumentDB
 
Cross Platform Mobile Push Notifications with Azure Notifications Hub
Cross Platform Mobile Push Notifications with Azure Notifications HubCross Platform Mobile Push Notifications with Azure Notifications Hub
Cross Platform Mobile Push Notifications with Azure Notifications Hub
 
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der PraxisMehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
 
Api services
Api servicesApi services
Api services
 

Similaire à dotnet Cologne 2013 - Windows Azure Mobile Services

MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der CloudTorsten Fink
 
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...Peter Kirchner
 
Sicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-AnwendungenSicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-AnwendungenPhilipp Burgmer
 
Android Entwicklung GTUG München 2009
Android Entwicklung GTUG München 2009Android Entwicklung GTUG München 2009
Android Entwicklung GTUG München 2009greenrobot
 
Basta 2016 - Test- und Releaseumgebungen in der Cloud
Basta 2016 - Test- und Releaseumgebungen in der CloudBasta 2016 - Test- und Releaseumgebungen in der Cloud
Basta 2016 - Test- und Releaseumgebungen in der CloudMarc Müller
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101gueste4be40
 
PAVONElive und PAVONE PCS für Java EE
PAVONElive und PAVONE PCS für Java EEPAVONElive und PAVONE PCS für Java EE
PAVONElive und PAVONE PCS für Java EEBjoern Reinhold
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresMatthias Jauernig
 
Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8gedoplan
 
Ajax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google SuggestAjax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google SuggestBastian Feder
 
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Marc Müller
 
Java in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App EnginegJava in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App Engineggedoplan
 
Tech Talk: Cloud Computing
Tech  Talk: Cloud ComputingTech  Talk: Cloud Computing
Tech Talk: Cloud Computingrjtg
 

Similaire à dotnet Cologne 2013 - Windows Azure Mobile Services (20)

MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der Cloud
 
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
 
AngularJS
AngularJSAngularJS
AngularJS
 
Sicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-AnwendungenSicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-Anwendungen
 
Android Entwicklung GTUG München 2009
Android Entwicklung GTUG München 2009Android Entwicklung GTUG München 2009
Android Entwicklung GTUG München 2009
 
Wicket Kurzübersicht
Wicket KurzübersichtWicket Kurzübersicht
Wicket Kurzübersicht
 
A/B Testing mit Node.js
A/B Testing mit Node.jsA/B Testing mit Node.js
A/B Testing mit Node.js
 
Basta 2016 - Test- und Releaseumgebungen in der Cloud
Basta 2016 - Test- und Releaseumgebungen in der CloudBasta 2016 - Test- und Releaseumgebungen in der Cloud
Basta 2016 - Test- und Releaseumgebungen in der Cloud
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101
 
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetproTest-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
 
GWT
GWTGWT
GWT
 
PAVONElive und PAVONE PCS für Java EE
PAVONElive und PAVONE PCS für Java EEPAVONElive und PAVONE PCS für Java EE
PAVONElive und PAVONE PCS für Java EE
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core Middlewares
 
Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8
 
Feature Flags mit Togglz
Feature Flags mit TogglzFeature Flags mit Togglz
Feature Flags mit Togglz
 
Ajax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google SuggestAjax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google Suggest
 
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
 
Workshop Vue js
Workshop Vue jsWorkshop Vue js
Workshop Vue js
 
Java in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App EnginegJava in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App Engineg
 
Tech Talk: Cloud Computing
Tech  Talk: Cloud ComputingTech  Talk: Cloud Computing
Tech Talk: Cloud Computing
 

Plus de Sascha Dittmann

Hochskalierbare, relationale Datenbanken in Microsoft Azure
Hochskalierbare, relationale Datenbanken in Microsoft AzureHochskalierbare, relationale Datenbanken in Microsoft Azure
Hochskalierbare, relationale Datenbanken in Microsoft AzureSascha Dittmann
 
Microsoft R - Data Science at Scale
Microsoft R - Data Science at ScaleMicrosoft R - Data Science at Scale
Microsoft R - Data Science at ScaleSascha Dittmann
 
SQL Server vs. Azure DocumentDB – Ein Battle zwischen XML und JSON
SQL Server vs. Azure DocumentDB – Ein Battle zwischen XML und JSONSQL Server vs. Azure DocumentDB – Ein Battle zwischen XML und JSON
SQL Server vs. Azure DocumentDB – Ein Battle zwischen XML und JSONSascha Dittmann
 
dotnet Cologne 2015 - Azure Service Fabric
dotnet Cologne 2015 - Azure Service Fabric dotnet Cologne 2015 - Azure Service Fabric
dotnet Cologne 2015 - Azure Service Fabric Sascha Dittmann
 
SQL Saturday #313 Rheinland - MapReduce in der Praxis
SQL Saturday #313 Rheinland - MapReduce in der PraxisSQL Saturday #313 Rheinland - MapReduce in der Praxis
SQL Saturday #313 Rheinland - MapReduce in der PraxisSascha Dittmann
 
Hadoop 2.0 - The Next Level
Hadoop 2.0 - The Next LevelHadoop 2.0 - The Next Level
Hadoop 2.0 - The Next LevelSascha Dittmann
 
Microsoft HDInsight Podcast #001 - Was ist HDInsight
Microsoft HDInsight Podcast #001 - Was ist HDInsightMicrosoft HDInsight Podcast #001 - Was ist HDInsight
Microsoft HDInsight Podcast #001 - Was ist HDInsightSascha Dittmann
 
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 2)
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 2)SQLSaturday #230 - Introduction to Microsoft Big Data (Part 2)
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 2)Sascha Dittmann
 
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 1)
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 1)SQLSaturday #230 - Introduction to Microsoft Big Data (Part 1)
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 1)Sascha Dittmann
 
dotnet Cologne 2013 - Microsoft HD Insight für .NET Entwickler
dotnet Cologne 2013 - Microsoft HD Insight für .NET Entwicklerdotnet Cologne 2013 - Microsoft HD Insight für .NET Entwickler
dotnet Cologne 2013 - Microsoft HD Insight für .NET EntwicklerSascha Dittmann
 
Developer Open Space 2012 - Cloud Computing Workshop
Developer Open Space 2012 - Cloud Computing WorkshopDeveloper Open Space 2012 - Cloud Computing Workshop
Developer Open Space 2012 - Cloud Computing WorkshopSascha Dittmann
 
PASS Camp 2012 - Big Data mit Microsoft (Teil 1)
PASS Camp 2012 - Big Data mit Microsoft (Teil 1)PASS Camp 2012 - Big Data mit Microsoft (Teil 1)
PASS Camp 2012 - Big Data mit Microsoft (Teil 1)Sascha Dittmann
 
CloudOps Summit 2012 - 3 Wege in die Cloud
CloudOps Summit 2012 - 3 Wege in die CloudCloudOps Summit 2012 - 3 Wege in die Cloud
CloudOps Summit 2012 - 3 Wege in die CloudSascha Dittmann
 
.NET Usergroup Rhein-Neckar: Big Data in der Cloud - Apache Hadoop-based Serv...
.NET Usergroup Rhein-Neckar: Big Data in der Cloud - Apache Hadoop-based Serv....NET Usergroup Rhein-Neckar: Big Data in der Cloud - Apache Hadoop-based Serv...
.NET Usergroup Rhein-Neckar: Big Data in der Cloud - Apache Hadoop-based Serv...Sascha Dittmann
 
NoSQL mit RavenDB und Azure
NoSQL mit RavenDB und AzureNoSQL mit RavenDB und Azure
NoSQL mit RavenDB und AzureSascha Dittmann
 
Windows Azure für Entwickler V1
Windows Azure für Entwickler V1Windows Azure für Entwickler V1
Windows Azure für Entwickler V1Sascha Dittmann
 

Plus de Sascha Dittmann (18)

C# + SQL = Big Data
C# + SQL = Big DataC# + SQL = Big Data
C# + SQL = Big Data
 
Hochskalierbare, relationale Datenbanken in Microsoft Azure
Hochskalierbare, relationale Datenbanken in Microsoft AzureHochskalierbare, relationale Datenbanken in Microsoft Azure
Hochskalierbare, relationale Datenbanken in Microsoft Azure
 
Microsoft R - Data Science at Scale
Microsoft R - Data Science at ScaleMicrosoft R - Data Science at Scale
Microsoft R - Data Science at Scale
 
SQL Server vs. Azure DocumentDB – Ein Battle zwischen XML und JSON
SQL Server vs. Azure DocumentDB – Ein Battle zwischen XML und JSONSQL Server vs. Azure DocumentDB – Ein Battle zwischen XML und JSON
SQL Server vs. Azure DocumentDB – Ein Battle zwischen XML und JSON
 
dotnet Cologne 2015 - Azure Service Fabric
dotnet Cologne 2015 - Azure Service Fabric dotnet Cologne 2015 - Azure Service Fabric
dotnet Cologne 2015 - Azure Service Fabric
 
SQL Saturday #313 Rheinland - MapReduce in der Praxis
SQL Saturday #313 Rheinland - MapReduce in der PraxisSQL Saturday #313 Rheinland - MapReduce in der Praxis
SQL Saturday #313 Rheinland - MapReduce in der Praxis
 
Hadoop 2.0 - The Next Level
Hadoop 2.0 - The Next LevelHadoop 2.0 - The Next Level
Hadoop 2.0 - The Next Level
 
Microsoft HDInsight Podcast #001 - Was ist HDInsight
Microsoft HDInsight Podcast #001 - Was ist HDInsightMicrosoft HDInsight Podcast #001 - Was ist HDInsight
Microsoft HDInsight Podcast #001 - Was ist HDInsight
 
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 2)
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 2)SQLSaturday #230 - Introduction to Microsoft Big Data (Part 2)
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 2)
 
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 1)
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 1)SQLSaturday #230 - Introduction to Microsoft Big Data (Part 1)
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 1)
 
dotnet Cologne 2013 - Microsoft HD Insight für .NET Entwickler
dotnet Cologne 2013 - Microsoft HD Insight für .NET Entwicklerdotnet Cologne 2013 - Microsoft HD Insight für .NET Entwickler
dotnet Cologne 2013 - Microsoft HD Insight für .NET Entwickler
 
Developer Open Space 2012 - Cloud Computing Workshop
Developer Open Space 2012 - Cloud Computing WorkshopDeveloper Open Space 2012 - Cloud Computing Workshop
Developer Open Space 2012 - Cloud Computing Workshop
 
PASS Camp 2012 - Big Data mit Microsoft (Teil 1)
PASS Camp 2012 - Big Data mit Microsoft (Teil 1)PASS Camp 2012 - Big Data mit Microsoft (Teil 1)
PASS Camp 2012 - Big Data mit Microsoft (Teil 1)
 
CloudOps Summit 2012 - 3 Wege in die Cloud
CloudOps Summit 2012 - 3 Wege in die CloudCloudOps Summit 2012 - 3 Wege in die Cloud
CloudOps Summit 2012 - 3 Wege in die Cloud
 
.NET Usergroup Rhein-Neckar: Big Data in der Cloud - Apache Hadoop-based Serv...
.NET Usergroup Rhein-Neckar: Big Data in der Cloud - Apache Hadoop-based Serv....NET Usergroup Rhein-Neckar: Big Data in der Cloud - Apache Hadoop-based Serv...
.NET Usergroup Rhein-Neckar: Big Data in der Cloud - Apache Hadoop-based Serv...
 
Big Data & NoSQL
Big Data & NoSQLBig Data & NoSQL
Big Data & NoSQL
 
NoSQL mit RavenDB und Azure
NoSQL mit RavenDB und AzureNoSQL mit RavenDB und Azure
NoSQL mit RavenDB und Azure
 
Windows Azure für Entwickler V1
Windows Azure für Entwickler V1Windows Azure für Entwickler V1
Windows Azure für Entwickler V1
 

dotnet Cologne 2013 - Windows Azure Mobile Services

  • 1. Stefan Lange empira Software GmbH Stefan.Lange@empira.de Einführung in die Windows Azure Mobil Services 03.05.2013
  • 2. Agenda  Warum Azure Mobile Services?  Überblick Features  Beispielanwendung  Einsatzszenarien  Fazit Fragen / Diskussion
  • 3. Was sind die Azure Mobile Services? Automatisch generierter REST-basierter Web-Services mit • Zugriff auf strukturierten Speicher (MSSQL Server) • Zugriffskontrolle • Server-seitiges Scripting • Authentifizierung • Notifications • Diagnose und Logging • Skalierbar Alles was man als Backend für seine App braucht
  • 4. DEMO  Überblick Windows Azure Portal  Anlegen eines Azure Mobile Services
  • 5. Nutznung der Azure Mobile Services Prerequisites • Windows Azure Account, z. B. den 90-Tage “Free Trial” oder ein passendes MSDN Abo Nutzung der Preview-Version muss man freischalten
  • 6. Sicht auf die Daten Client-Seite  Jeder Zugriff geht auf genau eine Tabellen  Keine Joins möglich  Vorteil: Man kann nicht so leicht was falsch machen Server-Seite  Default: Durchreichen der Operation an die Datenbank  Flexibel erweiterbar durch Script-Code  Ebenfalls sehr einfaches Konzept  Joins prinzipiell über Views möglich, aber nicht zu empfehlen
  • 7. Das REST API der Azure Mobile Services REST API auf Tabellen einer SQL Server Datenbank Unterstützte HTTP-Verben • GET – Einen oder mehrere Einträge abfragen • POST – Neuen Eintrag anlegen • PATCH – Einen Eintrag aktualisieren • DELETE – Eintrag löschen URI-Format https://<service_name>.azure-mobile.net/tables/<table_name>[/<item_id>]  Bei GET ggf. noch weitere Parameter wie where, skip, take, etc.  Das Datenformat ist JSON
  • 8. Zugriffsrechte pro Tabelle und Operation Die vier Operationen je Tabelle • INSERT (http POST) • UPDATE (http PATCH) • DELETE (http DELETE) • READ (http GET) Mögliche Berechtigungen je Operation • Everyone • Anybody with the Application Key • Only Authenticated Users • Only Scripts and Admins
  • 10. Default einer neuen Tabelle Automatische ID-Spalte mit Index drauf
  • 11. DEMO  Anlegen einer Tabelle  REST API mit Hilfe von POSTMAN ausprobieren  Dynamisches Schema  Zugriffskontrolle
  • 12. Zugriffsschlüssel Application Key  Nur für Entwicklung und Tests verwenden  Nicht in fertige App einbauen (besser Benutzerauthentifizierung verwenden) Master Key  Administration, Backup, Installation  Server zu Server Kommunikation  Auf gar keinen Fall rausgeben  Kann Scripts abschalten
  • 13. Serverseitiges Scripting Ein Script pro Operation (insert, update, delete, read) und pro Tabelle  Basierend auf node.js  Zurzeit JavaScript, weil universell verwendbar (C# ist aber ganz oben auf der Wunschliste) node.js basiert auf Googles JavaScript Technologie und läuft jetzt auf Microsoft Azure Servern
  • 14. Serverseitiges Scripting Standard-Script am Beispiel der Insert-Operation item: das einzufügende Item user: der angemeldete Benutzer request: das Requestobject dieser Operation Default Implementierung
  • 15. Serverseitiges Scripting Veränderung des einzufügenden Items Vor dem Insert Spalte füllen.
  • 16. Serverseitiges Scripting Ändern des Ergebnisses nach execute JavaScript ist hier besser geeignet als C# Nach dem Lesen Element hinzufügen bzw. löschen
  • 18. Serverseitiges Scripting Ergebnisse vollständig selbst berechnen Eigener HTTP Statuscode und eigenes Ergebnis
  • 19. Stets vorhandene JavaScript Objekte Table Operationen auf Tabellen tables Operationen auf Tabellen mssql Datenbankzugriff über Transact-SQL User Aktueller User console Logging statusCodes HTTP Status Codes
  • 20. Weitere Module über require("…") apns Apple Push Notification Service azure Windows Azure SDK request Externer REST Service mpns Windows Phone 8 Push Notification Service sendgrid E-Mail Service wns Windows Store Notification Service
  • 21. Anprogrammieren der Mobile Services  Portal generiert Beispiel-Apps • Windows / WinRT • Windows Phone 8 • iOS, Androis, HTML • Beliebige via REST API Prerequisites • Visual Studio 2012 • Windows Phone SDK 8.0 • Live SDK for Windows and Windows Phone (optional) • Ggf. weitere Tools für iOS oder Android • Windows Azure Account oder 90 Tage “Free Trial”
  • 22. Quick Start im Azure Portal
  • 23. Beispielprojekt „Event Buddy“ Anlegen von Events, Sessions und deren Bewertung Entities Event Rating Channel Session
  • 24. Initialisierung des Mobile Service Clients sealed class App : Application { // Create Mobil Service Client singleton in App class. public static MobileServiceClient MobileService = new MobileServiceClient( "https://eventbuddy-stla.azure-mobile.net/", "YGClaqlKzjZrf3iUIQLyLzCwBzUJyg57"); … } Grundprinzip: „Keep it simple“ Application Key
  • 25. public class MyData { [JsonProperty(PropertyName = "id")] public int Id { get; set; } [JsonProperty(PropertyName = "name")] public string Name { get; set; } [JsonProperty(PropertyName = "start")] public DateTime Start { get; set; } [JsonProperty(PropertyName = "end")] public DateTime End { get; set; } [JsonProperty(PropertyName = "description")] public string Description { get; set; } } Beispielhafte Datamodel Klasse PropertyName weil JSON camelCasing verwendet
  • 26. REST Operationen in Code Einfügen neues Element (http POST) await App.MobileService.GetTable<MyData>().InsertAsync(item); Aktualisieren eines Elements (http PATCH) await App.MobileService.GetTable<MyData>().UpdateAsync(item); Löschen eines Elements (http DELETE) await App.MobileService.GetTable<MyData>().DeleteAsync(item); Lesen von Elementen (http GET) in Kombination mit Where, Skip, Take, etc. await App.MobileService.GetTable<MyData>().ReadAsync(…);
  • 27. DEMO  Anlegen eines neuen Events in Event Buddy App
  • 28. private async Task SaveEvent(Event item) { // Save a new event. await App.MobileService.GetTable<Event>().InsertAsync(item); Events.Add(item); } Speichern eines neuen Events Nach dem Aufruf hat item eine gültige Id erhalten.
  • 29. private async Task LoadEvents() { // Query for all existing events. Events = await App.MobileService.GetTable<Event>().ToEnumerableAsync(); } public dynamic Events { get { return _events; } set { _events.Clear(); foreach (var item in value) _events.Add(item); } } readonly ObservableCollection<Event> _events = new ObservableCollection<Event>(); Laden der Events
  • 30. Benutzer-Authentifizierung Azure Mobile Services hat vier fertige Identity-Provider • Microsoft Account (Live ID) • Facebook Login • Twitter Login • Google Login • (weitere in Vorbereitung…)
  • 31. Vorteile der fertigen Provider  Keine eigene Benutzerverwaltung  Sicherheit für den Anwender, denn App kennt die Credentials nicht  Man kann sich auf seine eigentliche Anwendung konzentrieren  Eigener Identity Provider ist ein Projekt für sich und zudem noch ein ziemlich anspruchsvolles
  • 32. Vorbereitung des Logins via Twitter Twitter die eigene Anwendung bekannt machen • https://dev.twitter.com/apps
  • 33. Anlegen einer neuen Application Der Mobile Service wird bei Twitter registriert (nicht die eigentliche App)
  • 34. Twitter generiert die OAuth Settings
  • 35. Eintragen in den Mobile Service
  • 36. public async Task LoginTwitter() { var user = App.MobileService.CurrentUser; while (user == null) { string message; try { user = await App.MobileService.LoginAsync( MobileServiceAuthenticationProvider.Twitter); message = string.Format("You are now logged in as '{0}'", user.UserId); } catch (InvalidOperationException) { message = "You must log in. Login Required"; } var dialog = new MessageDialog(message); dialog.Commands.Add(new UICommand("OK")); await dialog.ShowAsync(); } } Login
  • 39. Push Notification  Via Script werden Notifications an registrierte Geräte geschickt (Demo mit Windows Phone)
  • 40. Scheduler Jobs Periodischen Ausführen eines Scripts • Bereinigen der Datenbank • Archivierung alter Datensätze • Verarbeiten von Datensätzen, z.B. Bilder skalieren • Verschicken von Nachrichten
  • 41. Anlegen eines neuen Jobs Maximal 1 Job bei einem kostenlosem Mobile Service möglich
  • 42. Beispiel Job Löschen doppelter Channel-Einträge
  • 43. Azure Console  Anlegen und Konfigurieren von Mobile Services per PowerShell Commandline  Beispielsweise Backup der Scripts aller Tabellen  Verwalten von Dev/Staging/Prod Services
  • 45. Beispiel Szenario 1 Daten synchronisieren zwischen Geräten Mobile Service Phone 8 Windows iPhone Android Browser DB Web-Service
  • 46. Beispiel Szenario 2 (ohne WAMS) Eine Anwendung mit vielen Datenquellen Wenn API sich irgendwo ändert, crasht die Anwendung Anwendung SharePoint Facebook XML-Feed etc.
  • 47. Beispiel Szenario 2 (mit WAMS) Datenintegration über „Single API“ mit Mobile Services SharePoint Anwendung Facebook XML-Feed etc. Mobile Service
  • 48. Azure Mobile Services Wieso eigentlich Mobile Services?
  • 49. Was ich zurzeit gerade damit mache…  Überwachung der Kondensatpumpe (Heizung) und der Alarmanlage  Sensorenabfrage mit Arduino-Bord über USB an einen Windows-Service in einem PC • Info aufs Handy wenn Pumpe ausfällt • Status der Alarmanlage abfragen Alarmanlage • scharf • Alarm • Sabotage Pumpe • an/aus Windows Dienst Mobile Service
  • 50. Fazit  Alles was man für sein App Backend braucht  Einstieg einfach und kostenlos  Fertige Bausteine „out of the box“  Keine „externen“ Hürden mehr bei der App-Entwicklung  Focus auf die Apps, nicht auf die Infrastruktur  Auch über Mobile Szenarien hinaus praktisch Super coole Sache – unbedingt ausprobieren
  • 51. Mehr Info zu Mobile Services  Josh Twist http://www.thejoyofcode.com/  Carlos Figueira http://blogs.msdn.com/b/carlosfigueira/  Nick Harris http://www.nickharris.net/
  • 52. Das war’s Vielen Dank für Eure Aufmerksamkeit Fragen? Stefan.Lange@empira.de