SlideShare a Scribd company logo
.NET Core
Blimey.
@citizenmatt
This is Matt Ellis
He works for Microsoft, and is a developer on
the .NET Core team.

This is not me.
This is Matt Ellis
He works for JetBrains, and is an interested
amateur in .NET Core.

This is me.
What is .NET Core?
New .NET stack - CLR + BCL
Open Source
Cross platform
Standalone -

per-application installs
Factored for modularity -
“cloud optimised”
Everything ships as
NuGet packages,
including the runtime
Not finished…

RTM Q1 2016 (ish)
.NET Core != .NET Framework
NOT a new version of the .NET Framework
• .NET Framework is going nowhere
• .NET Core is 5.0 1.0

.NET Framework is 4.6
• .NET Core is a fork of the .NET Framework

Code merged back to TFS
• .NET Core is (currently) a strict subset of
the .NET Framework
• Missing pieces in .NET Core

Windows: WinForms, WPF, COM, etc.

Platform: AppDomains, Remoting,
Reflection.Emit, etc.
• Different constraints:

Ship cycles, compatibility, system wide install
Why?
Multiple .NET stacks.
Incompatibilities
Portable Class Libraries

not scalable
Cross platform
Independent release cycles

Runtime, BCL, apps
Nano Server
Tidy up

15 years of evolution
Why?
Why?
Multiple .NET stacks.
Incompatibilities
Portable Class Libraries

not scalable
Cross platform
Independent release cycles

Runtime, BCL, apps
Nano Server
Tidy up

15 years of evolution
History
Started with .NET Framework 2.0
How do I get it?
NuGet
How do I get it?
.NET CLI tools (née DNX)
Official installer from dotnet.github.io
dotnet.exe, compilers (csc, vbc, fsc, ilc), NuGet,

own .NET Core instance (runtime + fx)
dotnet.exe is a driver for other commands

e.g. dotnet foo simply executes dotnet-foo
No more dnvm - runtime is genuine NuGet dependency now

(“runtime.osx….” packages)
Global package cache
dotnet compile dotnet-compile
dnvm
runtime.osx.…
dotnet.exe
How do I get it?
Build it from source!
Architecture
Boxes and bits.
CoreRT (née .NET Native)
Alternative runtime (optimisation)
• AOT compilation (RyuJIT → Native)
• Compiles all dependencies

Tree shaking
• Reflection? Via xml!
• Open Source (dotnet/corert)
• Previously Windows Store only

Now includes Mac + Linux (!)

• ILtoCPP - IL → C++ → native

LLILC - LLVM based JIT/AOT
CoreCLR The new runtime.
dotnet/coreclr
JIT compiler (RyuJIT), Garbage Collector, Platform Abstraction Layer - C++
mscorlib (tightly coupled to runtime) - C#
PAL - OS and platform differences. E.g. exception handling, threads, etc.

P/Invoke to OS, FEATURE #ifdefs
Book of the Runtime!
Mirror back to TFS
CoreFX The new BCL.
dotnet/corefx
Factored for modularity - each solution/assembly is a package
Some platform specific implementations, e.g. System.Console,
Process.Interop.Unix.cs, etc.
Might throw PlatformNotSupportedException

(e.g. Console.get_ForegroundColor )
Build is based on project.json, packages as references
Mirrored to TFS + .NET Framework
High compatibility bar for changes, transparent API review process
Console.get_ForegroundColor
PlatformNotSupportedException
AppModels
Or: How do you run a .exe on Unix?
How the application is hosted and run
Environmental services
What is an AppModel?
Bootstrap the CLR
Execute the
application
.NET Framework AppModels
.NET .exe
Originally a native stub that
loaded the CLR (x86 only!)
Special cased by OS loader
since Windows XP
Loads mscoree.dll, which
initialises CLR and executes
app
IIS/asp.net
Pre-IIS 7 - ISAPI filter
IIS 7 directly integrates CLR
Pipes requests/responses to
managed code
Lifetime management
Windows Phone /
Windows Store
Magic!
“Application host” loads CLR
Integrates with environment
events. E.g. suspend and
resume applications
Pre-compiled / .NET Native
corerun
.NET CLI
Windows 10 UWP
Applications
.NET Core AppModels
coreconsole /
osxcorebundlerun
.NET CLI (née DNX)
Dot NET Execution Environment
started with
ASP.NET Core
Targets .NET Core /

