Chris Risner Senior Technical Evangelist ChrisRisner http chrisrisnercom About Me Agenda Why NET on Linux OS X The Easy Way Getting Setup Creating an App Running ASPNET Misc Advanced ID: 742024
Download Presentation The PPT/PDF document "Something has Frozen Over: .NET on Linux..." is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Something has Frozen Over: .NET on Linux and OS X
Chris Risner
Senior Technical Evangelist@ChrisRisnerhttp://chrisrisner.comSlide2Slide3
About MeSlide4
Agenda
Why .NET on Linux / OS X
The Easy WayGetting SetupCreating an AppRunning ASP.NETMisc / AdvancedWrap-upSlide5
Why .NET on Linux / OS X? Slide6
Projects: 1583
Contributors 9045
Stars: 119706
Forks: 23518
TodaySlide7
64-bit JIT + SIMD
Garbage CollectorRuntime components
Compilers
.NET Compiler Platform
(Roslyn)
Languages innovation
.NET Framework 4.6
.NET
Core 5
Fully-featured and integrated
.NET libraries and runtime for Windows
Modular
and optimized
.NET libraries and runtimes
WPF
ASP.NET
(
4 & 5)
Windows Forms
ASP.NET 5
Universal
Windows
Apps
CoreCLR
.
NET Native
Base class libraries
NuGet packages
Libraries
Shared
.NET on Linux and OS X
RC
RCSlide8
Why on Linux?
Developers – New workloads and technologies
Organizations – New market opportunitiesIT - Platform diversificationIT - Server consolidation in the cloudSlide9
Dev Benefits
Customers can run .NET apps and services in Linux
Support in VS for developing xPlat .NET AppsSupport in VS for deploying .NET apps to DockerEdit, compile, and debug .NET code on OS X and Linux.NET Core is open source on GitHubSlide10Slide11
Running .NET on Linux the Easy WaySlide12
Docker
Tools for Visual Studio 2015Currently in preview
Separate installhttp://aka.ms/VSDockerToolsASP.NET 5 templates already part of VS 2015Integrates well with AzurePushes to any Docker
hostSlide13
DEMO: Running ASP.NET on Linux with VSSlide14
Getting SetupSlide15
Getting the bits!
Development
Development/DeploymentSlide16
Installing on OS X
Install
Visual Studio Code
Install
asp.net
from
http://get.asp.net
OR
curl
-
sSL
https://
raw.githubusercontent.com
/
aspnet
/Home/
dev
/
dnvminstall.sh
| DNX_BRANCH=
dev
sh
&& source ~/.
dnx
/
dnvm
/
dnvm.sh
Dnvm
upgrade –r
coreclrSlide17
Installing on Linux
Optionally install
Mono
//More on this later
Install and build
libuv
Install
DNVM
//Much
more on this later
http://
aka.ms/AspNetOnLinux
http://aka.ms/DotNetSettingUpLinuxSlide18
Kestrel
Cross platform Web Server
Built using Libuv (same as Node)Libuv is an async IO libraryOpen Sourcehttps://
github.com/aspnet/KestrelHttpServer
You can run / write your own web server
IIS /
WebListener
also work
http://aka.ms/aspnet5serversSlide19
Creating an AppSlide20
Dev Environment Options
http://
omnisharp.netSlide21
Visual Studio CodeLightweight, cross-plat editor that runs on Windows, OS X and LinuxProvides IntelliSense, colorization, refactoring, etc.Edit, compile, and run apps locally
Debugging support for .NET apps (sort of ;))Open sourceSupport for extensionsSlide22
YeomanScaffolding tool for appsInstalled with NPMMakes creating new projects super easy!
yo aspnetGenerators installed with npmSlide23
DEMO: Creating a Console AppSlide24
What’d we just see?
Dnvm
- .NET Version ManagerDnu - .NET Development UtilityDnx - .NET ExecutionYo – yeoman
Building for Mono and CoreCLRSlide25
Running ASP.NETSlide26
DEMO: Building an ASP.NET AppSlide27
Debugging and Unit TestsSlide28
Debugging
Doesn’t work out of the box
Can work with MonoRequires creating build task using xbuild and creating EXEPossible for ASP.NET but more complexBuilt-in to VS Code comingWorking with CoreCLR
comingSlide29
Unit Testing
Unit test project in Yeoman
Add new commandAdd dependenciesAdd test class(es)Dnx testSlide30
DEMO: Debugging and Unit TestsSlide31
Deployment, Advanced,
MiscSlide32
Deployment
Xcopy deployment to target environment
On-premises, IaaS, Docker, etcDeploy .NET Core with app N
o system wide installation necessaryPackage in
Docker
in VSSlide33
.NET Core On
GitHubSlide34
Calling Native Code
[DllImport("
libc")]private static extern int printf(string format);…printf("Hello, //Codemash 2016!\
n");
// Same as
PInvoke
on WindowsSlide35
Setting the
EnvironmentWindows:
set ASPNET_ENV=DevelopmentOS X / Linux:export ASPNET_ENV=Development(also Staging, Production)Slide36
Performance
https://
github.com/aspnet/benchmarksSlide37Slide38
DEMO: SQLSlide39
WrapupSlide40
Today
Install Visual Studio 2015 on Windows
Manual installs on OS X / LinuxPre-built VM on Azure MarketplaceDocker using dockerfileSlide41
What’s coming?
Remote debugging in VS2015
Local debugging in VS CodePerformance improvementsMore libraries ported to .NET Core.NET Nativedotnet CLISlide42
Prepping your Apps
Creating a new app
Start with VS 2015 ASP.NET 5 templatesCheck out PartsUnlimited sample on GitHubMoving existing appsTransition to ASP.NET 5 on WindowsSlide43
Go Live!
Production approved
Engage directly with teams on GitHubhttp://aka.ms/NetCoreSupportSlide44
MICROSOFT SESSIONS
DayRoom
EventSpeakerThu 8:00AMSalon E
The Hitchhiker's Guide to Azure Mobile Apps
David Giard
Fri 4:00PM
Aloeswood
/Leopardwood
Secrets of Success in the style of GLEE
Jennifer
Marsman
Thu
9:15AM
Mangrove
Something has Frozen Over: .NET on Linux and OS X
Chris Risner
Thu
9:15AM
Salon A
Designing a Game for Mobile
Amanda Lange
Thu 11:45PM
Salon
A
Rise of the Machines
Josh Holmes
Fri 4:00PM
Orange
Cloud-Scale Event Processing with the Reactive Extensions (Rx)
Matthew Podwysocki
Thu 10:30AM
Zambezi
Designing C# 7 in the Open
Kevin Pilch-Bisson
Fri 9:45AM
Aloeswood
/Leopardwood
Big Data for the SQL Ninja
Matt Winkler
Thu
3:30PM
ZambeziCloud Design Patterns for Scalability and PerformanceMatt Johnson
Thu 1:00PMGuava/TamarindGetting Started with nuML, an Open Source .NET Machine Learning LibrarySeth JuarezThu 9:15AMSalon HTracking Real World Web PerformanceNik MolnarThu 9:15AMSagewood/ZebrawoodThe Code Behind the VulnerabilityBarry DorransThu 1:00PMSagewood/ZebrawoodIntroducing the new ASP.NET Authorization and Data Protection StacksBarry DorransSlide45
MVP SESSIONS
DayRoomEvent
SpeakerTue 1:00PMSalon ACross Platform Mobile UI with Xamarin Forms Workshop
Jason Awbrey
Wed 8:00AM
Aloeswood
, Leopardwood
Tune SQL Server Like a Guru! – Part 1
Kevin Boles
Wed 11:45:AM
Cypress
Async Everywhere!
Stephen Cleary
Wed 11:45:AM
Aloeswood
, Leopardwood
Abstract Art: Getting Abstraction “Just Right”
Jeremy Clark
Wed 1:00PM
Aloeswood, Leopardwood
Tune SQL Server Like a Guru! – Part 2
Kevin Boles
Thu 8:00AM
Nile
CQRS 2.0
David Hoerster
Thu 8:00AM
Zambezi
Node.js Crash Course
David Neal
Thu 10:30AM
Sagewood
, Zebrawood
Whose Shoulders are These?
Jack Daniel
Thu 10:30AM
Orange
Bringing Up Our Future – On Mentoring Junior Developers
Sarah Dutkiewicz
Thu 10:30AM
Indigo Bay
Consuming REST APIs, for all interpretations of REST
Darrel MillerThu 10:30AMSalon AA Look at Team Foundation Server 2015 BuildPaul HackerThu 11:45AMIndigo BayCommon TSQL MistakesKevin BolesThu 1:00PM
Aloeswood, LeopardwoodGrowing a Testing^H^H^H^H^H^H^HWhole Quality Team The Hard WayJim HolmesThu 1:00PMSalon DGetting Started with 3D PrintingAdam BarneyThu 1:00PMSalon AHypermedia APIs: The rest of RESTChris MarinosThu 3:30PMSuite 1, Suite 6Why I Left Angular and Knockout for ReactCory HouseThu 3:30PMAloeswood, LeopardwoodLoad Testing Your Web Application in Visual Studio: A Case StudyJames BenderFri 9:45AMSalon DElectronics 101 for IoT DevelopersAdam BarneyFri 9:45AMSalon EConvention Over Configuration: Queueing is EasyMatthew GrovesFri 9:45AMSuite 1, Suite 6“OMG! This Codebase Sucks!” Paying Down Technical Debt While Continuing to Deliver ValueJim HolmesFri 9:45AMMangroveXAML & C# Powered iOS, Android, and Windows appsJames MontemagnoFri 12:15PM
Zambezi
ECMAScript 2015 & JavaScript – Don’t Get Left BehindJared Faris
Fri 4:00PMIndigo Bay
Cross-Platform Desktop Apps with ElectronDavid NealSlide46
Resources
@ChrisRisner
http://chrisrisner.comhttp://code.visualstudio.comhttp://github.com/aspnet
/homehttp://docs.asp.net
http
://
get.asp.net
http://live.asp.net
https://github.com/Microsoft/HealthClinic.biz
/Slide47Slide48
Docker
fileFROM microsoft
/aspnet:1.0.0-rc1 COPY . /appWORKDIR /appRUN ["dnu", "restore"]
EXPOSE 5000/
tcp
ENTRYPOINT ["
dnx
",
"-p"
"
project.json
",
"web"]