Matthew Jones

With the RTM release of ASP.NET Core 1.0 scheduled to happen in early 2016, there's been a lot of new terminology floating around the Microsoft space. Having attended a couple of conferences recently has helped me sort them out a bit, but some of them are still quite confusing. What's Bower and NPM, and why do I need them? Why does everyone keep talking about Roslyn?

I can't be the only one with this issue, so below is a glossary which includes a list of terms and codenames and definitions for such that I've compile. All of these terms relate in one way or another to ASP.NET Core 1.0, ASP.NET 4.6, and their constituent technologies. If I left anything out, please feel free to yell at me kindly tell me so in the comments!

The ASP.NET Core 1.0 Glossary

Bower: An open-source package manager, used to manage client-side resources such as CSS or JavaScript files. Originally developed at Twitter. Supported by Visual Studio 2015 for ASP.NET Core 1.0 projects. Competitor to NPM.

.NET 4.6: The full functionality of the .NET Framework, contrasted with .NET Core. Is now being developed on a separate track, and will include support for WebForms (but is not open-source and cannot be deployed to Mac or Linux).

.NET Core 1.0: A small, optimized runtime that represents a ground-up rewrite of the .NET framework. Designed to be modular and includes a subset of the full .NET functionality (for example, .NET Core 1.0 does not include WebForms or System.Drawing).

DNVM: .NET Version Manager. An open-source manager that allows developers to download and install multiple versions of the .NET Runtimes.

DNX: .NET Execution Environment. An open-source environment which includes the code necessary to bootstrap and run an ASP.NET Core 1.0 application.

Grunt: An open-source JavaScript task runner that allows programmers to automate certain repetitive tasks. Is configuration-focused. Has a huge library of plugins. Competitor to Gulp. Supported in Visual Studio 2015 in the Task Runner Explorer window.

Gulp: An open-source JavaScript task runner that (like Grunt) allows developers to automate certain tasks. Is code-focused, with a smaller (but growing) community and respectable library of plugins. Competitor to Grunt. Supported in Visual Studio 2015 in the Task Runner Explorer window.

Katana: A codename for open-source OWIN components built and released by Microsoft. Katana also enables developers to develop a Web application using a wide range of technologies and then host that app wherever they desire. See Howard Dierking's article and Mike Wasson's Getting Started with OWIN and Katana.

Kestrel: An open-source web server for ASP.NET Core 1.0 applications, based on libuv. This is used primarily to deploy ASP.NET Core 1.0 web applications to Linux or Mac environments.

Middleware: A term for components that form a pipeline between server and client. Middleware inspects, modifies, or routes request and response messages for a specific purpose. Middleware effectively replaces HttpModules in ASP.NET Core 1.0. This concept was popularized in the .NET space by the OWIN project. See Mike's Dot Netting or the ASP.NET docs.

NPM: Node Package Manager. An open-source package manager for client-side resources, such as CSS or JavaScript files. Originally created for the node.js project. Supported by Visual Studio 2015 for ASP.NET Core 1.0 projects. Competitor to Bower.

Project K: The original code name for the project that became .NET Framework Core 1.0

Roslyn: The open-source compiler for .NET Core 1.0 and .NET 4.6, developed and maintained by Microsoft.

OWIN: Open Web Interface for .NET. A project whose goal is to create standard interfaces between .NET web servers and web applications, thereby breaking the tight coupling between ASP.NET and IIS. Implementing the standards defined by this project into ASP.NET Core 1.0 projects allows the creation of Middleware. See An Overview of Project Katana (which contains a good high-level summary of OWIN).

Startup.cs: A file included in all ASP.NET Core 1.0 projects that, among other things, adds services to the Dependency Injection layer and constructs the pipeline used by the DNX environment for that app.

Task Runner: General term for a tool that automates certain tasks, such as bundling or minification of client-side resources. Gulp and Grunt are both task runners. Visual Studio supports task runners in the Task Runner Explorer window.

Yeoman: An open-source project scaffolding tool that generates complete, run-able projects for a given set of tools, similar to a Visual Studio project template. Commonly-used in Mac or Linux environments for ASP.NET Core 1.0 applications.

NOTE (1/21/2016): This article has
been updated to reflect the renaming of ASP.NET 5 to ASP.NET Core 1.0