.NET Framework /
Mono
Self contained .NET Core
environment
Changes project system

Reference packages, not assemblies
More…
• Packages for runtime and BCL
• BCL factored into many packages
• NuGet at heart of project system
(.xproj)
• NuGet is the new Portable Class
Library
NuGet
Bleeding edge.
How does it work?
.NET Core app

.NET Core package
PCL package
.NET Framework package
.NET Framework app
 ?
Platforms
• No such thing as a .NET Core “app”

App runs on a version of a platform, e.g. .NET CLI, .NET Framework, Windows UWP
• Platforms conform to a specific version of the .NET Standard Platform
• Packages target a real platform (e.g. lib/net46 ) or a specific version of the .NET Standard
Platform - e.g. lib/netstandard1.3
• NuGet understands mappings between real platforms and n e tstandard versions (and PCLs)
• Can consume any compatible platform
• E.g. dnxcore50 maps to netstandard1. ; net46 to netstandard1.3

.NET CLI apps can consume net46 packages. But not vice versa (however, net461 can)
libnet46
libnetstandard1.3
netstandardapp1.4 netstandard1.4 net46 netstandard1.3
net46 net461
netstandard
What is the .NET Standard Platform?
Replacing Portable Class Libraries
PCL Refresher
1. A PCL is a class library that needs to run on multiple platforms and versions

(e.g. .NET Framework, Windows Phone, Xamarin)
2. It defines a common subset of APIs that are available on ALL of the required
versions of these platforms - a “Profile”
3. When targeting a Profile, the compiler references a set of Reference Assemblies

These describe the API with empty types, and forward types to correct assemblies
4. At runtime, the real assemblies on the target platform implement the APIs

Can also forward types to other assemblies
Portable Class Libraries
• PCL hides platform specific implementation details behind a common API
contract (reference assembly)
• Profiles do not scale. The more versions and platforms, the more Profiles…
• A published PCL lists all supported platforms

If a new platform is created, it isn’t supported
Reference Assemblies in .NET Core
• Allows for different implementations on different platforms and operating
systems, but common API
• Allows for refactoring the BCL!
• Reference Assemblies shipped in NuGet

packages in ref folder
• PCL consuming a package will use the

Reference Assembly at compile time, but

implementation assembly at runtime
ref
What is the .NET Standard Platform?
• A versioned collection of API contracts

Reference assemblies
• Each version is a superset of the previous

version - backwards compatible
• Similar to PCL Profile, but flipped

Not list of supported platforms, but a single
platform for other platforms to conform to
• Replaces PCLs with a single versioned moniker.
Creating a new platform is easy
• Only works with .NET Framework ≧ 4.5!
Huh?
Check out standard-platform.md in github.com/dotnet/corefx docs
How does this affect us?
Creating NuGet packages
Target netstandard

if possible

No implicit platform
dependencies
Explicitly specify used
dependencies
Version of dependencies is irrelevant

Implied by .NET Standard Platform
Include PCL and

reference assembly

if required
New Target Framework Monikers
Brand new
• dotnet - - .NET Core contracts. Replaces portable- . Use this!

Supports .Net Framework 4.5 and later (inc. Xamarin)
• dnx451 , dnx46 - - Application running on .NET CLI
• uap10.0 - .NET Core 5.0 on Windows. AKA 

(UWP apps. Follows netcore45 / win8 , netcore451 / win81)
netstandard1.X
netstandardapp1.X
netcore50
netcore45 win8 netcore451 win81
uap10.0
portable-*
What does this mean for Mono?
Lots. Or not much.
Mono == .NET Framework
Mono already
cross platform
Mono’s focus is
non-Windows
mobile (Xamarin)
.NET Core’s focus
is server and
Windows UWP
Mono can include
CoreCLR + CoreFX
code
Where does Roslyn fit in?
Orthogonal.
Runs on .NET
Framework + Mono
Ships with .NET CLI

running on .NET Core
Compiling CoreCLR + CoreFX

currently requires Windows/Mono
C# compiler

written in C#
.NET Core
Cross platform
Open Source
NuGet everywhere
Bleeding edge
Icons: http://icons8.com/
The future of .NET
Links
CoreCLR - https://github.com/dotnet/coreclr
CoreFX - https://github.com/dotnet/corefx
CoreRT (.NET Native) - https://github.com/dotnet/corert
.NET CLI - https://github.com/dotnet/cli
NuGet - http://docs.nuget.org
@citizenmatt

