These slides provide an overview of .NET Core and also the changes to ASP.NET Core after the RC2 release. There is also some demos and source code.
This talk was given at the Let's Dev This Roadshow in London, ON on May 26, 2016.
Ken CenerelliWriter | .NET Developer | Microsoft MVP | Public Speaker | Microsoft Azure Nerd
2. About Me
Twitter: @KenCenerelli
Email: Ken_Cenerelli@Outlook.com
Blog: kencenerelli.wordpress.com
LinkedIn: linkedin.com/in/kencenerelli
Bio:
Programmer Writer / Content Developer
Microsoft MVP - Visual Studio and
Development Technologies
Microsoft TechNet Wiki Guru
Co-Organizer of CTTDNUG
Technical reviewer of multiple books
CTTDNUG
Ken Cenerelli
4. .NET 2016 – 10K foot view
Next gen JIT (RyuJIT)
SIMD
Runtime
Components Compilers
.NET Compiler Platform (Roslyn)
Languages innovation
.NET Core 1.0 Libraries
.NET Framework 4.6 Libraries
NuGet packages
.NET Framework 4.6 .NET Core 1.0
Full .NET Framework for any scenario and
library support on Windows
Modular libraries & runtime optimized for
server and cloud workloads
5. About .NET Core
• .NET Core is a subset of the .NET Framework
• Many .NET Framework components are not in .NET Core
• .NET Core is completely modularized. Each component is
distributed via NuGet
• Apps can be updated independently and do not rely on major
framework releases
• Deployment package includes everything needed to run
• .NET Core will run on Linux, Windows, and OSX
5
6. Two parts of .NET Core
•Runtime/Libraries:
• CLR, libraries, compilers, etc.
• Won’t change before RTM
•Tooling:
• Supports .NET Core and ASP.NET Core, including the new
command line tools and bits that plug into Visual Studio
& Visual Studio Code
• Will change before RTM
6
7. Differences
7
Feature .NET Framework .NET Core
Library Installation Centralised Distributed with each app
Updates
One big update. You better get
your app ready
Updates to framework are
independent of app.
Update NuGet packages
when you are ready
Platforms Windows is the only one for me
I love everyone!
Windows, OSX, Linux
Base Class Library
All the things! You get the entire
BCL
All the things!
You get the entire BCL
Credit: https://gooroo.io/GoorooTHINK/Article/16732/Introduction-to-NET-Core/22177
15. What about ASP.NET 5?
• ASP.NET Core 1.0 was previously called ASP.NET 5
• It was renamed in January 2016
• You may still see it referred to as ASP.NET 5 in Visual
Studio and in some docs
• Was updated in latest ASP.NET Core Release Candidate 2
17. ASP.NET Core 1.0 Roadmap
https://github.com/aspnet/home/wiki/roadmap
Milestone Release week
Beta6 27 Jul 2015
Beta7 2 Sep 2015
Beta8 15 Oct 2015
RC1 Nov 2015
RC2 mid-May 2016
1.0.0 late-June 2016
18. .NET 2016 – 10K foot view
Next gen JIT (RyuJIT)
SIMD
Runtime
Components Compilers
.NET Compiler Platform (Roslyn)
Languages innovation
.NET Core 1.0 Libraries
.NET Framework 4.6 Libraries
NuGet packages
.NET Framework 4.6 .NET Core 1.0
Full .NET Framework for any scenario and
library support on Windows
Modular libraries & runtime optimized for
server and cloud workloads
19. ASP.NET 2016 in a Nutshell
.NET Framework 4.6 .NET Core 1.0
Full .NET Framework for any scenario and
library support on Windows
Modular libraries & runtime optimized for
server and cloud workloads
20. ASP.NET Core 1.0 – Key Values
Choose your Editors
and Tools
Open Source
with Contributions Cross-PlatformOSS
Seamless transition
from on-premises to cloud
Faster Development CycleTotally Modular
Fast
21. ASP.NET Core ~ What is it?
21
• ASP.NET Core 1.0 is a console app
• In RC1, an ASP.NET application was a class library that contained a
Startup.cs class
• As of RC2, an ASP.NET Core application is a .NET Core Console application
that calls into ASP.NET specific libraries
• So code that used to live in the ASP.NET Hosting libraries and
automatically runs your Startup.cs now lives inside a Program.cs
23. ASP.NET Core ~ Which editors & IDEs?
•Visual Studio 2015 Update 2 including Community
•Visual Studio Code with C# extension
•An OmniSharp-enabled editor:
23
• Atom • Emacs
• Brackets • Sublime Text
• Yeoman • Vim
24. ASP.NET Core ~ What can you do?
•ASP.NET
• MVC Web Apps in C#
• Web API apps
• Console apps
• .NET Core compatible class library
•Signal R and Web Pages are coming after RTM
24
26. ASP.NET Core MVC
•One set of concepts – remove duplication
•Web UI and Web APIs
•Built on ASP.NET Core
•Supports .NET Core
•Runs on IIS or self-hosted
•Deep integration with DI
26
27. OWIN (Open Web Interface for .NET)
• OWIN in an open, community owned specification
• OWIN defines pluggable middleware and hosting
• ASP.NET 4.5 and ASP.NET Core 1.0 both support OWIN
29. Portable Apps
•Default application type in .NET Core
•Require .NET Core to be installed on the target
machine
•Your application is portable between installations of
.NET Core
•No need to decide upfront which OSes your app will
run on
29
30. Self-contained Apps
•All app dependencies, including the .NET Core
runtime, is part of the application
•The app is larger, but also capable of running on any
.NET Core supported platforms with the correct
native dependencies
•Need to make an explicit choice which platforms
your application needs to run on during dev
30
31. Setting Portability
• Portable: • Self Contained:
• Target .NET Core libraries
in project.json
• Remove any "type":
"platform" properties
• Add a runtimes node in
your project.json
• •
31
33. What’s new in ASP.NET Core RC2?
•.NET CLI (SDK) and IDE updates
•Tag Helpers
•IIS support baked in
•Host RC2 apps in Azure App Service
•Docker support with a new version of Docker Tools
for Visual Studio 2015
33
34. ASP.NET Core SDK
34
•The .NET Core SDK includes enough software to
build an app
•The SDK gives you both the .NET Core Tools and a
copy of .NET Core
•https://www.microsoft.com/net/core#windows
36. ASP.NET Core IDE
•The best way to develop with .NET Core on Windows
is to download the Visual Studio official MSI Installer
and the latest NuGet Manager extension for Visual
Studio
•https://www.microsoft.com/net/core#windows
36
38. TagHelpers: Evolution of HTML Forms
• HTML helpers expressed as tags
Ex. Instead of:
@Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
Write this:
<label asp-for="UserName" class="col-md-2 control-label"></label>
• Easier to customize with more attributes
• Work seamlessly with the HTML editor
• Markup now looks like HTML and it comes with full
IntelliSense
41. What about Entity Framework?
•EF6.x most current and runs on .NET Framework 4.6
•Entity Framework 7 renamed to Entity Framework
Core 1.0
•EF Core is a new code base that does not inherit all
the features and API surface of EF6.x
•EF6.x will continue to be a supported for some time
41
42. When to use EF Core?
•EF6.x will still be the most suitable choice for most
applications
•EF Core recommended for:
• New applications that do not need features that are not
yet implemented in EF Core
• Applications that target .NET Core, such as Universal
Windows Platform (UWP) and ASP.NET Core apps
42
Session goals:
Explain what will be covered for the day
Explain four foundational topics everyone needs to be familiar with to get started
Visual Studio 2015
ASP.NET Core (previously know as ASP.NET 5)
Package Managers – what they are, how they fit in with ASP.NET
Azure – easy to sign up, activate MSDN benefits
NuGet is similar to Maven
.NET Core RC2 is supported on the following platforms.
Red Hat Enterprise Linux 7.2
Centos 7.1
Debian 8.2+
Ubuntu 14.04 (16.04 support is coming at RTM)
Linux Mint 17+
OS X 10.11
Windows 7+ / Windows Server 2012 R2+
Windows Nano Server TP5
- The .NET Foundation includes representatives from, among others, Microsoft, GitHub, and Xamarin.
npm is the default package manager for the JavaScript runtime environment Node.js.
Bower is a package management system for client-side programming.
Grunt is a JavaScript Task Runner.
Gulp is a JavaScript automation tool.
If you are using VS 2015 and ASP.NET 5, Visual Studio will install npm and gulp for you automatically.
Source: http://bradfrost.com/blog/post/this-is-the-web/Images are under Creative Commons Attribution License
Key message: Differentiate the purpose and scenarios between .NET Framework and .NET Core. They Key point on .NET Core is that it’s self-contained and specialized on specific workloads. Make sure that we make the point that BOTH are valid. There is no decrease in investment on the .NET Framework side.
Transition. There is a common shared layer to these 2 pieces
ASP.NET Core is a new open-source and cross-platform framework for building modern cloud-based Web applications using .NET.
ASP.NET 4.6 is the more mature platform. It's battle-tested and released and available today.
Totally Modular – opt into the files you want
Faster Development Cycles – no more compilation needed, just save and refresh
Cloud – Seamless to the cloud
Cross Platform for Windows, OS, and Linux
Tools – Cross platform editing with VS Code
Open Source – Totally OSS and open for contributions
Fast – One of the fastest frameworks on planet
This alignment means that a single .NET toolchain can be used for both .NET Core Console applications and ASP.NET Core applications.
It also means that customers have more obvious control over the code that hosts and runs their ASP.NET Core app.
Kestrel is a managed web server
Startup defines what you want in your pipeline
Middleware is asynchronous; Can write your own
DI is built-in but can use Auto-Fac or Ninject
Configuration: No web.config; can read from other sources like JSON or XML
Identity for OAuth
OmniSharp is a family of Open Source projects, each with one goal: To enable a great .NET experience in YOUR editor of choice
VSCode is also an OmniSharp enabled editor
- Unified web stack
This slide introduces these features at a high level. The demo for these features is included in the next section.
Anything bolded is a tag helper
Uses HTML attributes instead of C#
1. We’ve seen how ASP.NET provides a common core which supports several different toolsets.
2. [click for first animation] On the left side, we have tools which produce HTML, which will be viewed in browsers by people.
3. [click for second animation] On the right, we have Web API, which produces other formats which are consumed by machines (represented by this happy robot) – JSON, XML, and other custom formats which are read by JavaScript code, other programs, other servers, etc.