Web APIs stehen für offene und einheitliche Schnittstellen im Internet und sind die Basis für ein standardisiertes Backend, dass cross-platform für verschiedenste Clients zur Verfügung stehen kann.
Wer REST-Schnittstellen braucht, kann unter Umständen bereits in den Azure Mobile Services alle Antworten finden. Wo aber liegen die Grenzen? Für welche Anforderungen kann man auf die Azure Mobile Services zurückgreifen und wann sollte der Weg über eine eigene Web API gehen? Welche Vorteile und welche Limitierungen bestehen?
In diesem Vortrag betrachten wir dazu die Entwicklung, das Deployment, den Betrieb, die Absicherung und Migrationsmöglichkeiten.
3. Remote Procedure Calls (RPC)
Verben/Aktionen im Endpunkt enthalten
GetCustomer
InsertInvoice
DeleteCustomer
Jeder Endpunkt entspricht einem eigenen URI
Wo kommen wir her?
4. REST is kein Standard, verwendet aber Standards
Architekturkonzept
Roy Fielding in 2000
“Architectural Styles and the Design of Network-based Software Architectures”
HTTP Stack, expliziter Gebrauch von HTTP
Methoden/Verben
Representational State Transfer (REST)
5. Statuslos (stateless)
URIs mit Verzeichnisstruktur
XML, JavaScript Object Notation (JSON) oder beides
Übertragung von Snapshots der Daten im Body
Keine Anweisungen oder Methoden im Body
Grundlegende Entwurfsprinzipien von REST
6. Anfrage (Request)
• Request Line
• Request Headers
• Request Body
Antwort (Response)
• Status Line
• Response Headers
• Response Body
Anatomie von HTTP-Nachrichten
7. Anfrage (Request)
GET http://localhost:21697/api/employees/12345 HTTP/1.1
User-Agent: Fiddler
Host: localhost:21697
Antwort (Response)
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Tue, 04 Nov 2014 15:48:03 GMT
Content-Length: 50
{"Id":12345,"FirstName":"John","LastName":"Human"}
Beispiel: GET
14. ASP.NET MVC Web API
• .NET-Sprachen wie C#, VB.NET, …
• MVC-Architektur
• I.d.R. Remote-Debuggen möglich
• Lokales Testen möglich
Azure Mobile Services
Mit JavaScript-Backend
• JavaScript und node.js
• Kein lokales Testen
• Kein Remote-Debuggen
Mit .NET-Backend
• ASP.NET MVC Web API
Siehe linke Seite
• Integrierte Features von AMS
Entwicklungsumgebung
15. ASP.NET MVC Web API
• I.d.R. IIS in vielfältiger Umgebung
Eigener Server
Hoster
Azure Websites
Azure Cloud Services
• Übertragung abhängig von
Umgebung
FTP
Web Deploy
Git, TFS
Azure Mobile Services
• Git
Mit JavaScript-Backend
• Manuelles Editieren im
Verwaltungsportal
Mit .NET-Backend
• Ausführung auf Azure Websites
Übertragung dadurch mit Web Deploy
oder FTP
Deployment
17. ASP.NET MVC Web API
• Datensenke erstellen, verbinden
und verwenden
Azure Mobile Services
• Azure SQL Database
• Offline-Synchronisation möglich
• Datenbankzugriff abstrahiert
Client- und serverseitig
Mit JavaScript-Backend
• Dynamisches Schema
Daten
20. Unterstützung für REST durch viele Bibliotheken
Alternativ: separate Unterstützung für HTTP, JSON und XML
Breite Tool-Unterstützung zum Testen
GET-Anfragen mit Browsern
Auswahl von HTTP-Methoden in Tools wie Fiddler oder Runscope
Entwicklerunterstützung
SDKs für Client-Entwicklung
Azure API Management
Integration von REST-Diensten
21. SDKs in Azure Mobile Services für Vielzahl an Plattformen
Windows Universal Apps
Android
iOS
HTML / JavaScript
Xamarin
PhoneGab
SDKs in Azure Mobile Services
22. Verbindung mit lokaler Infrastruktur
Connection String:
my-database:1433
Hybrid
Connection
Manager
Server: my-database:1433
Hybrid Connection
Endpoint
http://azure.microsoft.com/en-us/documentation/articles/mobile-services-dotnet-backend-hybrid-connections-get-started/
25. Konfiguration entspricht der Einrichtung von Web-Servern
Unabhängig von REST oder Web API
Konfiguration abhängig von der Installation
Hoster
VMs
Azure Website
Cloud Service
Azure Mobile Service
TLS / SSL
26.
27. ASP.NET MVC Web API
• Implementierung bei ASP.NET MVC
Web API benutzerdefiniert
Azure Mobile Services
Beinhaltet SSO-Provider
• Twitter
• Google
• Facebook
• Microsoft-Konto
• Azure Active Directory
Authentifikation
30. Auswahl des Frameworks und der Plattform
Web API
On-Prem
Web API auf
Azure
Azure Mobile Services
HTTP Stack Web API Web API Web API
Data Stack EF,
nach Belieben
EF, Azure Tables,
nach Belieben
EF, Azure Tables etc.
Automatische SQL-Provisionierung
Hosting BYO PaaS PaaS + seamless framework updates and
bugfixes
Device SDK BYO BYO Windows, iOS, Android, HTML, Xamarin,
PhoneGab
Auth/Offline NuGet NuGet Integriert für Social SSOs und AAD
Offline basiert auf SQLite
Push NuGet Notification Hubs Integriert mit Notification Hubs mit eingebauter
Authentifizierung und Analytics
ASP.NET MVC Web API
Azure Mobile Services
CRUD Post, Put, Delete, Patch
While REST is not a standard, it does use standards:
HTTP
URL
XML/HTML/GIF/JPEG/etc (Resource Representations)
text/xml, text/html, image/gif, image/jpeg, etc (MIME Types)
Wie funktioniert es? Wie programmiert man es?
Wie sieht es aus Client-Sicht aus? Code
Mit VS eine Web API in C# bauen.
Die Web API lokal ansprechen. (Mit Fiddler.)
Was sind die AMS? Was können sie?
Backend JS und .NET: Unterschiede Code und Portal
Daten-Backend: Azure SQL Database
Azure Mobile Service in Azure mit JS-Backend erstellen
Azure Mobile Service in Azure mit .NET-Backend erstellen
Das .NET-Backend ist WebAPI. Daher in Folge nur noch Vergleich zum JS-Backend.
Custom API über Fiddler aufrufen.
Daten speichern im ASP.NET MVC Web API Projekt
Daten speichern im Azure Mobile Service (JS / .NET)
Using the REST Services with .NET
http://msdn.microsoft.com/en-us/library/jj819168.aspx
Java 7 - Mehr als eine Insel - RESTful Web-Services
http://openbook.galileocomputing.de/java7/1507_13_002.html
Runscope: www.runscope.com
Beispiel aus den Azure Mobile Services des Schnellstarts für Windows.
Beispiel aus den Azure Mobile Services des Schnellstarts für Android.
Quick Start in Azure Mobile Services, Universal App (und Android)
Hybrid Connection