More Related Content

What's hot

Introduction to dot net
Introduction to dot netIntroduction to dot net
Introduction to dot net
QIANG XU
 
Future of .NET - .NET on Non Windows Platforms
Future of .NET - .NET on Non Windows PlatformsFuture of .NET - .NET on Non Windows Platforms
Future of .NET - .NET on Non Windows Platforms
Aniruddha Chakrabarti
 
.NET Core Blimey! Windows Platform User Group, Manchester
.NET Core Blimey! Windows Platform User Group, Manchester.NET Core Blimey! Windows Platform User Group, Manchester
.NET Core Blimey! Windows Platform User Group, Manchester
citizenmatt
 
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...
GlobalLogic Ukraine
 
.NET Core: a new .NET Platform
.NET Core: a new .NET Platform.NET Core: a new .NET Platform
.NET Core: a new .NET Platform
Alex Thissen
 
IITCC15: The Bare-Metal Hypervisor as a Platform for Innovation
IITCC15: The Bare-Metal Hypervisor as a Platform for InnovationIITCC15: The Bare-Metal Hypervisor as a Platform for Innovation
IITCC15: The Bare-Metal Hypervisor as a Platform for Innovation
The Linux Foundation
 
GlusterFs: a scalable file system for today's and tomorrow's big data
GlusterFs: a scalable file system for today's and tomorrow's big dataGlusterFs: a scalable file system for today's and tomorrow's big data
GlusterFs: a scalable file system for today's and tomorrow's big data
Roberto Franchini
 
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14ActiveState
 
Codemotion Rome 2015. GlusterFS
Codemotion Rome 2015. GlusterFSCodemotion Rome 2015. GlusterFS
Codemotion Rome 2015. GlusterFS
Roberto Franchini
 
ClearCase Escape Plan
ClearCase Escape PlanClearCase Escape Plan
ClearCase Escape Plan
Perforce
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013
dotCloud
 
Open MPI SC'15 State of the Union BOF
Open MPI SC'15 State of the Union BOFOpen MPI SC'15 State of the Union BOF
Open MPI SC'15 State of the Union BOF
Jeff Squyres
 
Moving 1,000 Users & 100 Branches into Streams
Moving 1,000 Users & 100 Branches into StreamsMoving 1,000 Users & 100 Branches into Streams
Moving 1,000 Users & 100 Branches into Streams
Perforce
 
IncludeOS for ics 2018
IncludeOS for ics 2018IncludeOS for ics 2018
IncludeOS for ics 2018
Per Buer
 
Parallel language and compiler
Parallel language and compilerParallel language and compiler
Parallel language and compiler
SVijaylakshmi
 
Linux programming - Getting self started
Linux programming - Getting self started Linux programming - Getting self started
Linux programming - Getting self started
Emertxe Information Technologies Pvt Ltd
 
LCA14: LCA14-403: Importance of migrating external projects used in Android t...
LCA14: LCA14-403: Importance of migrating external projects used in Android t...LCA14: LCA14-403: Importance of migrating external projects used in Android t...
LCA14: LCA14-403: Importance of migrating external projects used in Android t...
Linaro
 

What's hot (19)

Introduction to dot net
Introduction to dot netIntroduction to dot net
Introduction to dot net
 
Future of .NET - .NET on Non Windows Platforms
Future of .NET - .NET on Non Windows PlatformsFuture of .NET - .NET on Non Windows Platforms
Future of .NET - .NET on Non Windows Platforms
 
.NET Core Blimey! Windows Platform User Group, Manchester
.NET Core Blimey! Windows Platform User Group, Manchester.NET Core Blimey! Windows Platform User Group, Manchester
.NET Core Blimey! Windows Platform User Group, Manchester
 
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...
 
.NET Core: a new .NET Platform
.NET Core: a new .NET Platform.NET Core: a new .NET Platform
.NET Core: a new .NET Platform
 
IITCC15: The Bare-Metal Hypervisor as a Platform for Innovation
IITCC15: The Bare-Metal Hypervisor as a Platform for InnovationIITCC15: The Bare-Metal Hypervisor as a Platform for Innovation
IITCC15: The Bare-Metal Hypervisor as a Platform for Innovation
 
LLVM Compiler
LLVM CompilerLLVM Compiler
LLVM Compiler
 
