SlideShare a Scribd company logo
1 of 39
Download to read offline
.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
(project.json/.xproj)
• .NET Standard Platform
• NuGet is the new Portable Class
Library
NuGet
.NET Standard Platform
How does it work?
.NET Core app

.NET Core package
PCL package
.NET Framework package
.NET Framework app
 ?
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)
• Reference assemblies allow moving implementations to other assemblies
• Profiles do not scale. The more versions and platforms, the more Profiles…
• A published PCL lists all supported platforms (e.g. portable-win+net40+wp)

If a new platform is created, it isn’t supported
• Profiles need to be installed

How does this work in the app-local, NuGet-based .NET Core world?
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
• Consuming a package will use the

reference assembly at compile time, but

implementation assembly at runtime
ref
What is the .NET Standard Platform?
Abstraction for platforms
.NET Standard Platform
• A new, versioned, abstract platform that all other platforms can map to
• An app/lib can target a version of the .NET Standard Platform

Can consume any package from any platform that is compatible with that version of
the .NET Standard Platform
• E.g. .NET Framework 4.5.2 maps to .NET Standard Platform 1.2

A .NET Framework 4.5.2 app/lib can consume any package that targets any platform that
maps to .NET Standard Platform 1.2 or earlier
• NuGet knows the mapping

E.g. libnet452 is same as libnetstandard1.2 , as is
• Equivalent of the PCL profile, but less explicit
libnet452 libnetstandard1.2 libwpa81
.NET Standard Platform Versions
Platforms
• All platforms conform to a specific version of the .NET Standard Platform
• Packages can target a concrete platform (e.g. lib/net46 ) or a specific version of
the .NET Standard Platform (e.g. lib/netstandard1.3 ). Or both!
• NuGet understands mappings between real platforms and netstandard versions

(and PCLs)
• Can consume any compatible platform
• Replaces PCLs with a single versioned moniker. Creating a new platform is easy
• Only works with .NET Framework ≧ 4.5!
libnet46
libnetstandard1.3
netstandard
Huh?
Check out standard-platform.md in github.com/dotnet/corefx docs
How does this affect us?
Creating NuGet packages
Target netstandard

if possible

Specify .NET Standard
Library dependency?
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 - Windows 10 apps

