asp.net core: the best of the new bits
Post on 14-Apr-2017
740 Views
Preview:
TRANSCRIPT
ASP.NET Core: The best of the
new bitsKen Cenerelli
Microsoft MVP
Ken_Cenerelli@Outlook.com@KenCenerelli
About Me
Twitter: @KenCenerelliEmail: Ken_Cenerelli@Outlook.comBlog: kencenerelli.wordpress.comLinkedIn: 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
.NET CoreFirst things first…
.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 packagesCommon
.NET Framework 4.6 .NET Core 1.0 Full .NET Framework for any scenario and
library support on WindowsModular libraries & runtime optimized
for server and cloud workloads
WPF ASP.NET (4 and Core 1.0)
Windows Forms
ASP.NET Core 1.0
Universal Windows Apps
Core CLR .Net Native
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
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
7
DifferencesFeature .NET Framework .NET CoreLibrary 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
9
Strange Times…
Visual Studio 2015 and ASP.NET Core: Support for npm, bower, gulp, grunt, etc.
npm bower grunt gulp
Responsive and plug-in free
http://bradfrost.com/blog/post/this-is-the-web/
Responsive and plug-in free
http://bradfrost.com/blog/post/this-is-the-web/
Responsive and plug-in free
http://bradfrost.com/blog/post/this-is-the-web/
ASP.NET Core
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
ASP.NET 4.6
ASP.NET 4.6 and ASP.NET Core 1.0
ASP.NET Core 1.0
.NET Framework 4.6
.NET framework libraries
Compilers and runtime components (.NET Compiler Platform: Roslyn, C#, VB, F# Languages, RyuJIT, SIMD)
.NET Core 1.0
.NET core libraries
ASP.NET Core 1.0 Roadmap
https://github.com/aspnet/home/wiki/roadmap
Milestone Release weekBeta6 27 Jul 2015Beta7 2 Sep 2015Beta8 15 Oct 2015RC1 Nov 2015RC2 mid-May 20161.0.0 late-June 2016
.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 packagesCommon
.NET Framework 4.6 .NET Core 1.0 Full .NET Framework for any scenario and
library support on WindowsModular libraries & runtime optimized
for server and cloud workloads
WPF ASP.NET (4 and Core 1.0)
Windows Forms
ASP.NET Core 1.0
Universal Windows Apps
Core CLR .Net Native
ASP.NET 2016 in a Nutshell
.NET Framework 4.6 .NET Core 1.0 Full .NET Framework for any scenario and
library support on WindowsModular libraries & runtime optimized
for server and cloud workloads
ASP.NET 4.6 / System.Web
MVC 5.x
ASP.NET Core 1.0 features:MVC + Web API
Core CLR .Net NativeASP.NET Core 1.0
Web API 2.2
WebForms
Visual Studio (C# in both, VB.NET coming soon to ASP.NET Core)
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?• 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
22
ASP.NET Core ~ The features•Hosting• Kestrel, Startup
•Middleware• Routing, authentication, static files, diagnostics, error handling, session, CORS, localization, custom
•Dependency Injection•Configuration• Logging• Identity
23
ASP.NET Core ~ Which editors & IDEs?•Visual Studio 2015 Update 2 including Community•Visual Studio Code with C# extension•An OmniSharp-enabled editor:• 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
MVC + Web API + Web Pages =
ASP.NET Core MVC
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
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
28
Deployment portability•Two main models:• Portable Apps• Self-contained Apps
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
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
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
• •
Tooling Changes
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
34
ASP.NET Core SDK•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
DemoASP.NET Core 1.0 from the SDK
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
DemoASP.NET Core 1.0 from the IDE
TagHelpers: Evolution of HTML Forms
•HTML helpers expressed as tagsEx. 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
TagHelpers
DemoTagHelpers
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
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
Web APIs
In ASP.NET 4.6 – Separate Stack
ASP.NET Core
Web API
JSON XML
Web Forms
HTML
MVCWeb Pages
In ASP.NET Core:API services are an ASP.NET Core feature
Microsoft /web
®
Sample Read-only Model and Controllerpublic class Person{ public int Id { get; set; } public string Name { get; set; }}
Step 1:Create a Model
[Route("api/[controller]")]public class PersonController : Controller{ List<Person> people; public PersonController() { this.people = new List<Person>(); this.people.AddRange(new Person[] { new Person { Id = 1, Name = "Chuck Norris" }, new Person { Id = 2, Name = "David Carradine" }, new Person { Id = 3, Name = "Bruce Lee" } }); }}
Step 2:Make an API Controller
Microsoft /web
®
Read-only Controller Actions to return data// GET /api/person[HttpGet]public IEnumerable<Person> Get(){ return this.people;}
Step 3:Return everything
// GET /api/person/5[HttpGet("{id}")]public Person Get(int id){ return this.people.FirstOrDefault(x => x.Id == id);}
Step 4:Return one item
Routing a Web APIapp.UseMvc(routes =>{ routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}");});
Routing:Familiar syntax, conventional approach
[Route("api/[controller]")]public class PersonController : Controller {
[HttpGet("{id}")] public Person Get(int id) { /* ... */ }}
Attribute routing:Easy to configure
ResourcesFeedback and questions http://asp.nethttp://get.asp.nethttp://docs.asp.nethttp://aka.ms/webcamps-training-kit
top related