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
(eventually)
Standalone -

per-application installs
Factored for modularity -
“cloud optimised”
Everything ships as
NuGet packages,
including the runtime
Not finished…
.NET Core != .NET Framework
NOT a new version of the .NET Framework
• .NET Framework is going nowhere
• .NET Core is 5.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?
DNX - Dot Net Execution Environment
DNX maintained by asp.net team
Stable builds on nuget.org

Unstable on myget.org
.NET Core, .NET Fx and ASP.NET teams maintain own .NET Core builds…
dnvm install latest -r coreclr -u
Build from source!
How do I get it?
Architecture
Boxes and bits.
.NET Native
Alternative runtime
• AOT compilation
• Compiles all dependencies

Tree shaking
• Reflection? Via xml!
• Windows Store apps only
• Closed source
• LLILC - LLVM based JIT/AOT (OSS)
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
DNX - .NET Execution
Environment (asp.net)
Windows 10 UWP
Applications
.NET Core AppModels
coreconsole /
osxcorebundlerun
DNX
Dot NET Execution Environment
asp.net 5
Targets .NET Core /

.NET Framework /
Mono
In memory compilation
via Roslyn
Changes project system

Reference packages, not assemblies
More…
• Packages for runtime and BCL
• BCL factored into many packages
• NuGet at heart of project system
(DNX)
• NuGet is the new Portable Class
Library
• Sketchy documentation…
NuGet v3
Bleeding edge.
How does this affect us?
Let NuGet be NuGet
Don’t target a
framework
Add NuGet dependencies
for all BCL assemblies
Specify required versions of
BCL assemblies

Let NuGet sort it out
Effectively, there is no
longer a fixed framework
version to target
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 - DNX targeting .NET Framework 4.5.1, 4.6
• dnxcore50 - DNX targeting .NET Core
• uap10.0 - .NET Core 5.0 on Windows. AKA 

(UWP apps. Follows netcore45 / win8 , netcore451 / win81)
dotnet
dnx451 dnx46
dnxcore50
netcore50
netcore45 win8 netcore451 win81
uap10.0
portable-*
Resolution depends on project type
Project understands dotnet TFM:
(UWP, .NET 4.6, ASP.NET 5)
“Modern PCL” with project.json:
(What is a “Modern PCL”?)
More details on docs.nuget.org
dotnet
What About Compatibility?
All .NET Core packages are PCLs. Kinda.
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
• Profiles do not scale. The more versions and platforms, the more Profiles…
Why is this important?
Isn’t .NET Core a common, compatible, cross platform implementation?
• The BCL is the Base Class Library. It’s low level, and has to worry about
underlying platform differences, e.g. file IO
• The BCL needs to be abstracted away from the platform, to allow for
platform specific implementations. And refactoring!
Reference Assemblies
BCL packages include a Reference
Assembly in ref
• This is referenced at compile time and
provides the contract for the API, just like
PCL Reference Assemblies
• The runtime implementation

(e.g. libnetcore50 ) handles platform/host
specifics
ref
libdnxcore50
Why is this important?
This is how compatibility works
• Reference Assemblies allow consuming .NET Core packages from .NET
Framework and other PCL platforms
• Reference Assembly provides the contract, forwards any types
• Implementation assemblies provide potential platform specific
implementations
Compatibility (not a guarantee)
• .NET Framework 4.5 can consume .NET Core packages
• .NET Core 5.0 is a subset of .NET Framework 4.6

Should be able to consume .NET Framework 4.6 packages
• .NET Core can consume PCL libs that are compatible with System.Runtime.dll
(facade that forwards to e.g. mscorlib.dll)
• A new PCL Profile will include .NET Core (e.g. )

(Not announced as part of NuGet v3 - dotnet is checked before portable-* ?)
portable-dotnet+…+…
Known Unknowns
• How are OS specific implementations going to be shipped? ( runtimes ?)
• Do we need a Reference Assembly for each package?
• Why do we need platform/host TFMs (e.g. dnxcore50 ) when we can specify
dependencies?
dnxcore50
runtimes
http://docs.nuget.org/Create/uwp-create
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
Planned for