(Confusingly AKA , following on from netcore45 / win8 and
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
(but getting there)
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

Calling The Notes C Api From Lotus Script
Calling The Notes C Api From Lotus ScriptCalling The Notes C Api From Lotus Script
Calling The Notes C Api From Lotus Scriptdominion
 
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 PlatformsAniruddha Chakrabarti
 
Introduction to dot net
Introduction to dot netIntroduction to dot net
Introduction to dot netQIANG XU
 
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
 
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 BOFJeff Squyres
 
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019corehard_by
 
Introduction to the LLVM Compiler System
Introduction to the LLVM  Compiler SystemIntroduction to the LLVM  Compiler System
Introduction to the LLVM Compiler Systemzionsaint
 
Web technology slideshare
Web technology slideshareWeb technology slideshare
Web technology slideshareGuruAbirami2
 
.NET Core: a new .NET Platform
.NET Core: a new .NET Platform.NET Core: a new .NET Platform
.NET Core: a new .NET PlatformAlex Thissen
 
LLVM Compiler - Link Time Optimization
LLVM Compiler - Link Time OptimizationLLVM Compiler - Link Time Optimization
LLVM Compiler - Link Time OptimizationVivek Pansara
 
Open MPI new version number scheme and roadmap
Open MPI new version number scheme and roadmapOpen MPI new version number scheme and roadmap
Open MPI new version number scheme and roadmapJeff Squyres
 
BKK16-106 ODP Project Update
BKK16-106 ODP Project UpdateBKK16-106 ODP Project Update
BKK16-106 ODP Project UpdateLinaro
 
Using Perforce Streams to Optimize Development of Flash Memory Solutions
Using Perforce Streams to Optimize Development of Flash Memory SolutionsUsing Perforce Streams to Optimize Development of Flash Memory Solutions
Using Perforce Streams to Optimize Development of Flash Memory SolutionsPerforce
 
ASP.NET Session 1
ASP.NET Session 1ASP.NET Session 1
ASP.NET Session 1Sisir Ghosh
 
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0Antonio Chagoury
 
Modified.net overview
Modified.net overviewModified.net overview
Modified.net overviewFaisal Aziz
 
Parallel language and compiler
Parallel language and compilerParallel language and compiler
Parallel language and compilerSVijaylakshmi
 

What's hot (20)

Calling The Notes C Api From Lotus Script
Calling The Notes C Api From Lotus ScriptCalling The Notes C Api From Lotus Script
Calling The Notes C Api From Lotus Script
 
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
 
Introduction to dot net
Introduction to dot netIntroduction to dot net
Introduction to dot net
 
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...
 
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
 
LLVM
LLVMLLVM
LLVM
 
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
 
LLVM Compiler
LLVM CompilerLLVM Compiler
LLVM Compiler
 
Introduction to the LLVM Compiler System
Introduction to the LLVM  Compiler SystemIntroduction to the LLVM  Compiler System
Introduction to the LLVM Compiler System
 
Web technology slideshare
Web technology slideshareWeb technology slideshare
Web technology slideshare
 
.NET Core: a new .NET Platform
.NET Core: a new .NET Platform.NET Core: a new .NET Platform
.NET Core: a new .NET Platform
 
LLVM Compiler - Link Time Optimization
LLVM Compiler - Link Time OptimizationLLVM Compiler - Link Time Optimization
LLVM Compiler - Link Time Optimization
 
Open MPI new version number scheme and roadmap
Open MPI new version number scheme and roadmapOpen MPI new version number scheme and roadmap
Open MPI new version number scheme and roadmap
 
BKK16-106 ODP Project Update
BKK16-106 ODP Project UpdateBKK16-106 ODP Project Update
BKK16-106 ODP Project Update
 
Using Perforce Streams to Optimize Development of Flash Memory Solutions
Using Perforce Streams to Optimize Development of Flash Memory SolutionsUsing Perforce Streams to Optimize Development of Flash Memory Solutions
Using Perforce Streams to Optimize Development of Flash Memory Solutions
 
ASP.NET Session 1
ASP.NET Session 1ASP.NET Session 1
ASP.NET Session 1
 
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
A Sneak Peek At Visual Studio 2010 And .Net Framework 4.0
 
Eclipse - Installation and quick start guide
Eclipse - Installation and quick start guideEclipse - Installation and quick start guide
Eclipse - Installation and quick start guide
 
Modified.net overview
Modified.net overviewModified.net overview
Modified.net overview
 
Parallel language and compiler
Parallel language and compilerParallel language and compiler
Parallel language and compiler
 

Viewers also liked

Viewers also liked (12)

o-net
 o-net o-net
o-net
 
CPCA_2015ConfProgram.vfp1
CPCA_2015ConfProgram.vfp1CPCA_2015ConfProgram.vfp1
CPCA_2015ConfProgram.vfp1
 
Moda_City_Time
Moda_City_TimeModa_City_Time
Moda_City_Time
 
Chính sách quảng cáo facebook mới nhất dành cho ngành thẫm mỹ 2017
Chính sách quảng cáo facebook mới nhất dành cho ngành thẫm mỹ 2017 Chính sách quảng cáo facebook mới nhất dành cho ngành thẫm mỹ 2017
Chính sách quảng cáo facebook mới nhất dành cho ngành thẫm mỹ 2017
 
1
11
1
 
OET Bearing Holder V 2.0
OET Bearing Holder V 2.0OET Bearing Holder V 2.0
OET Bearing Holder V 2.0
 
Fahrenheit 451 Collage
Fahrenheit 451 CollageFahrenheit 451 Collage
Fahrenheit 451 Collage
 
CampeloEMGT7019-8week4
CampeloEMGT7019-8week4CampeloEMGT7019-8week4
CampeloEMGT7019-8week4
 
Diagnosis.and.treatment.of.myocarditis parsamed.ir
Diagnosis.and.treatment.of.myocarditis parsamed.irDiagnosis.and.treatment.of.myocarditis parsamed.ir
Diagnosis.and.treatment.of.myocarditis parsamed.ir
 
Qui gardera les gardiens? (Présentation FUQAC 2012)
Qui gardera les gardiens? (Présentation FUQAC 2012)Qui gardera les gardiens? (Présentation FUQAC 2012)
Qui gardera les gardiens? (Présentation FUQAC 2012)
 
Decentralized Enforcement of Artifact Lifecycles
Decentralized Enforcement of Artifact LifecyclesDecentralized Enforcement of Artifact Lifecycles
Decentralized Enforcement of Artifact Lifecycles
 
5 Challenges du marketing digital que doivent relever les Agences
5 Challenges du marketing digital que doivent relever les Agences5 Challenges du marketing digital que doivent relever les Agences
5 Challenges du marketing digital que doivent relever les Agences
 

Similar to .NET Core Blimey! (Shropshire Devs Mar 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 1aminmesbahi
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele RialdiCodeFest
 
.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 3aminmesbahi
 
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
 
1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)Shoaib Ghachi
 
.Net overview|Introduction Of .net
.Net overview|Introduction Of .net.Net overview|Introduction Of .net
.Net overview|Introduction Of .netpinky singh
 
Porting Projects to .NET 5
Porting Projects to .NET 5Porting Projects to .NET 5
Porting Projects to .NET 5Immo Landwerth
 
Visual studio 2015 and .net core 5 – get ready to rumble
Visual studio 2015 and .net core 5  – get ready to rumbleVisual studio 2015 and .net core 5  – get ready to rumble
Visual studio 2015 and .net core 5 – get ready to rumbleTadeusz Balcer
 
.Net introduction by Quontra Solutions
.Net introduction by Quontra Solutions.Net introduction by Quontra Solutions
.Net introduction by Quontra SolutionsQUONTRASOLUTIONS
 
Pottnet Meetup Essen - ASP.Net Core
Pottnet Meetup Essen - ASP.Net CorePottnet Meetup Essen - ASP.Net Core
Pottnet Meetup Essen - ASP.Net CoreMalte Lantin
 
Pottnet MeetUp Essen - ASP.Net Core
Pottnet MeetUp Essen - ASP.Net CorePottnet MeetUp Essen - ASP.Net Core
Pottnet MeetUp Essen - ASP.Net CoreMalte Lantin
 
Dotnet interview qa
Dotnet interview qaDotnet interview qa
Dotnet interview qaabcxyzqaz
 
.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 2aminmesbahi
 
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 reimaginedAlex Thissen
 
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 StandardAlex Thissen
 

Similar to .NET Core Blimey! (Shropshire Devs Mar 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
 
.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
 
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)
 
1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)
 
