Web APIs auf dem Prüfstand · ASP.NET MVC Web API •.NET-Sprachen wie C#, VB.NET, … •...

31
Web APIs auf dem Prüfstand Volle Kontrolle oder fertig mit den Azure Mobile Services?

Transcript of Web APIs auf dem Prüfstand · ASP.NET MVC Web API •.NET-Sprachen wie C#, VB.NET, … •...

Page 1: Web APIs auf dem Prüfstand · 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

Web APIs auf dem PrüfstandVolle Kontrolle oder fertig mit den Azure Mobile Services?

Page 2: Web APIs auf dem Prüfstand · 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

Web APIs

Page 3: Web APIs auf dem Prüfstand · 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

Remote Procedure Calls (RPC)

Verben/Aktionen im Endpunkt enthaltenGetCustomer

InsertInvoice

DeleteCustomer

Jeder Endpunkt entspricht einem eigenen URI

Wo kommen wir her?

Page 4: Web APIs auf dem Prüfstand · 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

REST is kein Standard, verwendet aber StandardsArchitekturkonzept

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)

Page 5: Web APIs auf dem Prüfstand · 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

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

Page 6: Web APIs auf dem Prüfstand · 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

Anfrage (Request)• Request Line

• Request Headers

• Request Body

Antwort (Response)• Status Line

• Response Headers

• Response Body

Anatomie von HTTP-Nachrichten

Page 7: Web APIs auf dem Prüfstand · 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

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

Page 8: Web APIs auf dem Prüfstand · 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

Anfrage (Request)PATCH http://localhost:21697/api/employees/12345 HTTP/1.1

Content-Type: application/json

Host: localhost:21697

Content-Length: 23

{"LastName":"Kirchner"}

Antwort (Response)HTTP/1.1 204 No Content

Date: Tue, 04 Nov 2014 16:36:35 GMT

Beispiel: PATCH

Page 9: Web APIs auf dem Prüfstand · 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

Create, Read, Update und Delete-Operationen (CRUD)

bilden auf HTTP-Methoden ab.Erstellen (Create) POST

Lesen (Read) GET

Ändern (Update) PUT / PATCH

Löschen (Delete) DELETE

Generelles Entwurfsprinzip: Nomen statt Verben verwenden

HTTP-Methoden

Page 10: Web APIs auf dem Prüfstand · 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

ASP.NET MVC Modell

Controller ApiController

ASP.NET Web API

Page 11: Web APIs auf dem Prüfstand · 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
Page 12: Web APIs auf dem Prüfstand · 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

Microsoft Azure

Mobile Services

Page 13: Web APIs auf dem Prüfstand · 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
Page 14: Web APIs auf dem Prüfstand · 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

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

Page 15: Web APIs auf dem Prüfstand · 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

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 Deployoder FTP

Deployment

Page 16: Web APIs auf dem Prüfstand · 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

Daten speichern

Page 17: Web APIs auf dem Prüfstand · 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

ASP.NET MVC Web API

• Datensenke erstellen, verbinden und verwenden

Azure Mobile Services• Azure SQL Database

• Offline-Synchronisation möglich

• Datenbankzugriff abstrahiertClient- und serverseitig

Mit JavaScript-Backend• Dynamisches Schema

Daten

Page 18: Web APIs auf dem Prüfstand · 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
Page 19: Web APIs auf dem Prüfstand · 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

Integration

Page 20: Web APIs auf dem Prüfstand · 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

Unterstützung für REST durch viele BibliothekenAlternativ: separate Unterstützung für HTTP, JSON und XML

Breite Tool-Unterstützung zum TestenGET-Anfragen mit Browsern

Auswahl von HTTP-Methoden in Tools wie Fiddler oder Runscope

EntwicklerunterstützungSDKs für Client-Entwicklung

Azure API Management

Integration von REST-Diensten

Page 21: Web APIs auf dem Prüfstand · 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

SDKs in Azure Mobile Services für Vielzahl an PlattformenWindows Universal Apps

Android

iOS

HTML / JavaScript

Xamarin

PhoneGab

SDKs in Azure Mobile Services

Page 22: Web APIs auf dem Prüfstand · 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

Verbindung mit lokaler Infrastruktur

Connection String:

my-database:1433

Hybrid Connection

Manager

Server: my-database:1433Hybrid Connection

Endpoint

http://azure.microsoft.com/en-us/documentation/articles/mobile-services-dotnet-backend-hybrid-connections-get-started/

Page 23: Web APIs auf dem Prüfstand · 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
Page 24: Web APIs auf dem Prüfstand · 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

Absicherung

Page 25: Web APIs auf dem Prüfstand · 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

Konfiguration entspricht der Einrichtung von Web-ServernUnabhängig von REST oder Web API

Konfiguration abhängig von der InstallationHoster

VMs

Azure Website

Cloud Service

Azure Mobile Service

TLS / SSL

Page 26: Web APIs auf dem Prüfstand · 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
Page 27: Web APIs auf dem Prüfstand · 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

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

Page 28: Web APIs auf dem Prüfstand · 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
Page 29: Web APIs auf dem Prüfstand · 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

Resumé

Page 30: Web APIs auf dem Prüfstand · 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

Auswahl des Frameworks und der Plattform

Web API

On-Prem

Web API auf

AzureAzure 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

Page 31: Web APIs auf dem Prüfstand · 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

© 2014 Microsoft Corporation. All rights reserved. Because

Microsoft must respond to changing market conditions, it should

not be interpreted to be a commitment on the part of Microsoft,

and Microsoft cannot guarantee the accuracy of any information

provided after the date of this presentation. MICROSOFT MAKES

NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE

INFORMATION IN THIS PRESENTATION.

Vielen DankPeter.Kirchner

@Microsoft.com

blogs.msdn.com/

pkirchner

Twitter:

@peterkirchner