net core and dnx - goto conference...beta6 27 jul 2015 beta7 2 sep 2015 beta8 5 oct 2015: feature...

39
.NET Core and DNX Chrisitan Horsdal Horsdal Consult @chr_horsdal

Upload: others

Post on 14-May-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

.NET Core and DNXChrisitan Horsdal

Horsdal Consult

@chr_horsdal

Page 2: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,
Page 3: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

.NET Core

Middleware

DNX

X-Plat

Page 4: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

About me

Christian Horsdal

Independent Consultant

www.horsdal-consult.dk

[email protected]

@chr_horsdal

Page 5: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

ASP.NET 5Everything changes

Page 6: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

ASP.NET Today

IIS

.NET BCL

ASP.NET

ASP.NET MVC ASP.NET Web API

HTTP

Modules

ASP.NET WebForms

HTTP

HandlersRequest

pipeline

HTTP

Context

et al.

CachingSession

State

Page 7: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

ASP.NET – things not in 5

IIS

.NET BCL

ASP.NET

ASP.NET MVC ASP.NET Web API

HTTP

Modules

ASP.NET WebForms

HTTP

HandlersRequest

pipeline

HTTP

Context

et al.

CachingSession

State

Page 8: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

ASP.NET – and things changed in 5

IIS

.NET BCL

ASP.NET

ASP.NET MVC ASP.NET Web API

HTTP

Modules

ASP.NET WebForms

HTTP

HandlersRequest

pipelineHTTP

ContextCaching

Session

State

Page 9: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

Highlights of ASP.NET 5

DNX runtime

Modularized .NET

Cross platform .NET

Side-by-side deploy

OWIN / Middleware

Independent of Visual Studio

Unified MVC and WebAPI

Page 10: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

Why Do I Care?

DNX and cross platform:

Broader eco system

DNX as enabler for your own tooling

DNX as enabler for 3rd party / OSS tooling

Use Linux in prodcution

Page 11: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

Why Do I Care?

Modularized .NET

Smaller footprint on disk and memory

Faster development from MS on some parts

Side-by-side on different versions

Page 12: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

Why Do I Care?

Middleware

Nice modular way of working

Sparation of infrastructure and application

Page 13: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

Roadmap

Milestone Release week

Beta6 27 Jul 2015

Beta7 2 Sep 2015

Beta8 5 Oct 2015: Feature complete

RC1 Nov 2015: Stabilized

1.0.0 Q1 2016

> 1.0.0 Maybe Q3 2016: VB.NET, SignalR, WebPages

13

Page 14: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

.NET CORE

Page 15: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

AKA: Cloud Optimized Framework

Because cloud. CLOUD. CLOUD

Trimmed down

Opt-in to more through NuGets

Not in GAC

Page 16: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

BIN Deploy

16

Source

code dnu publish

Server with DNXxcopy

Page 17: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

Side-by-side deployment

17

App 1

.NETCore v. XApp 2

.NETCore v. Y

App 3

.NETCore v. Z

Page 18: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

What In and What’s Out?

No System.Web

No desktop stuff

WPF

Winforms

GDI

No Windows APIs – system32

18

Page 19: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

No System.Web

System.Web is at the very core of ASP.NET today

Context

Request

Response

Session

Pipeline (that nasty global.asax stuff)

Page 20: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

What’s In and What’s Out

Cleanup

E.g. fewer cultures

E.g. fewer overloads here and there

Still being hashed out

20

Page 21: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

Command line fun: DNX, DNU, DNVM

21

Page 22: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

Why Command Line???

Automation

Cross platform

Visual Studio independence

Well worth learning

22

Page 23: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

DNX Runtime

Application

Frameworks (MVC, WebAPI, 3rd party) & OWIN middleware

DNX

CoreCLR FullCLR Mono

Page 24: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

DNX

Command line for all things ASP.NET 5

.NET Version Manager (dnvm)

.NET Development UItility (dnu)

.NET Execution Environment (dnx)

Page 25: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

Demo – YO, DNVM, DNU and DNX

Page 26: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

project.json

{"dependencies": {

"Microsoft.AspNet.Server.IIS" : "1.0.0-alpha2","Microsoft.AspNet.Server.WebListener" : "1.0.0-

alpha2","Microsoft.AspNet.Owin": "1.0.0-alpha2","Nancy" : “1.2.0"

},"configurations" : {

“dnx451" : { },“dnxcore50" : { }

}}

Page 27: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

project.json

DOES NOT LIST ALL FILES IN PROJECT

Page 28: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

DNX, DNU, DNVM

No ties to

Visual Studio

Point-in-case:

atom-omnisharp

Page 29: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

ASP.NET 5 Pipeline

Page 30: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

ASP.NET 5: Pipeline

30

KestrelThrottling

MiddlewareOAuth

MiddlewareApplication

Page 31: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

Middleware

Middleware transforms the request and response

Takes a context in

Can call next step in pipeline

Or not

Uniform interface

31

Page 32: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

ASP.NET 5: Pipeline

32

KestrelThrottling

MiddlewareOAuth

MiddlewareApplication

Page 33: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

OWIN: The Standard

Several years in prod already

Used (semi) widely

Implemented by

Katana

Nowin

ASP.NET 5,…

Implemented by MVC, Nancy, Suave, …

33

Page 34: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

OWIN: Middleware Ecosystem Security:

Oauth, Twitter, Facebook, Google, …

ClaimsTranformations

RequireSSL

ScopeValidation

Web: Routing

Limits

Sitemap

StaticFiles

Monitoring Raygun

Serilog

34

Page 35: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

OWIN Middleware - As lambda

35

app.UseOwin(buildFunc => buildFunc(next => async ctx =>{var stopWatch = new Stopwatch();stopWatch.Start();await next(ctx);WriteLine("Action execution time: " + stopWatch.ElapsedMilliseconds);

}));

Page 36: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

Cross Platform

Page 37: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,
Page 38: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,

DEMO

DNX, MVC, WINDOWS, LINUX

Page 39: NET Core and DNX - GOTO Conference...Beta6 27 Jul 2015 Beta7 2 Sep 2015 Beta8 5 Oct 2015: Feature complete RC1 Nov 2015: Stabilized 1.0.0 Q1 2016 > 1.0.0 Maybe Q3 2016: VB.NET, SignalR,