.NET Core
Compiling

CoreCLR + CoreFX

currently requires Windows
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://www.github.com/dotnet/coreclr
CoreFX - https://www.github.com/dotnet/corefx
DNX - https://github.com/aspnet/Home
NuGet - http://docs.nuget.org
@citizenmatt

More Related Content

What's hot

.Net Standard 2.0
.Net Standard 2.0.Net Standard 2.0
.Net Standard 2.0
Swaminathan Vetri
 
Dot Net Core
Dot Net CoreDot Net Core
Dot Net Core
Amir Barylko
 
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
 
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
 
OPNFV/Functest: lessons learned and best practices for VNF test automation
OPNFV/Functest: lessons learned and best practices for VNF test automation OPNFV/Functest: lessons learned and best practices for VNF test automation
OPNFV/Functest: lessons learned and best practices for VNF test automation
Valentin Boucher
 
The DNA of OPNFV
The DNA of OPNFVThe DNA of OPNFV
The DNA of OPNFV
Frank Brockners
 
DockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins
DockerCon US 2016 - Extending Docker With APIs, Drivers, and PluginsDockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins
DockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins
Arnaud Porterie
 
.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnet.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnet
Rick van den Bosch
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5
Malam Team
 
Symfony 2 under control
Symfony 2 under controlSymfony 2 under control
Symfony 2 under control
Max Romanovsky
 
What is OPNFV? What does it deliver?
What is OPNFV? What does it deliver?What is OPNFV? What does it deliver?
What is OPNFV? What does it deliver?
Frank Brockners
 
.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0
All Things Open
 
OPNFV: Upstream Headwaters to Full Deployment
OPNFV: Upstream Headwaters to Full DeploymentOPNFV: Upstream Headwaters to Full Deployment
OPNFV: Upstream Headwaters to Full Deployment
OPNFV
 
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
 
XPDS16: Xen Project Weather Report 2016
XPDS16: Xen Project Weather Report 2016XPDS16: Xen Project Weather Report 2016
XPDS16: Xen Project Weather Report 2016
The Linux Foundation
 
ASP.NET on zLinux: A New Workload
ASP.NET on zLinux: A New WorkloadASP.NET on zLinux: A New Workload
ASP.NET on zLinux: A New WorkloadNovell
 
How to Port Your .NET Applications to Linux Using Mono Tools for Visual Studio
How to Port Your .NET Applications to Linux Using Mono Tools for Visual StudioHow to Port Your .NET Applications to Linux Using Mono Tools for Visual Studio
How to Port Your .NET Applications to Linux Using Mono Tools for Visual Studio
Novell
 
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
 
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
 
ClearCase Escape Plan
ClearCase Escape PlanClearCase Escape Plan
ClearCase Escape Plan
Perforce
 

What's hot (20)

.Net Standard 2.0
.Net Standard 2.0.Net Standard 2.0
.Net Standard 2.0
 
Dot Net Core
Dot Net CoreDot Net Core
Dot Net Core
 
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
 
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
 
OPNFV/Functest: lessons learned and best practices for VNF test automation
OPNFV/Functest: lessons learned and best practices for VNF test automation OPNFV/Functest: lessons learned and best practices for VNF test automation
OPNFV/Functest: lessons learned and best practices for VNF test automation
 
The DNA of OPNFV
The DNA of OPNFVThe DNA of OPNFV
The DNA of OPNFV
 
DockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins
DockerCon US 2016 - Extending Docker With APIs, Drivers, and PluginsDockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins
DockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins
 
.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnet.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnet
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5
 
Symfony 2 under control
Symfony 2 under controlSymfony 2 under control
Symfony 2 under control
 
