©2016 Avanade Inc. All Rights Reserved. Masters in Microsoft (ASP).NET Core Sjoerd van der Meer & Albert Sluijter 12-5-2016
©2016 Avanade Inc. All Rights Reserved. Sjoerd van der Meer Contact info Email: albert.sluijter@avanade.com Email: sjoerd.van.der.meer@avanade.com Github: github.com/desjoerd Albert Sluijter
©2016 Avanade Inc. All Rights Reserved. • History and introduction to .NET Core • .NET Platform Standard • .NET Command Line Interface • Compilers • Break • ASP.NET Core Pipeline • ASP.NET Core MVC • ASP.NET Core To production • ASP.NET Core Future Agenda
©2016 Avanade Inc. All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 4 Demo
©2016 Avanade Inc. All Rights Reserved. Let’s have some Pi(e)
©2016 Avanade Inc. All Rights Reserved. • .NET framework becomes bigger and bigger • ASP.NET, including MVC, tightly coupled to the framework • Difficult to keep up the release cycle History (ASP).NET 2002 2003 2004 2005 2006 2007 … 2013 2014 2015 1.0 16 Jan 2.0 7 Nov Core RC1 18 Nov 4.6 20 Jul 4.5.1 17 Okt
©2016 Avanade Inc. All Rights Reserved. Fragmentation of .NET • Multiple, fragmented versions of .NET for different platforms • There’s a different runtime, framework and application model • Different platforms are always going to have different features and capabilities Windows Desktop App Model Framework Runtime Windows Store App Model Framework Runtime Windows Phone App Model Framework Runtime ASP.NET 4 App Model Framework Runtime
©2016 Avanade Inc. All Rights Reserved. Portable Class Library (PCL) .NET Framework Windows Phone Windows Universal
©2016 Avanade Inc. All Rights Reserved. .NET Stack
©2016 Avanade Inc. All Rights Reserved. .NET Platform Standard Why? To provide a more concrete guarantee of binary portability to future .NET- capable platforms with an easier-to-understand platform versioning plan .NET Platform Standard netstandard 1 1.1 1.2 1.3 1.4 1.5 .NET Core netcoreapp → → → → → 1 .NET Framework net → → → → → 4.6.2 → → → → 4.6.1 → → → 4.6 → → 4.5.2 → → 4.5.1 → 4.5 Universal Windows Platform uap → → → → 10 Windows win → → 8.1 → 8 Windows Phone wpa → → 8.1 Windows Phone Silverlight wp 8.1 8 Mono/Xamarin Platforms → → → → → * Mono → → *
©2016 Avanade Inc. All Rights Reserved. .NETStandard class library
©2016 Avanade Inc. All Rights Reserved. Compilers .NET Native Compiler AOT .NET Assemblies (IL) RyuJIT Roslyn Compiler Native JIT CoreCLR CoreRT Single native file
©2016 Avanade Inc. All Rights Reserved. • Lightweight • Modular • Cross platform • No machine wide installation • Run multiple versions in parallel • Faster (package based) release cycles Why .NET Core
©2016 Avanade Inc. All Rights Reserved. .NET framework Mono .NET Core Machine wide Machine wide Per app Existing code Existing code New code Many types Many types Limited types Windows only Cross-platform Cross-platform Framework choices
©2016 Avanade Inc. All Rights Reserved. • ASP.NET 4.6 is the more mature platform. • ASP.NET Core 1.0 is a 1.0 release that includes Web API and MVC but doesn't yet have SignalR or Web Pages. • It doesn't yet support VB or F#. It might have these subsystems some day. When use .NET Core
©2016 Avanade Inc. All Rights Reserved. .NET CLI •Command-line first approach •Replaces DNX, DNU and DNVM •dotnet new •dotnet restore •dotnet run •dotnet build •dotnet publish
©2016 Avanade Inc. All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 17 Demo .NET CLI
©2016 Avanade Inc. All Rights Reserved. • Open source Web server for ASP.NET based on libuv (also used by NodeJS) • It is fast and production ready. • It is not a fully featured web server. • It is recommended that you run it behind a more fully featured webserver like IIS on Windows or NGNIX on Linux. • It is run behind IIS using the ASP.NET Core Module (native IIS module). • Maps a HTTP Request to the HttpContext. Kestrel
©2016 Avanade Inc. All Rights Reserved. Kestrel performance 0 500000 1000000 1500000 2000000 2500000 3000000 ASP.NET 4.6 ASP.NET 5 NodeJS ASP.NET 5 Scala - Plain Netty IIS WebListener Node Kestrel Plain Netty Max of RPS Avg 1 - x64 1 - x86 16 - x64 16 - x86
©2016 Avanade Inc. All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 20 BREAK
©2016 Avanade Inc. All Rights Reserved. Asp.net Core web application Request Response Application Console.WriteLine(“Hello world!”) How to make a webapplication from a console app?
©2016 Avanade Inc. All Rights Reserved. Asp.net Core web application Request Response Application Add Kestrel Server Binds to a port and transforms request for Asp.net core Kestrel
©2016 Avanade Inc. All Rights Reserved. Asp.net Core web application Request Response Kestrel passes the request to a middleware pipeline Kestrel Middleware Middleware Middleware Middleware
©2016 Avanade Inc. All Rights Reserved. Asp.net Core web application Request Response Hello web Kestrel Helloworld
©2016 Avanade Inc. All Rights Reserved. Asp.net Core web application Middleware pipeline is method chaining Kestrel Middleware Middleware Middleware next() return return next() return Request Response
©2016 Avanade Inc. All Rights Reserved. Request pipeline
©2016 Avanade Inc. All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 27 Let’s play with the middleware pipeline
©2016 Avanade Inc. All Rights Reserved. Asp.net Core web application Kestrel server does nothing by default Cookie authentication Static Files Database error page Asp.net MVC Facebook authentication Developer Exception page Examples of middleware Add features as middleware! Runtime info page Status Code pages
©2016 Avanade Inc. All Rights Reserved. Web application framework Does: Routing – Modelbinding – Templating Goals: Seperation of concerns Patterns based Full control over output (html/json/xml) TDD friendly Asp.net MVC 6 ModelView Controller
©2016 Avanade Inc. All Rights Reserved. Asp.net Asp.net core Asp.net MVC 6 MVC 5 WebApi 2 System.Web Owin Asp.net Core {json} & <xml/> <html/> MVC 6 <html/>{json} & <xml/> git merge
©2016 Avanade Inc. All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 31 MVC Demo Yo maann! Before you start all over again
©2016 Avanade Inc. All Rights Reserved. • Scaffolding tool • npm install --global yo • Generates • Projects • Classes • Files • Uses generators • npm install --global generator-aspnet Yeoman Yo!
©2016 Avanade Inc. All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 33 yo aspnet
©2016 Avanade Inc. All Rights Reserved. Host my app dotnet run? Multiple apps on one server? (only one port 80) And SSL? Windows authentication? Going to production Request Response My Epic Web Application Kestrel
©2016 Avanade Inc. All Rights Reserved. Run it with a reverse proxy • IIS • Install ASP.NET Core Module first • nginx • Apache Going to production Request Response My Epic Web Application Kestrel IIS–nginx–apache :80/:443 :5000
©2016 Avanade Inc. All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 36 dotnet publish
©2016 Avanade Inc. All Rights Reserved. Asp.net core future Docker Nano Server (size 550MB) Microservices Azure service fabric Raspberry PI (ARM)
©2016 Avanade Inc. All Rights Reserved. Timeline Today 16 May 2016 June - July July - September End of 2016 .net core & Asp.net core RC2-final Tooling preview1 (Visual studio & dotnet-cli) .net core & Asp.net core RTM Tooling still in preview Asp.net core SignalR Tooling RTM Expecting .net core & asp.net core 1.1 .net core & Asp.net core RC2 almost final
©2016 Avanade Inc. All Rights Reserved. Starting point for .NET dot.net/ Asp.net core docs docs.asp.net/ All open source on Github • Github.com/dotnet/ • Github.com/aspnet/ • Github.com/microsoft/ Get Code it’s awesome (and open source) code.visualstudio.com/ Omnisharp intellisense for editors omnisharp.net/ github.com/omnisharp Getting started
©2016 Avanade Inc. All Rights Reserved. github.com/desjoerd/session-aspnetcore Demo sources
©2016 Avanade Inc. All Rights Reserved. Questions?

