Skip to content

Add .NET Components article #1232

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Nov 16, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/standard/about.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ C#, F# and Visual Basic are popular languages that target and rely on the .NET p

There is great diversity across these languages, in philosophy and syntax, but also symmetry provided by a shared type system. This type system is provided by the underlying runtime environment. .NET was designed around the idea of a "common language runtime" that could support the requirements of diverse languages -- for example, dynamic and statically typed languages -- and enable interoperability between them. For example, it's possible to pass a collection of `People` objects between languages with no loss in semantics or capability.

Multiple [.NET implementations and products](concepts.md) are available, based on open [.NET Standards](https://github.com/dotnet/coreclr/blob/master/Documentation/project-docs/dotnet-standards.md) that specify the fundamentals of the platform. They are separately optimized for different application types (for example, desktop, mobile, gaming, cloud) and support many chips (for example, x86/x64, ARM) and operating systems (for example, Windows, Linux, iOS, Android, macOS). Open source is also an important part of the .NET ecosystem, with multiple .NET implementations and many libraries available under OSI-approved licenses.
Multiple [.NET implementations and products](components.md) are available, based on open [.NET Standards](https://github.com/dotnet/coreclr/blob/master/Documentation/project-docs/dotnet-standards.md) that specify the fundamentals of the platform. They are separately optimized for different application types (for example, desktop, mobile, gaming, cloud) and support many chips (for example, x86/x64, ARM) and operating systems (for example, Windows, Linux, iOS, Android, macOS). Open source is also an important part of the .NET ecosystem, with multiple .NET implementations and many libraries available under OSI-approved licenses.

- Learn about [.NET](index.md)
- Learn about [C#](../csharp/index.md)
Expand Down
81 changes: 81 additions & 0 deletions docs/standard/components.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
---
title: .NET Architectural Components
description: Describes key .NET architectural components such as the .NET Standard Library, .NET runtimes, and tooling.
keywords: .NET, .NET Standard Library, .NET Standard, .NET Core, .NET Framework, Xamarin, MSBuild, C#, F#, VB, compilers
author: cartermp
manager: wpickett
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we're also adding ms.author which is the person who is going to be responsible for maintain and receive feedback bugs, BI data, etc.

ms.author: cartermp
ms.date: 11/16/2016
ms.topic: article
ms.prod: .net
ms.technology: .net-core-technologies
ms.devlang: dotnet
ms.assetid: 2e38e9d9-8284-46ee-a15f-199adc4f26f4
---

# .NET Architectural Components

.NET is made up of a number of key components. It has a standard library, called the .NET Standard Library, which is a large set of APIs which runs everywhere. This standard library is implemented by three .NET runtimes - .NET Framework, .NET Core, and Mono for Xamarin. The .NET languages also run on any .NET runtime. Additionally, there are tools on every platform which allow you to build projects. These tools are the same regardless of your choice of runtime.

Here's a graphical overview of each of the previously mentioned components of .NET and how they fit.

![All .NET Architectural Components Together](media/components.png)

What follows is a brief explanation of each of the key components shown above.

## .NET Standard Library

The .NET Standard Library is a set of APIs which are implemented by a .NET runtime.

More formally, it is a specification of .NET APIs which make up a uniform set of contracts that you compile your code against. These contracts have underlying implementations for each .NET runtime. This enables portability across different .NET runtimes, making it so that your code can effectively "run everywhere".

The .NET Standard Library is also a build target, where it is known as the .NET Standard. You can currently target .NET Standard 1.0-1.6. If your code targets a version of the .NET Standard, it is guaranteed to run on any .NET runtime which implements that version.

To learn more about the .NET Standard library and targeting the .NET Standard, see [.NET Standard Library](library.md).

## .NET runtimes

There are 3 primary .NET runtimes which Microsoft actively develops and maintains: .NET Core, .NET Framework, and Mono for Xamarin.

### .NET Core

.NET Core is a cross-platform runtime optimized for server workloads. It implements the .NET Standard Library, which means that any code that targets the .NET Standard can run on .NET Core. It is the runtime used by ASP.NET Core and the Universal Windows Platform (UWP). It is modern, efficient, and designed to handle server and cloud workloads at scale.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we don't distinguish between Core and Native?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not at this stage, no. .NET Native is changing enough to the point where we're just sticking with this for now. The short of it is that UWP is a .NET Core-based stack which brings along other APIs.


To learn more about .NET Core, see the [.NET Core Guide](../core/index.md).

### .NET Framework

.NET Framework is the historical .NET runtime that has existed since 2002. It is the same .NET Framework existing .NET developers have always used. It implements the .NET Standard Library, which means that any code that targets the .NET Standard can run on the .NET Framework. It contains additional Windows-specific APIs, such as APIs for Windows desktop development with Windows Forms and WPF. .NET Framework is optimized for building Windows desktop applications.

To learn more about the .NET Framework, see the [.NET Framework Guide](../framework/index.md).

### Mono for Xamarin

Mono is the runtime used by Xamarin apps. It implements the .NET Standard Library, which means that any code that targets the .NET Standard can run on Xamarin apps. It contains additional APIs for iOS, Android, Xamarin.Forms, and Xamarin.Mac. It is optimized for building mobile applications on iOS and Android.

To learn more about Mono, see the [Mono documentation](http://www.mono-project.com/docs/).

## .NET tooling and common infrastructure

Tooling for .NET is also common across each implementation of .NET. These include, but are not limited to:

* The .NET languages and their compilers
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these items should end with a period.

* Runtime components, such as the JIT and Garbage Collector
* .NET project system (sometimes known as "csproj", "vbproj", or "fsproj")
* MSBuild, the build engine used to build projects
* NuGet, Microsoft's package manager for .NET
* The .NET CLI, a cross-platform command-line interface for building .NET projects
* Open Source build orchestration tools, such as CAKE and FAKE

The main takeaway here should be that there is a vast amount of tooling and infrastructure which is common for any "flavor" of .NET you choose to build your apps with.

## Next Steps

To learn more, visit the following:

* [.NET Standard Library](library.md)
* [.NET Core Guide](../core/index.md)
* [.NET Framework Guide](../framework/index.md)
* [C# Guide](../csharp/index.md)
* [F# Guide](../csharp/index.md)
* [VB.NET Guide](../csharp/index.md)
138 changes: 0 additions & 138 deletions docs/standard/concepts.md

This file was deleted.

2 changes: 1 addition & 1 deletion docs/standard/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ C#, F# and Visual Basic are popular languages that target and rely on the .NET p

There is great diversity across these languages, in philosophy and syntax, but also symmetry provided by a shared type system. This type system is provided by the underlying runtime environment. .NET was designed around the idea of a "common language runtime" that could support the requirements of diverse languages -- for example, dynamic and statically typed languages -- and enable interoperability between them. For example, it's possible to pass a collection of `People` objects between languages with no loss in semantics or capability.

Multiple [.NET implementations and products](concepts.md) are available, based on open [.NET Standards](https://github.com/dotnet/coreclr/blob/master/Documentation/project-docs/dotnet-standards.md) that specify the fundamentals of the platform. They are separately optimized for different application types (for example, desktop, mobile, gaming, cloud) and support many chips (for example, x86/x64, ARM) and operating systems (for example, Windows, Linux, iOS, Android, macOS). Open source is also an important part of the .NET ecosystem, with multiple .NET implementations and many libraries available under OSI-approved licenses.
Multiple [.NET implementations and products](components.md) are available, based on open [.NET Standards](https://github.com/dotnet/coreclr/blob/master/Documentation/project-docs/dotnet-standards.md) that specify the fundamentals of the platform. They are separately optimized for different application types (for example, desktop, mobile, gaming, cloud) and support many chips (for example, x86/x64, ARM) and operating systems (for example, Windows, Linux, iOS, Android, macOS). Open source is also an important part of the .NET ecosystem, with multiple .NET implementations and many libraries available under OSI-approved licenses.

- Learn about [C#](../csharp/index.md)
- Learn about [F#](../fsharp/index.md)
Expand Down
Binary file added docs/standard/media/components.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/standard/tour.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ ms.assetid: bbfe6465-329d-4982-869d-472e7ef85d93

Multiple implementations of .NET are available, based on open [.NET Standards](https://github.com/dotnet/coreclr/blob/master/Documentation/project-docs/dotnet-standards.md) that specify the fundamentals of the platform. They are separately optimized for different application types (for example, desktop, mobile, gaming, cloud) and support many chips (for example, x86/x64, ARM) and operating systems (for example, Windows, Linux, iOS, Android, macOS). Open source is also an important part of the .NET ecosystem, with multiple .NET implementations and many libraries available under OSI-approved licenses.

See the [Overview of .NET implementations](concepts.md) document to figure out all of the different editions of .NET that are available, both Microsoft's and others.
See the [Overview of .NET implementations](components.md) document to figure out all of the different editions of .NET that are available, both Microsoft's and others.

This Primer will help you understand some of the key concepts in the .NET Platform and point you to more resources
for each given topic. By the end of it, you should have enough information to be able to recognize significant terms and
Expand Down
Loading