GlusterFs: a scalable file system for today's and tomorrow's big data
GlusterFs: a scalable file system for today's and tomorrow's big dataGlusterFs: a scalable file system for today's and tomorrow's big data
GlusterFs: a scalable file system for today's and tomorrow's big data
 
LLVM
LLVMLLVM
LLVM
 
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
 
Codemotion Rome 2015. GlusterFS
Codemotion Rome 2015. GlusterFSCodemotion Rome 2015. GlusterFS
Codemotion Rome 2015. GlusterFS
 
ClearCase Escape Plan
ClearCase Escape PlanClearCase Escape Plan
ClearCase Escape Plan
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013
 
Open MPI SC'15 State of the Union BOF
Open MPI SC'15 State of the Union BOFOpen MPI SC'15 State of the Union BOF
Open MPI SC'15 State of the Union BOF
 
Moving 1,000 Users & 100 Branches into Streams
Moving 1,000 Users & 100 Branches into StreamsMoving 1,000 Users & 100 Branches into Streams
Moving 1,000 Users & 100 Branches into Streams
 
IncludeOS for ics 2018
IncludeOS for ics 2018IncludeOS for ics 2018
IncludeOS for ics 2018
 
Parallel language and compiler
Parallel language and compilerParallel language and compiler
Parallel language and compiler
 
Linux programming - Getting self started
Linux programming - Getting self started Linux programming - Getting self started
Linux programming - Getting self started
 
LCA14: LCA14-403: Importance of migrating external projects used in Android t...
LCA14: LCA14-403: Importance of migrating external projects used in Android t...LCA14: LCA14-403: Importance of migrating external projects used in Android t...
LCA14: LCA14-403: Importance of migrating external projects used in Android t...
 

Viewers also liked

SQL select clause
SQL select clauseSQL select clause
SQL select clause
arpit bhadoriya
 
Introduction to .NET by QuontraSolutions
Introduction to .NET by QuontraSolutionsIntroduction to .NET by QuontraSolutions
Introduction to .NET by QuontraSolutions
QUONTRASOLUTIONS
 
Asp.net core
Asp.net coreAsp.net core
Asp.net core
Tanato Cartaxo
 
Knowledge - Skills - Abilities 10-2015
Knowledge - Skills - Abilities 10-2015Knowledge - Skills - Abilities 10-2015
Knowledge - Skills - Abilities 10-2015Bernard Moore
 
Sample111
Sample111Sample111
Sample111
kingquin
 
INSTITUCION EDUCATIVA LA PAMBA
INSTITUCION EDUCATIVA LA PAMBAINSTITUCION EDUCATIVA LA PAMBA
INSTITUCION EDUCATIVA LA PAMBA
E Holguin
 
Catalogo 2 de julio 2014 final
Catalogo 2 de julio 2014 finalCatalogo 2 de julio 2014 final
Catalogo 2 de julio 2014 final
vepreca
 
Comenius Bilateral 20135 Feb2014 rivas-austriasv.comenius bi
Comenius Bilateral 20135 Feb2014   rivas-austriasv.comenius biComenius Bilateral 20135 Feb2014   rivas-austriasv.comenius bi
Comenius Bilateral 20135 Feb2014 rivas-austriasv.comenius bi
profesorjulioperez
 
Presentación1
Presentación1Presentación1
Presentación1
Carol Antu
 
일산오피, 논현오피,역삼오피@(다솜넷)일산오피
일산오피, 논현오피,역삼오피@(다솜넷)일산오피일산오피, 논현오피,역삼오피@(다솜넷)일산오피
일산오피, 논현오피,역삼오피@(다솜넷)일산오피
dasom010
 
Ajay ntpc
Ajay ntpcAjay ntpc
Ajay ntpc
ajay singh
 
Collapse and syncope
Collapse and syncopeCollapse and syncope
Collapse and syncope
drianturner
 
Mechanical Engineer Lead
Mechanical Engineer LeadMechanical Engineer Lead
Mechanical Engineer LeadOscar Juncosa
 