What is OPNFV? What does it deliver?
What is OPNFV? What does it deliver?What is OPNFV? What does it deliver?
What is OPNFV? What does it deliver?
 
.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0
 
OPNFV: Upstream Headwaters to Full Deployment
OPNFV: Upstream Headwaters to Full DeploymentOPNFV: Upstream Headwaters to Full Deployment
OPNFV: Upstream Headwaters to Full Deployment
 
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
 
XPDS16: Xen Project Weather Report 2016
XPDS16: Xen Project Weather Report 2016XPDS16: Xen Project Weather Report 2016
XPDS16: Xen Project Weather Report 2016
 
ASP.NET on zLinux: A New Workload
ASP.NET on zLinux: A New WorkloadASP.NET on zLinux: A New Workload
ASP.NET on zLinux: A New Workload
 
How to Port Your .NET Applications to Linux Using Mono Tools for Visual Studio
How to Port Your .NET Applications to Linux Using Mono Tools for Visual StudioHow to Port Your .NET Applications to Linux Using Mono Tools for Visual Studio
How to Port Your .NET Applications to Linux Using Mono Tools for Visual Studio
 
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...
 
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
 
ClearCase Escape Plan
ClearCase Escape PlanClearCase Escape Plan
ClearCase Escape Plan
 

Similar to .net Core Blimey - Smart Devs UG

.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
 
1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)
Shoaib Ghachi
 
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
 
.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
 
Dive into .Net Core framework
Dive into .Net Core framework Dive into .Net Core framework
Dive into .Net Core framework
ElifTech
 
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 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
 
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
 
ASP.NET vs ASP.NET Core
ASP.NET vs ASP.NET CoreASP.NET vs ASP.NET Core
ASP.NET vs ASP.NET Core
Öğr. Gör. Erkan HÜRNALI
 
.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
 
.Net overview|Introduction Of .net
.Net overview|Introduction Of .net.Net overview|Introduction Of .net
.Net overview|Introduction Of .net
pinky singh
 
.Net Core
.Net Core.Net Core
Tutorial c#
Tutorial c#Tutorial c#
Tutorial c#
Mohammad Faizan
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher
 
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
 
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
 
ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bits
Ken Cenerelli
 

