Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
1
Web APIs mit ASP.NET MVC Core 1
(vormals MVC 6)
Manfred Steyer
ManfredSteyer
Über mich …
 Manfred Steyer
 SOFTWAREarch...
2
Ziel
Überblick über die Möglichkeiten für Web APIs
mit ASP.NET MVC Core 1
Folie 3
Didaktik
Folien
Beispiele
Folie 9
3
Inhalt
Warum ASP.NET Core 1?
Bootstrapping
Routing
Konfigurieren
Metadaten via Swagger
Folie 11
.NET Core
Folie 2...
4
Vorteile
Folie 25
Cross-
Plattform
Side-by-
Side
Self-Hosting
F5-Compile-
to-Memory
Hosting
Kestrel (X-Plattform, Self...
5
Mehrgleisigkeiten
Web API MVC Web Pages
ASP.NET MVC Core 1
Vereinheitlichung von MVC, Web API
und (künftig) Web Pages
...
6
Migration
Code muss angepasst werden
Aber: Aktuelle Framework-Versionen werden
weiterhin gewartet
Keine Pläne für Mig...
7
Middleware-Komponenten
Folie 35
Server
Web-Framework
Web-Application
Middleware1
Middleware2
Middleware…
Middlewaren
Re...
8
Umgebung berücksichtigen
Folie 37
public void Configure(IApplicationBuilder app,
IHostingEnvironment env)
{
[…]
if (env...
9
DEMO
Page  40
WEB APIS MIT MVC CORE 1
Page  50
10
Web APIs in MVC Core 1
Kein eigenes Routing für Web APIs
Selbes Konzept, wie für MVC
Keine Konventionen für HTTP Ver...
11
Web API mit Attribut-basierten Routen
Folie 53
[Route("api/[controller]")]
public class FlightController: Controller
{...
12
Web API mit Attribut-basierten Routen
Folie 55
[Route("api/[controller]")]
public class FlightController: Controller
{...
13
MVC und Formatter konfigurieren
Folie 57
public class Startup
{
public void ConfigureServices(IServiceCollection servi...
14
DEMO
Page  59
META-DATEN MIT SWAGGER
Page  60
15
Swagger
JSON-basiertes Metadatenformat für Web APIs
Weit verbreitet
Kein offizieller Standard
Folie 61
Swagger
Foli...
16
SWASHBUCKLE
Page  63
Swashbuckle
 Swagger-Implementierung für
ASP.NET MVC Core 1
 Installation via NuGet
 Startup.C...
17
DEMO
Page  65
SECURITY
Page  66
18
Authentifizierung via Benutzer/Passwort
HTTP-BASIC via IIS oder HttpListener
Eigene HTTP-Middleware
Folie 67
Authent...
19
OAuth2: Prinzipieller Ablauf
Folie 69
Client
Authorization-Server
Resource-Server
3. Token
Details legt Flow fest Ein ...
20
Zusammenfassung
Folie 82
X-Plattform Routing Formatter
Swashbuckle Self-Hosting Vereinheitlichung
Middleware
manfred.s...
Upcoming SlideShare
Loading in …5
×

Web APIs mit ASP.NET Core 1

580 views

Published on

Präsentation von DWX, Nürnberg, Juni 2016

Published in: Internet
  • Be the first to comment

  • Be the first to like this

Web APIs mit ASP.NET Core 1

  1. 1. 1 Web APIs mit ASP.NET MVC Core 1 (vormals MVC 6) Manfred Steyer ManfredSteyer Über mich …  Manfred Steyer  SOFTWAREarchitekt.at  Trainer & Consultant  Angular  Server-Side .NET Page  2
  2. 2. 2 Ziel Überblick über die Möglichkeiten für Web APIs mit ASP.NET MVC Core 1 Folie 3 Didaktik Folien Beispiele Folie 9
  3. 3. 3 Inhalt Warum ASP.NET Core 1? Bootstrapping Routing Konfigurieren Metadaten via Swagger Folie 11 .NET Core Folie 24 [http://www.hanselman.com/]
  4. 4. 4 Vorteile Folie 25 Cross- Plattform Side-by- Side Self-Hosting F5-Compile- to-Memory Hosting Kestrel (X-Plattform, Self-Host) WebListener (Windows, Self-Host) IIS  Kestrel Nginx  Kestrel Folie 26
  5. 5. 5 Mehrgleisigkeiten Web API MVC Web Pages ASP.NET MVC Core 1 Vereinheitlichung von MVC, Web API und (künftig) Web Pages Einheitliche Konzepte für Controller, Views, Dependency-Injection, Routing, Filters etc.
  6. 6. 6 Migration Code muss angepasst werden Aber: Aktuelle Framework-Versionen werden weiterhin gewartet Keine Pläne für Migration von WCF und Web Forms WCF Web Forms Web API 2MVC 5 .NET 4.x / "Full CLR" ASP.NET CORE 1: BOOTSTRAPPING Page  34
  7. 7. 7 Middleware-Komponenten Folie 35 Server Web-Framework Web-Application Middleware1 Middleware2 Middleware… Middlewaren Request Response Host-Process HTTP Pipeline konfigurieren Folie 36 public class Startup { […] public void Configure(IApplicationBuilder app) { […] app.UseStaticFiles(); app.UseMvc(); […] } }
  8. 8. 8 Umgebung berücksichtigen Folie 37 public void Configure(IApplicationBuilder app, IHostingEnvironment env) { […] if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); } […] } Services konfigurieren Folie 38 public class Startup { public void ConfigureServices(IServiceCollection services) { […] services.AddMvc() […] } […] }
  9. 9. 9 DEMO Page  40 WEB APIS MIT MVC CORE 1 Page  50
  10. 10. 10 Web APIs in MVC Core 1 Kein eigenes Routing für Web APIs Selbes Konzept, wie für MVC Keine Konventionen für HTTP Verb, wie GetAll()  GET, PostData()  POST Routing berücksichtigt keine URL-Parameter. URL muss eindeutig auf Action-Methode abbildbar sein! Aber: WebApiCompatShim Folie 51 Web API mit Attribut-basierten Routen Folie 52 [Route("api/[controller]")] public class FlightController: Controller { [HttpGet("{id}")] public Flight GetById(int id) { […] } [HttpGet("byRoute")] public List<Flight> GetByRoute(string from, string to) { […] } [HttpPost] public void PostFlight([FromBody] Flight flight) { […] } }
  11. 11. 11 Web API mit Attribut-basierten Routen Folie 53 [Route("api/[controller]")] public class FlightController: Controller { // GET api/flight/{id} [HttpGet("{id}")] public Flight GetById(int id) { […] } [HttpGet("byRoute")] public List<Flight> GetByRoute(string from, string to) { […] } [HttpPost] public void PostFlight([FromBody] Flight flight) { […] } } Web API mit Attribut-basierten Routen Folie 54 [Route("api/[controller]")] public class FlightController: Controller { // GET api/flight/{id} [HttpGet("{id}")] public Flight GetById(int id) { […] } // GET api/flight/byRoute?from=...&to=... [HttpGet("byRoute")] public List<Flight> GetByRoute(string from, string to) { […] } [HttpPost] public void PostFlight([FromBody] Flight flight) { […] } }
  12. 12. 12 Web API mit Attribut-basierten Routen Folie 55 [Route("api/[controller]")] public class FlightController: Controller { // GET api/flight/{id} [HttpGet("{id}")] public Flight GetById(int id) { […] } // GET api/flight/byRoute?from=...&to=... [HttpGet("byRoute")] public List<Flight> GetByRoute(string from, string to) { […] } // POST api/flight [HttpPost] public void PostFlight([FromBody] Flight flight) { […] } } DEMO Page  56
  13. 13. 13 MVC und Formatter konfigurieren Folie 57 public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddMvc() .AddJsonOptions(options => { […] }) .AddMvcOptions(options => { […] }); } […] } XML-Formatter Package: Microsoft.AspNetCore.Mvc.Formatters.Xml  XmlDataContractSerializerInputFormatter  XmlDataContractSerializerOutputFormatter Folie 58
  14. 14. 14 DEMO Page  59 META-DATEN MIT SWAGGER Page  60
  15. 15. 15 Swagger JSON-basiertes Metadatenformat für Web APIs Weit verbreitet Kein offizieller Standard Folie 61 Swagger Folie 62 JSON-Schema für Datentypen Operationen (Verb, Url, Datentypen für Anfrage und Antworten)
  16. 16. 16 SWASHBUCKLE Page  63 Swashbuckle  Swagger-Implementierung für ASP.NET MVC Core 1  Installation via NuGet  Startup.ConfigureServices:  services.AddSwaggerGen();  Startup.Configure  app.UseSwaggerGen(); -- Swagger-Dokument via /swagger  app.UseSwaggerUi(); -- Swaager-UI via /swagger/ui Folie 64
  17. 17. 17 DEMO Page  65 SECURITY Page  66
  18. 18. 18 Authentifizierung via Benutzer/Passwort HTTP-BASIC via IIS oder HttpListener Eigene HTTP-Middleware Folie 67 Authentication via Tokens JwtBearerAuthentication-Middleware Prüft JWT-Tokens Übernimmt Claims des JWT-Token in User-Objekt Folie 68
  19. 19. 19 OAuth2: Prinzipieller Ablauf Folie 69 Client Authorization-Server Resource-Server 3. Token Details legt Flow fest Ein zentrales Benutzerkonto Nur Auth-Svr. kennt Passwort Auth. von Client entkoppelt Flexibilität durch Token SPA: Kein Cookie: Kein CSRF DEMO Page  70
  20. 20. 20 Zusammenfassung Folie 82 X-Plattform Routing Formatter Swashbuckle Self-Hosting Vereinheitlichung Middleware manfred.steyer@SOFTWAREarchitekt.at SOFTWAREarchitekt.at ManfredSteyer Kontakt

×