Die Azure Mobile Services werden endlich erwachsen
Vor etwa einem Jahr hat Microsoft die Windows Azure Mobile Services eingeführt. Die Idee von einer Cloud-basierten Abstraktionsschicht auf unterschiedliche Dienst wie Authentisierung, Datenzugriff und Push-Notifikation ist hervorragend und hat zahlreiche Entwickler begeistert. Leider war bisher die Realisierung solcher Mobile Service Backends nur mittels JavaScript (Node.js) direkt im Portal möglich. Daher hielt sich die Begeisterung in der Entwicklergemeinde in Grenzen. Aus eigener Erfahrung kann ich sagen, dass ich mich beim Entwickeln von MobileServices mit JavaScipt, ohne zeitgemässe Test und Debugging-Möglichkeiten immer um etwa 15 Jahre in die Vergangenheit versetzt gefühlt habe: Code anpassen, Test ausführen, Log-Output auswerten, Code anpassen, …
Zurück in der Gegenwart: .NET statt JavaScript
Nun nach über einem Jahr ist es endlich soweit. Die Mobile Services können auch als .NET-Web-API Lösung realisiert werden und lassen sich so auch lokal im IIS Express oder im IIS testen. Endlich hat man als .NET-Entwickler wieder alle gewohnten Werkzeuge um qualitativ hochwertigen Code zu entwickeln.
Beispiel
Beim ersten Aufsetzen eines lokalen, .NET-basierten Mobile-Services gibt es noch ein paar kleine Stolpersteine, die hier beschrieben werden sollen:
1. Mobile Service mit .NET-Backend erstellen
Beim Erstellen eines Mobile-Services kann nun das Backed gewählt werden: JavaScipt oder nun neu .NET:
2. Mobile Service Code herunterladen
Das Beispielprojekt kann von der Startseite heruntergeladen werden:
Anschliessend hat man folgendes Projekt:
3. Firewall-Regeln setzen
Damit aus dem Mobile-Emulator auf den lokalen IIS oder IIS-Express zugegriffen werden kann, muss die entsprechende Konfiguration vorgenommen werden. Dies ist im Artikel How to connect to a local web service from the Windows Phone 8 emulator beschrieben. Wenn man nur auf dem lokalen Computer entwickelt und somit nicht von ausserhalb auf den lokalen Mobile Service zugreifen will, ist es am besten die IP 169.254.80.80 des virtuellen Interfaces des Phone Emulators zu verwenden, da dieses sich durch DHCP nicht verändert und auch ohne Netz zu verwende ist.
4. Application-Key setzen
Beim Zugriff aus dem Client auf das lokale Backend erhält man als erstes den HTTP-Statuscode 403 (Forbidden).
Dies kann gelöst werden, indem man den Application-Key im Web.config setzt. Ursprünglich steht:
Dies muss mit dem einem Application-Key ersetzt werden, der in den Mobile-Apps dann verwendet wird:
Im Client muss dann der entsprechende
public static MobileServiceClient MobileService = new MobileServiceClient( "http://169.254.80.80:51292", "ABCDEDFG1234567890" );
Damit sollte nun alles Problemlos laufen.
Fazit:
Mit der Einführung der .NET-basierten Backends für Mobile Services dürfte Microsoft nun endgültig alle Entwickler für ihre Mobile Backend-Lösung eingenommen haben. Die Entwicklung von Mobilen Backends wird damit viel effizienter, da durch Compile-Time-Checks, bessere Debugging Möglichkeiten, lokale Test und Unit-Testing die Entwicklung viel schneller von der Hand geht als die bisherige Node.js basierte Lösung. Ausserdem können damit auch einfach Hybride-Services Entwickelt werden, welche lokal und in der Cloud betrieben werden. Dank dieser Verbesserungen macht die Entwicklung von mobile Backends wieder richtig Spass.
Falls Sie Fragen haben, beraten wir Sie gerne. Sie erreichen uns über http://www.noser.com/de/kontakt.
Weitere Details zum Thema erfahren Sie auch auf der unserem Anlass Enable your Developers to go mobile with the Cloud am 10. April 2014 im Technorama in Winterthur.
Pingback: Noser Blog Gesamtlösung für Mobile-Apps mit Xamarin.Forms, Windows Azure Services und ASP.NET MVC - Noser Blog