.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
 
Porting Projects to .NET 5
Porting Projects to .NET 5Porting Projects to .NET 5
Porting Projects to .NET 5
 
Visual studio 2015 and .net core 5 – get ready to rumble
Visual studio 2015 and .net core 5  – get ready to rumbleVisual studio 2015 and .net core 5  – get ready to rumble
Visual studio 2015 and .net core 5 – get ready to rumble
 
Tutorial c#
Tutorial c#Tutorial c#
Tutorial c#
 
.Net introduction by Quontra Solutions
.Net introduction by Quontra Solutions.Net introduction by Quontra Solutions
.Net introduction by Quontra Solutions
 
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
 
Dotnet interview qa
Dotnet interview qaDotnet interview qa
Dotnet interview qa
 
.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
 
.Net framework
.Net framework.Net framework
.Net framework
 
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
 
.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

Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durbanmasabamasaba
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 

Recently uploaded (20)

Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 

.NET Core Blimey! (Shropshire Devs Mar 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 (project.json/.xproj) • .NET Standard Platform • NuGet is the new Portable Class Library NuGet .NET Standard Platform
  • 25. How does it work? .NET Core app .NET Core package PCL package .NET Framework package .NET Framework app ?
  • 26. 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
  • 27. Portable Class Libraries • PCL hides platform specific implementation details behind a common API contract (reference assembly) • Reference assemblies allow moving implementations to other assemblies • Profiles do not scale. The more versions and platforms, the more Profiles… • A published PCL lists all supported platforms (e.g. portable-win+net40+wp)
 If a new platform is created, it isn’t supported • Profiles need to be installed
 How does this work in the app-local, NuGet-based .NET Core world?
  • 28. 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 • Consuming a package will use the
 reference assembly at compile time, but
 implementation assembly at runtime ref
  • 29. What is the .NET Standard Platform? Abstraction for platforms
  • 30. .NET Standard Platform • A new, versioned, abstract platform that all other platforms can map to • An app/lib can target a version of the .NET Standard Platform
 Can consume any package from any platform that is compatible with that version of the .NET Standard Platform • E.g. .NET Framework 4.5.2 maps to .NET Standard Platform 1.2
 A .NET Framework 4.5.2 app/lib can consume any package that targets any platform that maps to .NET Standard Platform 1.2 or earlier • NuGet knows the mapping
 E.g. libnet452 is same as libnetstandard1.2 , as is • Equivalent of the PCL profile, but less explicit libnet452 libnetstandard1.2 libwpa81
  • 32. Platforms • All platforms conform to a specific version of the .NET Standard Platform • Packages can target a concrete platform (e.g. lib/net46 ) or a specific version of the .NET Standard Platform (e.g. lib/netstandard1.3 ). Or both! • NuGet understands mappings between real platforms and netstandard versions
 (and PCLs) • Can consume any compatible platform • Replaces PCLs with a single versioned moniker. Creating a new platform is easy • Only works with .NET Framework ≧ 4.5! libnet46 libnetstandard1.3 netstandard
  • 33. Huh? Check out standard-platform.md in github.com/dotnet/corefx docs
  • 34. How does this affect us? Creating NuGet packages Target netstandard
 if possible
 Specify .NET Standard Library dependency? Explicitly specify used dependencies? Version of dependencies is irrelevant
 Implied by .NET Standard Platform Include PCL and
 reference assembly
 if required
  • 35. 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 - Windows 10 apps
 (Confusingly AKA , following on from netcore45 / win8 and netcore451 / win81) netstandard1.X netstandardapp1.X netcore50 netcore45 win8 netcore451 win81 uap10.0 portable-*
  • 36. 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
  • 37. 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#
  • 38. .NET Core Cross platform Open Source NuGet everywhere Bleeding edge (but getting there) Icons: http://icons8.com/ The future of .NET
  • 39. 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