Your SlideShare is downloading. ×
dotnet Cologne 2013 - Windows Azure Mobile Services
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

dotnet Cologne 2013 - Windows Azure Mobile Services

1,668
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,668
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Stefan Langeempira Software GmbHStefan.Lange@empira.deEinführung in dieWindows Azure Mobil Services03.05.2013
  • 2. Agenda Warum Azure Mobile Services? Überblick Features Beispielanwendung Einsatzszenarien FazitFragen / 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• SkalierbarAlles 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 ServicesPrerequisites• Windows Azure Account, z. B. den 90-Tage “Free Trial” oderein passendes MSDN AboNutzung derPreview-Versionmuss manfreischalten
  • 6. Sicht auf die DatenClient-Seite Jeder Zugriff geht auf genau eine Tabellen Keine Joins möglich Vorteil: Man kann nicht so leicht was falsch machenServer-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 zuempfehlen
  • 7. Das REST API der Azure Mobile ServicesREST API auf Tabellen einer SQL Server DatenbankUnterstützte HTTP-Verben• GET – Einen oder mehrere Einträge abfragen• POST – Neuen Eintrag anlegen• PATCH – Einen Eintrag aktualisieren• DELETE – Eintrag löschenURI-Formathttps://<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 OperationDie 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
  • 9. Anlegen einer Tabelle im Portal
  • 10. Default einer neuen TabelleAutomatische ID-Spalte mit Index drauf
  • 11. DEMO Anlegen einer Tabelle REST API mit Hilfe von POSTMAN ausprobieren Dynamisches Schema Zugriffskontrolle
  • 12. ZugriffsschlüsselApplication 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 ScriptingEin Script pro Operation (insert, update, delete, read) undpro 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 undläuft jetzt auf Microsoft Azure Servern
  • 14. Serverseitiges ScriptingStandard-Script am Beispiel der Insert-Operationitem: das einzufügende Itemuser: der angemeldete Benutzerrequest: das Requestobject dieser OperationDefaultImplementierung
  • 15. Serverseitiges ScriptingVeränderung des einzufügenden ItemsVor dem InsertSpalte füllen.
  • 16. Serverseitiges ScriptingÄndern des Ergebnisses nach executeJavaScript ist hier besser geeignet als C#Nach dem LesenElementhinzufügen bzw.löschen
  • 17. Serverseitiges ScriptingLoggingLog viaconsole Objekt
  • 18. Serverseitiges ScriptingErgebnisse vollständig selbst berechnenEigener HTTPStatuscode undeigenes Ergebnis
  • 19. Stets vorhandene JavaScript ObjekteTableOperationen aufTabellentablesOperationen aufTabellenmssqlDatenbankzugriffüber Transact-SQLUserAktueller UserconsoleLoggingstatusCodesHTTP Status Codes
  • 20. Weitere Module über require("…")apnsApple PushNotification ServiceazureWindows AzureSDKrequestExterner RESTServicempnsWindows Phone 8Push NotificationServicesendgridE-Mail ServicewnsWindows StoreNotification Service
  • 21. Anprogrammieren der Mobile Services Portal generiert Beispiel-Apps• Windows / WinRT• Windows Phone 8• iOS, Androis, HTML• Beliebige via REST APIPrerequisites• 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 BewertungEntitiesEventRatingChannelSession
  • 24. Initialisierung des Mobile Service Clientssealed 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 KlassePropertyName weilJSON camelCasingverwendet
  • 26. REST Operationen in CodeEinfü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 EventsNach dem Aufruf hatitem eine gültige Iderhalten.
  • 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-AuthentifizierungAzure 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 dieCredentials nicht Man kann sich auf seine eigentliche Anwendungkonzentrieren Eigener Identity Provider ist ein Projekt für sich undzudem noch ein ziemlich anspruchsvolles
  • 32. Vorbereitung des Logins via TwitterTwitter die eigene Anwendung bekannt machen• https://dev.twitter.com/apps
  • 33. Anlegen einer neuen ApplicationDer 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
  • 37. DEMO Mit Twitter-Konto anmelden
  • 38. Twitter Bild-URL speichern
  • 39. Push Notification Via Script werden Notifications an registrierte Gerätegeschickt(Demo mit Windows Phone)
  • 40. Scheduler JobsPeriodischen 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 JobsMaximal 1 Job bei einem kostenlosem Mobile Servicemöglich
  • 42. Beispiel JobLöschen doppelter Channel-Einträge
  • 43. Azure Console Anlegen und Konfigurieren von Mobile Services perPowerShell Commandline Beispielsweise Backup der Scripts aller Tabellen Verwalten von Dev/Staging/Prod Services
  • 44. Skalierbarkeit des Services
  • 45. Beispiel Szenario 1Daten synchronisieren zwischen GerätenMobileServicePhone 8WindowsiPhoneAndroidBrowserDBWeb-Service
  • 46. Beispiel Szenario 2 (ohne WAMS)Eine Anwendung mit vielen DatenquellenWenn API sich irgendwo ändert, crasht die AnwendungAnwendungSharePointFacebookXML-Feedetc.
  • 47. Beispiel Szenario 2 (mit WAMS)Datenintegration über „Single API“ mit Mobile ServicesSharePointAnwendungFacebookXML-Feedetc.MobileService
  • 48. Azure Mobile ServicesWieso eigentlich Mobile Services?
  • 49. Was ich zurzeit gerade damit mache… Überwachung der Kondensatpumpe (Heizung) und derAlarmanlage Sensorenabfrage mit Arduino-Bord über USB an einenWindows-Service in einem PC• Info aufs Handy wenn Pumpe ausfällt• Status der Alarmanlage abfragenAlarmanlage• scharf• Alarm• SabotagePumpe• an/ausWindowsDienstMobileService
  • 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 praktischSuper coole Sache – unbedingt ausprobieren
  • 51. Mehr Info zu Mobile Services Josh Twisthttp://www.thejoyofcode.com/ Carlos Figueirahttp://blogs.msdn.com/b/carlosfigueira/ Nick Harrishttp://www.nickharris.net/
  • 52. Das war’sVielen Dank für Eure AufmerksamkeitFragen?Stefan.Lange@empira.de