Hospital management System (asp.net with c#)Project report
Hospital management System (asp.net with c#)Project reportHospital management System (asp.net with c#)Project report
Hospital management System (asp.net with c#)Project report
abhishek singh
 
Inventory management project based on ASP.NET, introduction to C# and ASP.NET
Inventory management project based on ASP.NET, introduction to C# and ASP.NETInventory management project based on ASP.NET, introduction to C# and ASP.NET
Inventory management project based on ASP.NET, introduction to C# and ASP.NET
Himanshu Patel
 
Architecture of .net framework
Architecture of .net frameworkArchitecture of .net framework
Architecture of .net framework
Then Murugeshwari
 

Viewers also liked (19)

SQL select clause
SQL select clauseSQL select clause
SQL select clause
 
Introduction to .NET by QuontraSolutions
Introduction to .NET by QuontraSolutionsIntroduction to .NET by QuontraSolutions
Introduction to .NET by QuontraSolutions
 
Asp.net core
Asp.net coreAsp.net core
Asp.net core
 
Knowledge - Skills - Abilities 10-2015
Knowledge - Skills - Abilities 10-2015Knowledge - Skills - Abilities 10-2015
Knowledge - Skills - Abilities 10-2015
 
Sample111
Sample111Sample111
Sample111
 
Wednesday
WednesdayWednesday
Wednesday
 
INSTITUCION EDUCATIVA LA PAMBA
INSTITUCION EDUCATIVA LA PAMBAINSTITUCION EDUCATIVA LA PAMBA
INSTITUCION EDUCATIVA LA PAMBA
 
Catalogo 2 de julio 2014 final
Catalogo 2 de julio 2014 finalCatalogo 2 de julio 2014 final
Catalogo 2 de julio 2014 final
 
Il futuro che vorrei!
Il futuro che vorrei!Il futuro che vorrei!
Il futuro che vorrei!
 
Sky city 5
Sky city 5Sky city 5
Sky city 5
 
Comenius Bilateral 20135 Feb2014 rivas-austriasv.comenius bi
Comenius Bilateral 20135 Feb2014   rivas-austriasv.comenius biComenius Bilateral 20135 Feb2014   rivas-austriasv.comenius bi
Comenius Bilateral 20135 Feb2014 rivas-austriasv.comenius bi
 
Presentación1
Presentación1Presentación1
Presentación1
 
일산오피, 논현오피,역삼오피@(다솜넷)일산오피
일산오피, 논현오피,역삼오피@(다솜넷)일산오피일산오피, 논현오피,역삼오피@(다솜넷)일산오피
일산오피, 논현오피,역삼오피@(다솜넷)일산오피
 
Ajay ntpc
Ajay ntpcAjay ntpc
Ajay ntpc
 
Collapse and syncope
Collapse and syncopeCollapse and syncope
Collapse and syncope
 
Mechanical Engineer Lead
Mechanical Engineer LeadMechanical Engineer Lead
Mechanical Engineer Lead
 
Hospital management System (asp.net with c#)Project report
Hospital management System (asp.net with c#)Project reportHospital management System (asp.net with c#)Project report
Hospital management System (asp.net with c#)Project report
 
Inventory management project based on ASP.NET, introduction to C# and ASP.NET
Inventory management project based on ASP.NET, introduction to C# and ASP.NETInventory management project based on ASP.NET, introduction to C# and ASP.NET
Inventory management project based on ASP.NET, introduction to C# and ASP.NET
 
Architecture of .net framework
Architecture of .net frameworkArchitecture of .net framework
Architecture of .net framework
 

Similar to .NET Core Blimey! (dotnetsheff Jan 2016)

.NET Core, ASP.NET Core Course, Session 1
.NET Core, ASP.NET Core Course, Session 1.NET Core, ASP.NET Core Course, Session 1
.NET Core, ASP.NET Core Course, Session 1
aminmesbahi
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
CodeFest
 
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
citizenmatt
 
.NET Core, ASP.NET Core Course, Session 3
.NET Core, ASP.NET Core Course, Session 3.NET Core, ASP.NET Core Course, Session 3
.NET Core, ASP.NET Core Course, Session 3
aminmesbahi
 
Overview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardOverview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform Standard
Alex Thissen
 
1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)
Shoaib Ghachi
 
.NET Core, ASP.NET Core Course, Session 2
.NET Core, ASP.NET Core Course, Session 2.NET Core, ASP.NET Core Course, Session 2
.NET Core, ASP.NET Core Course, Session 2
aminmesbahi
 
ASP.NET 5 - Microsoft's Web development platform reimagined
ASP.NET 5 - Microsoft's Web development platform reimaginedASP.NET 5 - Microsoft's Web development platform reimagined
ASP.NET 5 - Microsoft's Web development platform reimagined
Alex Thissen
 
Pottnet Meetup Essen - ASP.Net Core
Pottnet Meetup Essen - ASP.Net CorePottnet Meetup Essen - ASP.Net Core
Pottnet Meetup Essen - ASP.Net Core
Malte Lantin
 
Pottnet MeetUp Essen - ASP.Net Core
Pottnet MeetUp Essen - ASP.Net CorePottnet MeetUp Essen - ASP.Net Core
Pottnet MeetUp Essen - ASP.Net Core
Malte Lantin
 
Porting Projects to .NET 5
Porting Projects to .NET 5Porting Projects to .NET 5
Porting Projects to .NET 5
Immo Landwerth
 
.Net overview|Introduction Of .net
.Net overview|Introduction Of .net.Net overview|Introduction Of .net
.Net overview|Introduction Of .net
pinky singh
 
Dive into .Net Core framework
Dive into .Net Core framework Dive into .Net Core framework
Dive into .Net Core framework
ElifTech
 
Presentation1.pptx
Presentation1.pptxPresentation1.pptx
Presentation1.pptx
SubashiniRathinavel
 
.Net Core 1.0 vs .NET Framework
.Net Core 1.0 vs .NET Framework.Net Core 1.0 vs .NET Framework
.Net Core 1.0 vs .NET Framework
Wyn B. Van Devanter
 
Whats new in .net for 2019
Whats new in .net for 2019Whats new in .net for 2019
Whats new in .net for 2019
Rory Preddy
 
Modified.net overview
Modified.net overviewModified.net overview
Modified.net overviewFaisal Aziz
 
.Net Core
.Net Core.Net Core

Similar to .NET Core Blimey! (dotnetsheff Jan 2016) (20)

.NET Core, ASP.NET Core Course, Session 1
.NET Core, ASP.NET Core Course, Session 1.NET Core, ASP.NET Core Course, Session 1
.NET Core, ASP.NET Core Course, Session 1
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
 
.NET Core, ASP.NET Core Course, Session 3
.NET Core, ASP.NET Core Course, Session 3.NET Core, ASP.NET Core Course, Session 3
.NET Core, ASP.NET Core Course, Session 3
 
Overview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardOverview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform Standard
 
1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)
 
.NET Core, ASP.NET Core Course, Session 2
.NET Core, ASP.NET Core Course, Session 2.NET Core, ASP.NET Core Course, Session 2
.NET Core, ASP.NET Core Course, Session 2
 
ASP.NET 5 - Microsoft's Web development platform reimagined
ASP.NET 5 - Microsoft's Web development platform reimaginedASP.NET 5 - Microsoft's Web development platform reimagined
ASP.NET 5 - Microsoft's Web development platform reimagined
 
Pottnet Meetup Essen - ASP.Net Core
Pottnet Meetup Essen - ASP.Net CorePottnet Meetup Essen - ASP.Net Core
Pottnet Meetup Essen - ASP.Net Core
 
Pottnet MeetUp Essen - ASP.Net Core
Pottnet MeetUp Essen - ASP.Net CorePottnet MeetUp Essen - ASP.Net Core
Pottnet MeetUp Essen - ASP.Net Core
 
Porting Projects to .NET 5
Porting Projects to .NET 5Porting Projects to .NET 5
Porting Projects to .NET 5
 
.Net overview|Introduction Of .net
.Net overview|Introduction Of .net.Net overview|Introduction Of .net
.Net overview|Introduction Of .net
 
Introduction to .net
Introduction to .netIntroduction to .net
Introduction to .net
 
Dive into .Net Core framework
Dive into .Net Core framework Dive into .Net Core framework
Dive into .Net Core framework
 
Presentation1.pptx
Presentation1.pptxPresentation1.pptx
Presentation1.pptx
 
.Net Core 1.0 vs .NET Framework
.Net Core 1.0 vs .NET Framework.Net Core 1.0 vs .NET Framework
.Net Core 1.0 vs .NET Framework
 
Whats new in .net for 2019
Whats new in .net for 2019Whats new in .net for 2019
Whats new in .net for 2019
 
Modified.net overview
Modified.net overviewModified.net overview
Modified.net overview
 
.Net Core
.Net Core.Net Core
.Net Core
 
Introduction to .NET Framework
Introduction to .NET FrameworkIntroduction to .NET Framework
Introduction to .NET Framework
 

Recently uploaded

May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 

Recently uploaded (20)

May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 

.NET Core Blimey! (dotnetsheff Jan 2016)

  • 2. This is Matt Ellis He works for Microsoft, and is a developer on the .NET Core team. This is not me.
  • 3. This is Matt Ellis He works for JetBrains, and is an interested amateur in .NET Core. This is me.
  • 4. What is .NET Core? New .NET stack - CLR + BCL Open Source Cross platform Standalone -
 per-application installs Factored for modularity - “cloud optimised” Everything ships as NuGet packages, including the runtime Not finished…
 RTM Q1 2016 (ish)
  • 5. .NET Core != .NET Framework NOT a new version of the .NET Framework • .NET Framework is going nowhere • .NET Core is 5.0 1.0
 .NET Framework is 4.6 • .NET Core is a fork of the .NET Framework
 Code merged back to TFS • .NET Core is (currently) a strict subset of the .NET Framework • Missing pieces in .NET Core
 Windows: WinForms, WPF, COM, etc.
 Platform: AppDomains, Remoting, Reflection.Emit, etc. • Different constraints:
 Ship cycles, compatibility, system wide install
  • 6. Why? Multiple .NET stacks. Incompatibilities Portable Class Libraries
 not scalable Cross platform Independent release cycles
 Runtime, BCL, apps Nano Server Tidy up
 15 years of evolution
  • 8. Why? Multiple .NET stacks. Incompatibilities Portable Class Libraries
 not scalable Cross platform Independent release cycles
 Runtime, BCL, apps Nano Server Tidy up
 15 years of evolution
  • 10. How do I get it? NuGet
  • 11. How do I get it? .NET CLI tools (née DNX) Official installer from dotnet.github.io dotnet.exe, compilers (csc, vbc, fsc, ilc), NuGet,
 own .NET Core instance (runtime + fx) dotnet.exe is a driver for other commands e.g. dotnet foo simply executes dotnet-foo No more dnvm - runtime is genuine NuGet dependency now (“runtime.osx….” packages) Global package cache dotnet compile dotnet-compile dnvm runtime.osx.… dotnet.exe
  • 12. How do I get it? Build it from source!
  • 14. CoreRT (née .NET Native) Alternative runtime (optimisation) • AOT compilation (RyuJIT → Native) • Compiles all dependencies
 Tree shaking • Reflection? Via xml! • Open Source (dotnet/corert) • Previously Windows Store only
 Now includes Mac + Linux (!)
 • ILtoCPP - IL → C++ → native
 LLILC - LLVM based JIT/AOT
  • 15. CoreCLR The new runtime.
  • 16. dotnet/coreclr JIT compiler (RyuJIT), Garbage Collector, Platform Abstraction Layer - C++ mscorlib (tightly coupled to runtime) - C# PAL - OS and platform differences. E.g. exception handling, threads, etc.
 P/Invoke to OS, FEATURE #ifdefs Book of the Runtime! Mirror back to TFS
  • 18. dotnet/corefx Factored for modularity - each solution/assembly is a package Some platform specific implementations, e.g. System.Console, Process.Interop.Unix.cs, etc. Might throw PlatformNotSupportedException
 (e.g. Console.get_ForegroundColor ) Build is based on project.json, packages as references Mirrored to TFS + .NET Framework High compatibility bar for changes, transparent API review process Console.get_ForegroundColor PlatformNotSupportedException
  • 19. AppModels Or: How do you run a .exe on Unix?
  • 20. How the application is hosted and run Environmental services What is an AppModel? Bootstrap the CLR Execute the application
  • 21. .NET Framework AppModels .NET .exe Originally a native stub that loaded the CLR (x86 only!) Special cased by OS loader since Windows XP Loads mscoree.dll, which initialises CLR and executes app IIS/asp.net Pre-IIS 7 - ISAPI filter IIS 7 directly integrates CLR Pipes requests/responses to managed code Lifetime management Windows Phone / Windows Store Magic! “Application host” loads CLR Integrates with environment events. E.g. suspend and resume applications Pre-compiled / .NET Native
  • 22. corerun .NET CLI Windows 10 UWP Applications .NET Core AppModels coreconsole / osxcorebundlerun
  • 23. .NET CLI (née DNX) Dot NET Execution Environment started with ASP.NET Core Targets .NET Core /
 .NET Framework / Mono Self contained .NET Core environment Changes project system
 Reference packages, not assemblies More…
  • 24. • Packages for runtime and BCL • BCL factored into many packages • NuGet at heart of project system (.xproj) • NuGet is the new Portable Class Library NuGet Bleeding edge.
  • 25. How does it work? .NET Core app .NET Core package PCL package .NET Framework package .NET Framework app ?
  • 26. Platforms • No such thing as a .NET Core “app”
 App runs on a version of a platform, e.g. .NET CLI, .NET Framework, Windows UWP • Platforms conform to a specific version of the .NET Standard Platform • Packages target a real platform (e.g. lib/net46 ) or a specific version of the .NET Standard Platform - e.g. lib/netstandard1.3 • NuGet understands mappings between real platforms and n e tstandard versions (and PCLs) • Can consume any compatible platform • E.g. dnxcore50 maps to netstandard1. ; net46 to netstandard1.3
 .NET CLI apps can consume net46 packages. But not vice versa (however, net461 can) libnet46 libnetstandard1.3 netstandardapp1.4 netstandard1.4 net46 netstandard1.3 net46 net461 netstandard
  • 27. What is the .NET Standard Platform? Replacing Portable Class Libraries
  • 28. PCL Refresher 1. A PCL is a class library that needs to run on multiple platforms and versions
 (e.g. .NET Framework, Windows Phone, Xamarin) 2. It defines a common subset of APIs that are available on ALL of the required versions of these platforms - a “Profile” 3. When targeting a Profile, the compiler references a set of Reference Assemblies
 These describe the API with empty types, and forward types to correct assemblies 4. At runtime, the real assemblies on the target platform implement the APIs
 Can also forward types to other assemblies
  • 29. Portable Class Libraries • PCL hides platform specific implementation details behind a common API contract (reference assembly) • Profiles do not scale. The more versions and platforms, the more Profiles… • A published PCL lists all supported platforms
 If a new platform is created, it isn’t supported
  • 30. Reference Assemblies in .NET Core • Allows for different implementations on different platforms and operating systems, but common API • Allows for refactoring the BCL! • Reference Assemblies shipped in NuGet
 packages in ref folder • PCL consuming a package will use the
 Reference Assembly at compile time, but
 implementation assembly at runtime ref
  • 31. What is the .NET Standard Platform? • A versioned collection of API contracts
 Reference assemblies • Each version is a superset of the previous
 version - backwards compatible • Similar to PCL Profile, but flipped
 Not list of supported platforms, but a single platform for other platforms to conform to • Replaces PCLs with a single versioned moniker. Creating a new platform is easy • Only works with .NET Framework ≧ 4.5!
  • 32. Huh? Check out standard-platform.md in github.com/dotnet/corefx docs
  • 33. How does this affect us? Creating NuGet packages Target netstandard
 if possible
 No implicit platform dependencies Explicitly specify used dependencies Version of dependencies is irrelevant
 Implied by .NET Standard Platform Include PCL and
 reference assembly
 if required
  • 34. New Target Framework Monikers Brand new • dotnet - - .NET Core contracts. Replaces portable- . Use this!
 Supports .Net Framework 4.5 and later (inc. Xamarin) • dnx451 , dnx46 - - Application running on .NET CLI • uap10.0 - .NET Core 5.0 on Windows. AKA 
 (UWP apps. Follows netcore45 / win8 , netcore451 / win81) netstandard1.X netstandardapp1.X netcore50 netcore45 win8 netcore451 win81 uap10.0 portable-*
  • 35. What does this mean for Mono? Lots. Or not much. Mono == .NET Framework Mono already cross platform Mono’s focus is non-Windows mobile (Xamarin) .NET Core’s focus is server and Windows UWP Mono can include CoreCLR + CoreFX code
  • 36. Where does Roslyn fit in? Orthogonal. Runs on .NET Framework + Mono Ships with .NET CLI
 running on .NET Core Compiling CoreCLR + CoreFX
 currently requires Windows/Mono C# compiler
 written in C#
  • 37. .NET Core Cross platform Open Source NuGet everywhere Bleeding edge Icons: http://icons8.com/ The future of .NET
  • 38. Links CoreCLR - https://github.com/dotnet/coreclr CoreFX - https://github.com/dotnet/corefx CoreRT (.NET Native) - https://github.com/dotnet/corert .NET CLI - https://github.com/dotnet/cli NuGet - http://docs.nuget.org @citizenmatt