Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

.NET Summit 2016 in München: ASP.NET Core 1

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
1
ASP.NET Core 1 (vormals ASP.NET 5):
Was ist neu? Was ist anders?
Manfred Steyer
ManfredSteyer
Über mich …
 Manfred Stey...
2
Ziel
Ideen und ausgewählte Konzepte hinter
ASP.NET Core 1 anhand einer Demo-
Anwendung vermitteln
Folie 3
Inhalt
Moti...
3
Didaktik
Folien
Live-Coding
Folie 10
ASP.NET HEUTE UND MORGEN
Page  11
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 26 Anzeige
Anzeige

Weitere Verwandte Inhalte

Ähnlich wie .NET Summit 2016 in München: ASP.NET Core 1 (20)

Anzeige

Aktuellste (20)

Anzeige

.NET Summit 2016 in München: ASP.NET Core 1

  1. 1. 1 ASP.NET Core 1 (vormals ASP.NET 5): Was ist neu? Was ist anders? Manfred Steyer ManfredSteyer Über mich …  Manfred Steyer  SOFTWAREarchitekt.at  Trainer & Berater  Angular am Client  .NET am Server Page  2
  2. 2. 2 Ziel Ideen und ausgewählte Konzepte hinter ASP.NET Core 1 anhand einer Demo- Anwendung vermitteln Folie 3 Inhalt Motivation: ASP.NET heute und morgen DEMO: Web App mit ASP.NET MVC Core 1 DEMO: Web API mit ASP.NET MVC Core 1 Folie 9
  3. 3. 3 Didaktik Folien Live-Coding Folie 10 ASP.NET HEUTE UND MORGEN Page  11
  4. 4. 4 Trends HTTP-Services, Web APIs, REST GET /flights/Graz-Frankfurt?date=2014-12-24 HTTP/1.1 Host: myserver Accept: application/xml HTTP/1.1 200 OK Content-Type: text/json [ {"Time": "1700", "FlightNumer":"LH4711", ...}, {"Time": "1800", "FlightNumer":"LH4712", ...}, … ]
  5. 5. 5 ASP.NET HEUTE Page  15 Status quo MVC Web API SignalR Web Pages
  6. 6. 6 Stärken von ASP.NET Vielfältige Optionen Großes "Out-of-the-Box"-Framework Etablierte typsichere Sprachen Gute Werkzeuge Stärken der Konkurrenz Leichtgewichtigkeit Debuggen Minimaler Server Side-by-Side Plattformunabhängigkeit Asynchronität
  7. 7. 7 Was hindert uns daran, die Vorteile der Konkurrenz in ASP.NET zu übernehmen? Folie 19 Gründe Kopplung an IIS • Plattformunabhängigkeit • Leichtgewichtigkeit Architektur • Debuggen • Side-by-Side Folie 20 Komplexität • Plattformunabhängigkeit
  8. 8. 8 Warum Kopplung an IIS ? Folie 21 ASP.NET Frameworks System.Web IIS ASP.NET CORE 1 Page  22
  9. 9. 9 .NET Core Folie 24 Plattformunabhängigkeit  Neu-Implementierung ohne System.Web  Neues Projektsystem  Self-Hosting  Open Source Leichtgewichtigkeit  Modular (NuGet)  Side-by-Side  Weniger Platzbedarf  Projekt == NuGet-Paket  Compile-to-RAM Folie 25 Eigenschaften
  10. 10. 10 System.Web Features von System.Web müssen neu implementiert werden Sessions, Caching, Konfiguration, Routing Konsequenz: Breaking-Changes Folie 26 Mehrgleisigkeiten heute Web API MVC Web Pages
  11. 11. 11 ASP.NET MVC Core 1 Vereinheitlichung von MVC, Web API und Web Pages Keine Unterscheidung zwischen (MVC-)Controller und ApiController Einheitliche Konzepte für Dependency-Injection, Routing, Filter etc. Migration Code muss abgeändert werden Bestehende Framework-Versionen existieren nach wie vor, werden jedoch nicht auf Core CLR migriert Das selbe gilt für WCF und Web Forms WCF Web Forms Web API 2MVC 5 "Klassisches" .NET Framework / "Full CLR"
  12. 12. 12 ASP.NET CORE 1: BOOTSTRAPPING Page  30 Middleware-Komponenten Folie 31 Server Web-Framework Web-Application Middleware1 Middleware2 Middleware… Middlewaren Anfrage Antwort Host-Prozess HTTP
  13. 13. 13 Konfiguration der Pipeline Folie 32 public class Startup { public void ConfigureServices(IServiceCollection services) { […] services.AddMvc() […] } public void Configure(IApplicationBuilder app) { […] app.UseIISPlatformHandler(); app.UseStaticFiles(); app.UseMvc(); […] } } Konfiguration Abhängig von der Umgebung Folie 33 public void Configure(IApplicationBuilder app, IHostingEnvironment env) { […] if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); } […] }
  14. 14. 14 Hosting Kestrel (X-Plattform, Self-Host) WebListener (Windows, Self-Host) IIS  Kestrel Nginx  Kestrel Folie 34 DEMO Page  35
  15. 15. 15 LAYOUT-SEITEN Page  36 Layout-Seiten Folie 37 <html> <head> <title>@ViewBag.Title</title> </head> <body> <div id="main"> <div>@RenderSection("links", required:true)</div> <div>@RenderBody()</div> </div> </body> </html>
  16. 16. 16 Standard-Layout Für gewöhnlich:  Views/Shared/_Layout.cshtml Definiert in Views/_ViewStart.cshtml:  Layout = "_Layout"; Folie 38 DEMO Page  39
  17. 17. 17 TAG-HELPER Page  40 @model IEnumerable<MvcApplication.Models.Flug> […] @foreach (var item in Model) { <tr> <td> @item.Von </td> <td> @item.Nach </td> <td> <a asp-controller="Home" asp-action="Edit" asp-route-id="1" class="navbar-brand">Edit</a> </td> </tr> } Beispiel für View
  18. 18. 18 Nutzung von TagHelper  Pakete  Microsoft.AspNet.Mvc.TagHelpers  Microsoft.AspNet.Tooling.Razor  Views/_ViewImports.cshtml  @addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers" Folie 42 DEMO Page  43
  19. 19. 19 WEB APIS MIT MVC CORE 1 Page  44 Web APIs in MVC Core 1 Kein eigenes Routing für Web APIs Selbe Konzept, wie für MVC-Anwendungen Routing berücksichtigt keine URL-Parameter zur Wahl der Methode Folie 45
  20. 20. 20 Web API mit Attribut-basierten Routen Folie 46 [Route("api/[controller]")] public class FlugController: Controller { // GET api/flug/{id} [HttpGet("{id}")] public Flug GetById(int id) { […] } // GET api/flug/byRoute?von=...&nach=... [HttpGet("byRoute")] public List<Flug> GetByRoute(string von, string nach) { […] } // POST api/flug [HttpPost] public void PostFlug([FromBody] Flug flug) { […] } } DEMO Page  47
  21. 21. 21 Formatter konfigurieren Folie 48 public class Startup { public void ConfigureServices(IServiceCollection services) { services.AddMvc() .AddJsonOptions(options => { […] }) .AddMvcOptions(options => { […] }); } } XML-Formatter Paket: Microsoft.AspNet.Mvc.Formatters.Xml  XmlDataContractSerializerInputFormatter  XmlDataContractSerializerOutputFormatter Folie 49
  22. 22. 22 DEMO Page  50 META-DATEN VIA SWAGGER Page  51
  23. 23. 23 Swagger JSON-basierte Metadatenformat für Web APIs Weit verbreitet Kein offizieller Standard Folie 52 Swagger Folie 53 JSON-Schema für Datentypen Operationen (Verb, Url, Datentypen für Anfrage und Antworten)
  24. 24. 24 SWASHBUCKLE Page  54 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 55
  25. 25. 25 DEMO Page  56 Fazit  Aktuelle Trends werden besser unterstützt  Abstand zur Konkurrenz wird aufgeholt ohne auf eigene Vorteile zu verzichten  Plattformunabhängigkeit  Leichtgewichtigkeit  Vereinheitlichung, aber Breaking Changes  Aber: Bestehende Versionen bleiben erhalten Folie 69
  26. 26. 26 Fazit Neue Features  Leichtgewichtiges Hosting  Self-Hosting  Dependency Injection  Tag Helper MVC: Web Apps & Web APIs Interessant auch für Desktop/Mobile-Entwickler (Services) Folie 70 manfred.steyer@SOFTWAREarchitekt.at SOFTWAREarchitekt.at ManfredSteyer Contact

×