.NET Introduction and Resources
.NET (pronounced "dot net") is a software framework from Microsoft. It's designed to provide all of the development tools needed to create desktop applications, web applications, and mobile apps to run on Microsoft systems.
What Is the .NET Framework?
The .NET framework is often misunderstood. Is the .NET framework a development environment? No, but it ships with development environments like Visual Studio. Is the .NET framework a programming language? Not exactly, but it does allow developers to code with several different programming languages. Is the .NET framework a virtual machine for executing code? Well, it does include a virtual machine for executing code, but that's just part of what the .NET framework is.
So, what is the .NET framework? Let's see if we can sort out a helpful answer by breaking .NET down into its components. The .NET framework consists of two primary parts: the Framework Class Library (FCL) and the Common Language Runtime (CLR).
- The FCL is the set of programming tools that can be used to build programs with any supported programming language in .NET.
- The CLR is the virtual machine that compiles code for execution and manages the execution of the code by the system CPU.
Let's look at each of those components in a little more detail to get a better idea of what .NET is.
Framework Class Library
The .NET FCL is a set of programming classes, interfaces, and data types. FCL resources can be reused by any of the programming languages supported by the .NET framework. In addition, the FCL offers full language interoperability — meaning that code written in one programming language can be combined with code written in another programming language. This lets developers choose the tools and languages that best fit each task in a computer application, yet produce a single cohesive finished product.
The beauty of the .NET framework is that code in all of these different languages can be easily combined into a single application and executed as if written in a single language.
Common Language Runtime
The .NET CLR is the virtual machine built into .NET that handles code execution. Since the .NET framework allows coding in multiple different languages, all .NET code must be compiled into machine code for execution by the system CPU. The CLR is responsible for compiling code into machine code, managing system memory, and managing the execution process by taking care of things like garbage collection and security.
All programs written for .NET, regardless of programming language used to write them, are executed by the CLR.
History of the .NET Framework
Now that we have a sense of what the .NET framework is — a set of language-agnostic development tools and a virtual machine for compiling and executing code — let's briefly look at where it came from.
Development of the .NET framework started in the late 1990's under the name Next Generation Windows Services. That name was jettisoned when the first beta version of the framework, .NET 1.0, was released in December of 2001.
Parts of the framework, such as the Common Language Infrastructure (CLI) and the C# programming language, were released with relatively lax licensing requirements that allowed for their free use. However, other parts of the .NET framework, such as Windows Forms, ADO.NET, and ASP.NET, were released under more restrictive terms. The result is that the .NET framework has been constrained within the walls of the Microsoft system rather than reaching beyond it as the original developers intended.
Today, virtually all .NET framework development happens in the Visual Studio integrated development environment (IDE). This proprietary development environment ships with the .NET framework, and can be used to make full-featured desktop, mobile, and web applications to run on Microsoft computers, mobile devices, and servers.
If you want to get started developing for the .NET framework there are several different directions you could head.
- First and foremost, you're going to need to get up to speed with Visual Studio. This is Microsoft's flagship development product and the best IDE to start developing applications for Microsoft systems. In addition, a free version of the IDE is available. To learn more, check out our guide to Visual Basic and Visual Studio.
- If you're going to develop desktop or mobile applications for Microsoft computers and smartphones, you're almost certainly going to be using C# to write most of the code. Our guide to C# Resources will point you towards the best C# resources on the web.
- ASP.NET is the primary mechanism used to process information on Windows servers for transmission to a web browser. If you want to use the .NET framework to develop web applications and websites our guide to ASP Resources will help you get started.
The web is replete with great .NET courses. We scoured the web for the best-reviewed premium courses for getting started as a .NET developer and here's what we found:
- Understanding the .NET Framework: if you're still having a hard time wrapping your head around the .NET framework and how to get started as a .NET developer, take a look at this recommended learning sequences from Pluralsight.
- Become a Full-Stack .NET Developer, Part 1: Fundamentals: this three-part series by senior software engineer Mosh Hamedani will take a budding .NET developer and turn them into a full-stack .NET developer. Keep in mind that this series assumes you already have a working knowledge of the .NET framework, so if you're brand new, work through some of the tutorials below before tackling this course.
- Become a Full-Stack .NET Developer, Part 2: Advanced Topics: this course picks up where Part 1 of the series leaves off and covers advanced topics like object-oriented design and working with model-view-controller architecture in the .NET framework.
- Become a Full-Stack .NET Developer, Part 3: Architecture and Testing: when you first get started as a developer your primary concern is, "Does it work?" However, once you have more experience, you'll become more concerned with efficiency and overall application architecture. This course will help you take the next step towards .NET mastery once you're ready to make the jump to senior .NET web developer.
- The Complete ASP.NET MVC5 Course: this course, also by Mosh Hamedani, is recommended for budding .NET developers who aren't quite ready for the full-stack .NET developer series.
If you're not ready for a full-blown online course, but want to dip your toes into the .NET framework, here are a few solid tutorials to get you started:
- How I Learned Microsoft .NET: this isn't really a tutorial in the strictest sense. Instead, it's a how-to article based on the experience of one .NET developer. If you're looking for inspiration or direction on your journey to learn .NET, this article will help you.
- Microsoft: Learn .NET: this is .NET tutorial heaven. At this page, Microsoft has pulled together a wealth of free, high-quality .NET educational materials.
- Developing Client Apps with the .NET Framework: if you know you want to develop client applications (apps that run on a desktop or mobile device), this tutorial is a great place to start. This tutorial also links to related content on building apps for the Windows Store, cross-platform development, a how-to for creating a Windows desktop application, and much more.
- Getting started with C#: if you're going to develop in the .NET framework, do yourself a favor and learn C#.
- Visual Basic Fundamentals for Beginners: Visual Basic (VB) is the most common programming language in the .NET framework following C#. This free resources from Microsoft will help you get started on the path to learn VB.
- F# Interactive Tutorials: F# is growing in popularity both for web applications and quantitative business applications.
Nothing beats good old-fashioned textbooks if you're looking for a thorough and complete programming education. While these texts will be overkill for developers who just wants to make simple websites and apps, if you want to learn why things work, how to do things the right way, and build commercial applications, don't skip these respected and thorough resources:
- C# 6.0 and the .NET 4.6 Framework (2015 by Troelsen and Japikse: this in-depth text covers the C# programming language in depth and touches on all core aspects of the .NET framework.
- Microsoft Visual C# Step by Step (2015) by John Sharp: if you are an experienced developer looking to get started with C# and the .NET framework, this text was designed with you in mind.
- Practical Microsoft Visual Studio 2015 (2017) by Peter Ritchie: master the Visual Studio IDE with this brand new text, available soon.
- Front-end Development with ASP.NET MVC 6, AngularJS, and Bootstrap (2017) by Simone Chiaretta: if you want to stay on the cutting edge of web app development, this text covers the most popular technologies being used to build modern websites and applications for Windows servers.
- Writing High-Performance .NET Code (2014) by Ben Watson: a lot has changed since this book was published. However, this text is one of the most popular and well-reviewed .NET texts available. If you want to write code that performs as efficiently as possible, this text will help you get there.
The .NET framework is the software development framework used to create applications to run on Microsoft computers, smartphones, and web servers. If you want to developer applications for the Microsoft ecosystem, you must master the .NET framework.
Further Reading and Resources
We have more guides, tutorials, and infographics related to coding and development:
- Microsoft Visual Basic / Visual Studio: this is our basic primer on Visual Studio with a focus on Visual Basic.
- Introduction to ADO.NET: the main .NET system for interacting with databases.
- C# Resources: as one of the most popular languages in the .NET firmament, C# is very helpful to know.
What Code Should You Learn?
Confused about what programming language you should learn to code in? Check out our infographic, What Code Should You Learn? It not only discusses different aspects of the languages, it answers important questions such as, "How much money will I make programming Java for a living?"