Skip to content
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

Add .NET Components article #1232

Merged
merged 9 commits into from
Nov 16, 2016
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
80 changes: 80 additions & 0 deletions docs/standard/components.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
title: .NET Concepts
Copy link
Contributor

Choose a reason for hiding this comment

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

you still say concepts here

description: Describes key .NET concepts such as the .NET Standard Library, .NET runtimes, tooling, and how they interplay.
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.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 Components

.NET is made up of a number of 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 "pieces" of .NET and how they fit.

![All .NET Concepts Together](media/dotnet-things.png)

What follows is a brief explanation of each of the key concepts 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 formal specification of .NET APIs which defines a uniform set of APIs which enables two key each .NET runtime implements. and provides a set of contracts which enable portability across different .NET runtimes.

The .NET Standard Library is also a base level for specifying dependencies for your code, where it is known as the .NET Standard. You can "target" .NET Standard 1.0-1.6 right now, and will be able to target .NET Standard 2.0+ in the future. 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, check out [.NET Standard Library](library.md).
Copy link
Contributor

Choose a reason for hiding this comment

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

check out -> see


## .NET runtimes

There are three primary .NET runtimes which Microsoft actively develops and maintains: .NET Core, .NET Framework, and Mono for Xamarin.
Copy link
Contributor

Choose a reason for hiding this comment

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

three -> 3
Mono for Xamarin? Isn't that just called Mono?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

In this case, no, because the version of Mono Xamarin uses isn't quite the same as the "true" Mono.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Also, Mono as it pertains to Xamarin is supported by Microsoft. Mono itself isn't, as far as I can tell.


### .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, check out 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, check out 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, check out 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

Check out each of the below links to learn more about a particular topic:
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested rewriting to remove below and make it easier to read.
Check out each of the below links to learn more about a particular topic: -> 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.

Binary file added docs/standard/media/dotnet-things.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.