What can I do in .NET Core that I can’t in the full .NET Framework?

This post is provided by Senior App Dev Managers, Keith Beller and John Abele who ask the question, “What can I do in .NET Core that I can’t do in the full .NET Framework?”

Microsoft’s mission to empower every individual and organization is manifested in .NET Core, the most transformative .NET framework ever. Rebuilt from the ground up, .NET Core is tailor-made for modern development workloads such as cloud apps, microservices and containers. The philosophy behind the framework is also to extend the reach of Microsoft development technologies beyond traditional boundaries and offer an unprecedented level of flexibility and choice to a new generation of developers. Let’s take a quick look at the new possibilities enabled by the .NET Core framework.

Use the tooling you know and love

Microsoft’s desire to meet developers where they are, means enabling them to use the tooling they know and love on their platform of choice. While Visual Studio is a full featured IDE, it can take considerable time to download and resources to run and isn’t fully available to Linux users.

In addition to the release of Visual Studio Code, a lightweight, cross-platform, open-source editor, the .NET Core command line interface (CLI) enables developers to quickly build great .NET apps using any code editor across macOS and Linux platforms.

Build and Run anywhere

The ability to decide which platform you'd like to run .NET Core on such as Windows, Mac or Linux has many implications for the application development lifecycle. Scenarios like developing a .NET Core web app on your MacBook using your favorite IDE and deploying to a Docker image from Red Hat's container registry are supported. With .NET core you are not locked into a specific operating system.

Side-by-side deployments

The pace of change continues to accelerate which introduces interesting challenges for development teams attempting framework versioning. The ability to deploy multiple applications targeting different versions of .NET core on the same machine allows you to make versioning decisions on an application level.

In addition to Framework-dependent deployments (FDD) .NET core also supports Self-contained deployments (SCD) which remain completely isolated from other .NET Core applications. Want to run apps targeting .NET core versions 1.0 and 2.0 on the same machine? Sure, you can do that.

Go faster with .NET Core

Some of the .NET Core team’s stated goals for the framework is to build it with high quality, reliability and compelling performance. Kestrel, a new managed web server introduced with .NET Core, is by far the fastest available .NET server. According to benchmarks, about six times faster than .NET 4.6 and three times faster than NodeJS.

Microsoft’s dedication to .NET Core performance was also on display at TechEmpower’s 13th round of web framework benchmarking which recognized the ASP.NET team for the most dramatic performance improvement ever seen, making ASP.NET Core a top performer among web frameworks.

Become a part of the .NET story

October 3, 2007 Scott Guthrie's team announced they were providing download and browse access to the source code for the .NET Framework Libraries. While the code was not open sourced the development community was genuinely excited at the news, still many hoped for more. Fast forward seven years to November 12, 2014 the .NET team invited developers to join the conversation making .NET Core open source. This event marked a dramatic change in Microsoft's approach to developing its next generation cloud ready, platform agnostic .NET Framework. Today, .NET Core has drawn a vibrant community of incredibly talented developers that have contributed impactful improvements to the framework. In fact, 40% of the performance improvements made to .NET Core were provided by the community.

Get started by checking out the source code hosted at github.com where you will find the project roadmap, contribution details and documentation. Also, join an ASP.NET community standups which are streamed live and archived for those unable to attend. Scott Hanselman, Damian Edwards, Jon Galloway plus many others discuss everything from coding challenges to what's new and upcoming while frequently spotlighting community involvement.

.NET Core enables developers to create fast, resource efficient apps with choice and flexibility and deploy them anywhere. Getting started with .NET Core takes only minutes, grab your preferred editor and the SDK for your OS from the .NET Core page.

Premier Support for Developers provides strategic technology guidance, critical support coverage, and a range of essential services to help teams optimize development lifecycles and improve software quality. Contact your Application Development Manager (ADM) or email us to learn more about what we can do for you.

The full-framework side-by-side restriction is an artificial one. Before MS decided that everything after 4.0 would be an “in-place upgrade”, we could quite happily have applications running in 1.0, 1.1, 2.0 and 4.0 on the same computer.

(3.0 and 3.5 were effectively service-packs for 2.0 with a few extra assemblies and services, so they didn’t really count as separate versions.)

And whilst it’s nice to have your application running on precisely the framework version you wrote it on, I have yet to see what happens when a security bug is found. Will Windows Updates automatically upgrade the framework your application is using, which could break it? Or will you be required to release and deploy a new version of your application, which could be tedious, and in some cases, might never happen?

Thinking back to the ASP.NET “padding oracle” vulnerability, a lot of sites got the protection before the developers had even heard about the vulnerability, let alone had a chance to work out what it meant and how dangerous it was. I’m not entirely convinced the same will apply when a major .NET Core vulnerability is discovered.