Similar to .net Core Blimey - Smart Devs UG (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
 
1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)1..Net Framework Architecture-(c#)
1..Net Framework Architecture-(c#)
 
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
 
.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
 
Dive into .Net Core framework
Dive into .Net Core framework Dive into .Net Core framework
Dive into .Net Core framework
 
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 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
 
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
 
Introduction to .net
Introduction to .netIntroduction to .net
Introduction to .net
 
ASP.NET vs ASP.NET Core
ASP.NET vs ASP.NET CoreASP.NET vs ASP.NET Core
ASP.NET vs ASP.NET Core
 
.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
 
.Net overview|Introduction Of .net
.Net overview|Introduction Of .net.Net overview|Introduction Of .net
.Net overview|Introduction Of .net
 
.Net Core
.Net Core.Net Core
.Net Core
 
Tutorial c#
Tutorial c#Tutorial c#
Tutorial c#
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET Core
 
Whats new in .NET for 2019
Whats new in .NET for 2019Whats new in .NET for 2019
Whats new in .NET for 2019
 
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
 
ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bits
 

Recently uploaded

JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 

Recently uploaded (20)

JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 

.net Core Blimey - Smart Devs UG

  • 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 (eventually) Standalone -
 per-application installs Factored for modularity - “cloud optimised” Everything ships as NuGet packages, including the runtime Not finished…
  • 5. .NET Core != .NET Framework NOT a new version of the .NET Framework • .NET Framework is going nowhere • .NET Core is 5.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? DNX - Dot Net Execution Environment DNX maintained by asp.net team Stable builds on nuget.org
 Unstable on myget.org .NET Core, .NET Fx and ASP.NET teams maintain own .NET Core builds… dnvm install latest -r coreclr -u
  • 12. Build from source! How do I get it?
  • 14. .NET Native Alternative runtime • AOT compilation • Compiles all dependencies
 Tree shaking • Reflection? Via xml! • Windows Store apps only • Closed source • LLILC - LLVM based JIT/AOT (OSS)
  • 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 DNX - .NET Execution Environment (asp.net) Windows 10 UWP Applications .NET Core AppModels coreconsole / osxcorebundlerun
  • 23. DNX Dot NET Execution Environment asp.net 5 Targets .NET Core /
 .NET Framework / Mono In memory compilation via Roslyn 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 (DNX) • NuGet is the new Portable Class Library • Sketchy documentation… NuGet v3 Bleeding edge.
  • 25. How does this affect us? Let NuGet be NuGet Don’t target a framework Add NuGet dependencies for all BCL assemblies Specify required versions of BCL assemblies
 Let NuGet sort it out Effectively, there is no longer a fixed framework version to target
  • 26. 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 - DNX targeting .NET Framework 4.5.1, 4.6 • dnxcore50 - DNX targeting .NET Core • uap10.0 - .NET Core 5.0 on Windows. AKA 
 (UWP apps. Follows netcore45 / win8 , netcore451 / win81) dotnet dnx451 dnx46 dnxcore50 netcore50 netcore45 win8 netcore451 win81 uap10.0 portable-*
  • 27. Resolution depends on project type Project understands dotnet TFM: (UWP, .NET 4.6, ASP.NET 5) “Modern PCL” with project.json: (What is a “Modern PCL”?) More details on docs.nuget.org dotnet
  • 28. What About Compatibility? All .NET Core packages are PCLs. Kinda.
  • 29. 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
  • 30. Portable Class Libraries • PCL hides platform specific implementation details behind a common API contract • Profiles do not scale. The more versions and platforms, the more Profiles…
  • 31. Why is this important? Isn’t .NET Core a common, compatible, cross platform implementation? • The BCL is the Base Class Library. It’s low level, and has to worry about underlying platform differences, e.g. file IO • The BCL needs to be abstracted away from the platform, to allow for platform specific implementations. And refactoring!
  • 32. Reference Assemblies BCL packages include a Reference Assembly in ref • This is referenced at compile time and provides the contract for the API, just like PCL Reference Assemblies • The runtime implementation
 (e.g. libnetcore50 ) handles platform/host specifics ref libdnxcore50
  • 33. Why is this important? This is how compatibility works • Reference Assemblies allow consuming .NET Core packages from .NET Framework and other PCL platforms • Reference Assembly provides the contract, forwards any types • Implementation assemblies provide potential platform specific implementations
  • 34. Compatibility (not a guarantee) • .NET Framework 4.5 can consume .NET Core packages • .NET Core 5.0 is a subset of .NET Framework 4.6
 Should be able to consume .NET Framework 4.6 packages • .NET Core can consume PCL libs that are compatible with System.Runtime.dll (facade that forwards to e.g. mscorlib.dll) • A new PCL Profile will include .NET Core (e.g. )
 (Not announced as part of NuGet v3 - dotnet is checked before portable-* ?) portable-dotnet+…+…
  • 35. Known Unknowns • How are OS specific implementations going to be shipped? ( runtimes ?) • Do we need a Reference Assembly for each package? • Why do we need platform/host TFMs (e.g. dnxcore50 ) when we can specify dependencies? dnxcore50 runtimes http://docs.nuget.org/Create/uwp-create
  • 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 Planned for
 .NET Core Compiling
 CoreCLR + CoreFX
 currently requires Windows C# compiler
 written in C#
  • 38. .NET Core Cross platform Open Source NuGet everywhere Bleeding edge Icons: http://icons8.com/ The future of .NET
  • 39. Links CoreCLR - https://www.github.com/dotnet/coreclr CoreFX - https://www.github.com/dotnet/corefx DNX - https://github.com/aspnet/Home NuGet - http://docs.nuget.org @citizenmatt