Whats next with .net

Not vNext :

DNX .net X platform

Goals

  • What is vNext?
  • Why we need it
  • How it matters to you.
  • Example...

What is vNext

  • Its a new project alias for the next gen of .net.
  • Optimised for cloud web development
  • All open source
  • New CLR and compilers;
    • Roslyn
    • .NET Native
    • Next Gen JIT

Why we need it

  • Because its new and its MSFT
  • Any questions?

No really why...

  • Severing ties with System.Web! :)
  • Moving to OWIN hosting model
  • Faster startup, lower memory / Higher throughput
  • No more DLL Hell
  • Modularising .NET
  • New CLR and Roslyn compiler brings performance improvements
  • Hosting on linux
  • ...

OWIN - Open Web Interface for .NET

OWIN defines a standard interface between .NET web servers and web applications. The goal of the OWIN interface is to decouple server and application, encourage the development of simple modules for .NET web development, and, by being an open standard, stimulate the open source ecosystem of .NET web development tools.

owin.org

  • The goal is to decouple the web server and web application
  • Encourages the practice of adding only required modules to your application.
public void Configure(IApplicationBuilder app) {
            app.UseStaticFiles();
            app.UseWelcomePage();
            app.UseMvc();
            ...

No more DLL Hell! :)

Dependency versioning pain is the developers responsibility.




{
    "dependencies": {
        "Microsoft.AspNet.Mvc": "6.0.*",
        "Microsoft.AspNet.StaticFiles": "1.0.0-beta4"
    }
}

No shared assembly, simply reference the version you need and run $DNU restore

Seamless transition from on-prem to cloud

The same dependencies that are used on a developers machine will be references in a production environment.

Dependencies and frameworks are referenced via nuget packages.

How this helps you

  • No longer tied to MSFT.
    • use your favorite IDE
    • omnisharp.net
  • Grunt/ Gulp integration
    • DNX gulp task
    • VS file templates will scaffold
  • Portability
  • Open source brings a clear roadmap
  • Faster webdev with browser/ compiler hooks
var gulp = require('gulp'),
    aspnetk = require("gulp-aspnet-k");

gulp.task('default', function(cb) {
    return gulp.start('aspnet-run');
});

gulp.task('aspnet-run', aspnetk());

Frameworks?

  • MVC 5+, Web API 2, Web Pages 3, SignalR 2, EF 6
    • Fully supported with Roslyn compiler
  • Breaking changes
    • New Project layout
    • No web.config
    • MVC and Web API merge
    • No System.web and a new lightweight HttpContext
    • Identity Membership Provider
      • Its suggested you use oAuth or 3rd party credentials

{example}

DNU

The DNX Utility (dnu) tool is responsible for all operations involved with packages in your application.

{code}

dnu restore
dnu install <packagename>
dnu pack
dnu build
dnu list

Its effectively a nuget wrapper

You may recognise this

Node

npm install
npm uninstall
npm pack
npm update
npm rebuild
npm list

DNX

dnx . web
dnx . run
dnvm install
dnvm list
...

DNVM

.NET Execution

.NET Version Manager

Libuv - cross platform async IO Server

Kastro is the .NET webserver that was ported from Libuv

Done

deck

By Chris Brown

deck

  • 1,068