MiM asp.net core

  • 1.
    ©2016 Avanade Inc.All Rights Reserved. Masters in Microsoft (ASP).NET Core Sjoerd van der Meer & Albert Sluijter 12-5-2016
  • 2.
    ©2016 Avanade Inc.All Rights Reserved. Sjoerd van der Meer Contact info Email: albert.sluijter@avanade.com Email: sjoerd.van.der.meer@avanade.com Github: github.com/desjoerd Albert Sluijter
  • 3.
    ©2016 Avanade Inc.All Rights Reserved. • History and introduction to .NET Core • .NET Platform Standard • .NET Command Line Interface • Compilers • Break • ASP.NET Core Pipeline • ASP.NET Core MVC • ASP.NET Core To production • ASP.NET Core Future Agenda
  • 4.
    ©2016 Avanade Inc.All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 4 Demo
  • 5.
    ©2016 Avanade Inc.All Rights Reserved. Let’s have some Pi(e)
  • 6.
    ©2016 Avanade Inc.All Rights Reserved. • .NET framework becomes bigger and bigger • ASP.NET, including MVC, tightly coupled to the framework • Difficult to keep up the release cycle History (ASP).NET 2002 2003 2004 2005 2006 2007 … 2013 2014 2015 1.0 16 Jan 2.0 7 Nov Core RC1 18 Nov 4.6 20 Jul 4.5.1 17 Okt
  • 7.
    ©2016 Avanade Inc.All Rights Reserved. Fragmentation of .NET • Multiple, fragmented versions of .NET for different platforms • There’s a different runtime, framework and application model • Different platforms are always going to have different features and capabilities Windows Desktop App Model Framework Runtime Windows Store App Model Framework Runtime Windows Phone App Model Framework Runtime ASP.NET 4 App Model Framework Runtime
  • 8.
    ©2016 Avanade Inc.All Rights Reserved. Portable Class Library (PCL) .NET Framework Windows Phone Windows Universal
  • 9.
    ©2016 Avanade Inc.All Rights Reserved. .NET Stack
  • 10.
    ©2016 Avanade Inc.All Rights Reserved. .NET Platform Standard Why? To provide a more concrete guarantee of binary portability to future .NET- capable platforms with an easier-to-understand platform versioning plan .NET Platform Standard netstandard 1 1.1 1.2 1.3 1.4 1.5 .NET Core netcoreapp → → → → → 1 .NET Framework net → → → → → 4.6.2 → → → → 4.6.1 → → → 4.6 → → 4.5.2 → → 4.5.1 → 4.5 Universal Windows Platform uap → → → → 10 Windows win → → 8.1 → 8 Windows Phone wpa → → 8.1 Windows Phone Silverlight wp 8.1 8 Mono/Xamarin Platforms → → → → → * Mono → → *
  • 11.
    ©2016 Avanade Inc.All Rights Reserved. .NETStandard class library
  • 12.
    ©2016 Avanade Inc.All Rights Reserved. Compilers .NET Native Compiler AOT .NET Assemblies (IL) RyuJIT Roslyn Compiler Native JIT CoreCLR CoreRT Single native file
  • 13.
    ©2016 Avanade Inc.All Rights Reserved. • Lightweight • Modular • Cross platform • No machine wide installation • Run multiple versions in parallel • Faster (package based) release cycles Why .NET Core
  • 14.
    ©2016 Avanade Inc.All Rights Reserved. .NET framework Mono .NET Core Machine wide Machine wide Per app Existing code Existing code New code Many types Many types Limited types Windows only Cross-platform Cross-platform Framework choices
  • 15.
    ©2016 Avanade Inc.All Rights Reserved. • ASP.NET 4.6 is the more mature platform. • ASP.NET Core 1.0 is a 1.0 release that includes Web API and MVC but doesn't yet have SignalR or Web Pages. • It doesn't yet support VB or F#. It might have these subsystems some day. When use .NET Core
  • 16.
    ©2016 Avanade Inc.All Rights Reserved. .NET CLI •Command-line first approach •Replaces DNX, DNU and DNVM •dotnet new •dotnet restore •dotnet run •dotnet build •dotnet publish
  • 17.
    ©2016 Avanade Inc.All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 17 Demo .NET CLI
  • 18.
    ©2016 Avanade Inc.All Rights Reserved. • Open source Web server for ASP.NET based on libuv (also used by NodeJS) • It is fast and production ready. • It is not a fully featured web server. • It is recommended that you run it behind a more fully featured webserver like IIS on Windows or NGNIX on Linux. • It is run behind IIS using the ASP.NET Core Module (native IIS module). • Maps a HTTP Request to the HttpContext. Kestrel
  • 19.
    ©2016 Avanade Inc.All Rights Reserved. Kestrel performance 0 500000 1000000 1500000 2000000 2500000 3000000 ASP.NET 4.6 ASP.NET 5 NodeJS ASP.NET 5 Scala - Plain Netty IIS WebListener Node Kestrel Plain Netty Max of RPS Avg 1 - x64 1 - x86 16 - x64 16 - x86
  • 20.
    ©2016 Avanade Inc.All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 20 BREAK
  • 21.
    ©2016 Avanade Inc.All Rights Reserved. Asp.net Core web application Request Response Application Console.WriteLine(“Hello world!”) How to make a webapplication from a console app?
  • 22.
    ©2016 Avanade Inc.All Rights Reserved. Asp.net Core web application Request Response Application Add Kestrel Server Binds to a port and transforms request for Asp.net core Kestrel
  • 23.
    ©2016 Avanade Inc.All Rights Reserved. Asp.net Core web application Request Response Kestrel passes the request to a middleware pipeline Kestrel Middleware Middleware Middleware Middleware
  • 24.
    ©2016 Avanade Inc.All Rights Reserved. Asp.net Core web application Request Response Hello web Kestrel Helloworld
  • 25.
    ©2016 Avanade Inc.All Rights Reserved. Asp.net Core web application Middleware pipeline is method chaining Kestrel Middleware Middleware Middleware next() return return next() return Request Response
  • 26.
    ©2016 Avanade Inc.All Rights Reserved. Request pipeline
  • 27.
    ©2016 Avanade Inc.All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 27 Let’s play with the middleware pipeline
  • 28.
    ©2016 Avanade Inc.All Rights Reserved. Asp.net Core web application Kestrel server does nothing by default Cookie authentication Static Files Database error page Asp.net MVC Facebook authentication Developer Exception page Examples of middleware Add features as middleware! Runtime info page Status Code pages
  • 29.
    ©2016 Avanade Inc.All Rights Reserved. Web application framework Does: Routing – Modelbinding – Templating Goals: Seperation of concerns Patterns based Full control over output (html/json/xml) TDD friendly Asp.net MVC 6 ModelView Controller
  • 30.
    ©2016 Avanade Inc.All Rights Reserved. Asp.net Asp.net core Asp.net MVC 6 MVC 5 WebApi 2 System.Web Owin Asp.net Core {json} & <xml/> <html/> MVC 6 <html/>{json} & <xml/> git merge
  • 31.
    ©2016 Avanade Inc.All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 31 MVC Demo Yo maann! Before you start all over again
  • 32.
    ©2016 Avanade Inc.All Rights Reserved. • Scaffolding tool • npm install --global yo • Generates • Projects • Classes • Files • Uses generators • npm install --global generator-aspnet Yeoman Yo!
  • 33.
    ©2016 Avanade Inc.All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 33 yo aspnet
  • 34.
    ©2016 Avanade Inc.All Rights Reserved. Host my app dotnet run? Multiple apps on one server? (only one port 80) And SSL? Windows authentication? Going to production Request Response My Epic Web Application Kestrel
  • 35.
    ©2016 Avanade Inc.All Rights Reserved. Run it with a reverse proxy • IIS • Install ASP.NET Core Module first • nginx • Apache Going to production Request Response My Epic Web Application Kestrel IIS–nginx–apache :80/:443 :5000
  • 36.
    ©2016 Avanade Inc.All Rights Reserved.©2016 Avanade Inc. All Rights Reserved. 36 dotnet publish
  • 37.
    ©2016 Avanade Inc.All Rights Reserved. Asp.net core future Docker Nano Server (size 550MB) Microservices Azure service fabric Raspberry PI (ARM)
  • 38.
    ©2016 Avanade Inc.All Rights Reserved. Timeline Today 16 May 2016 June - July July - September End of 2016 .net core & Asp.net core RC2-final Tooling preview1 (Visual studio & dotnet-cli) .net core & Asp.net core RTM Tooling still in preview Asp.net core SignalR Tooling RTM Expecting .net core & asp.net core 1.1 .net core & Asp.net core RC2 almost final
  • 39.
    ©2016 Avanade Inc.All Rights Reserved. Starting point for .NET dot.net/ Asp.net core docs docs.asp.net/ All open source on Github • Github.com/dotnet/ • Github.com/aspnet/ • Github.com/microsoft/ Get Code it’s awesome (and open source) code.visualstudio.com/ Omnisharp intellisense for editors omnisharp.net/ github.com/omnisharp Getting started
  • 40.
    ©2016 Avanade Inc.All Rights Reserved. github.com/desjoerd/session-aspnetcore Demo sources
  • 41.
    ©2016 Avanade Inc.All Rights Reserved. Questions?

Editor's Notes

  • #13 NET Native offers great benefits that are critical for many apps. The native compiler generates a SINGLE FILE, including the app, managed dependencies and CoreRT. Native compiled apps startup faster since they execute already compiled code. They don't need to generate machine code at runtime nor load a JIT compiler. Native compiled apps can use an optimizing compiler, resulting in faster throughput from higher quality code (C++ compiler optimizations). Both the LLILLC and IL to CPP compilers rely on optimizing compilers. These benefits open up some new scenarios for .NET developers Copy a single file executable from one machine and run on another (of the same kind) without installing a .NET runtime. Create and run a docker image that contains a single file executable (e.g. one file in addition to Ubuntu 14.04).
  • #30 ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that enables a clean separation of concerns and that gives you full control over markup for enjoyable, agile development. ASP.NET MVC includes many features that enable fast, TDD-friendly development for creating sophisticated applications that use the latest web standards.
  • #32 Of toch niet
  • #34 Yo aspnet -> Mvc application Show mvc application
  • #39 Signalr RC2 -> Aankomende week met tooling RTM Juni/Juli Docker, Nano server, ARM, Windows Azure