207 votes

.NET Standard vs .NET Core

J'ai lu à propos de la différence entre les deux .NET Standard et .NET de Base, mais je ne sais vraiment pas quelle est la différence, ou quand choisir un .NET Standard de la bibliothèque de projet et quand choisir un .NET de Base de la bibliothèque de projet.

J'ai lu que l' .NET Standard est de s'assurer qu'un ensemble d'Api sont toujours disponibles, peu importe la plateforme utilisée (tant que la plate-forme est compatible avec le .NET version Standard que j'ai choisi). Si je ne me trompe pas, cela signifie que je peux créer une classe de la bibliothèque de la .NET Standard et l'utiliser sur n'importe quelle plateforme qui est compatible avec le .NET version Standard que j'ai choisi.

Avec .NET Core, j'ai lu qu'il est prévu pour une utilisation multi-plateforme trop, donc si je choisis un .NET de Base de la bibliothèque, il semble que je puisse l'utiliser sur de nombreuses plates-formes, tout comme .NET Standard.

Ainsi, à la fin, je ne vois pas la différence. Quand dois-je utiliser qui? Quelle est la différence entre eux?

165voto

Federico Dipuma Points 10561

Je vais essayer de continuer à clarifier vos doutes et d'étendre Jon Skeet réponse.

.NET la Norme est une spécification, donc, une bibliothèque compilée pour un particulier .NET version Standard peut être utilisé dans différents .NET mise en œuvre Standard.

Comme dit dans mon autre commentaire, une bonne analogie pour la relation entre les deux .NET Standard et d'autres .NET mise en œuvre Standard (.NET Core, .NET Framework, etc) est ce gist par David Fowler: .NET les versions Standard sont Interfaces, tandis que les cadres sont des implémentations de ces interfaces.

Ce schéma simplifié peut aider à comprendre cette relation:

NET Standard Interfaces analogy

Rien de mieux les cibler NetCore10 a accès à l' INetStandard15 Api et NetCore10 spécifiques Api (comme DotNetHostPolicy).

Bien sûr, cette bibliothèque ne peut pas être utilisé dans différents INetStandard15 des implémentations (NetCore10 n'est pas convertible en NetFramework462 ou Mono46).

Si vous, au lieu de cela, ont besoin d'accéder uniquement à l' INetStandard15 Api (et objectif de la spécification à la place d'un cadre concret) de votre bibliothèque peut être utilisée par tout cadre qui la met en œuvre (NetCore10, NetFramework462, etc.)

Remarque: à l'origine, l'analogie David Fowler utilisé interfaces pour les deux .NET des versions Standard et des cadres de mise en œuvre. Je crois que l'utilisation d'interfaces et de classes est, au contraire, plus intuitive et plus représente le mieux la relation entre les spécifications et des implémentations concrètes.

164voto

Jon Skeet Points 692016

.NET de Base est une application de .NET Standard. Il est disponible sur plusieurs systèmes d'exploitation, mais ce n'est pas la même chose - il existe d'autres implémentations de .NET Standard ainsi.

Donc, si vous créez une .NET de Base de la bibliothèque, il aura accès à des choses qui sont mises en œuvre .NET de Base, mais ne sont pas partie de .NET Standard, et que votre bibliothèque ne sera pas compatible avec d'autres implémentations de .NET Standard, tels que Xamarin, Tizen, plein .NET infrastructure de bureau etc.

En bref: pour obtenir un maximum de portabilité, faites votre bibliothèque cible .NET Standard.

4voto

user2771704 Points 492

.NET de Base de la bibliothèque de Classe est fondamentalement sous-ensemble de .NET Framework bibliothèque, qui contient moins d'Api. En collant .NET de la Classe de Base de la bibliothèque rend difficile le partage de code entre les durées de fonctionnement. Ce code peut ne pas fonctionner pour les différents runtime (Mono pour Xamarin), car il n'a pas l'API que vous avez besoin. Pour résoudre cela, il est .NET Standard, qui est juste un ensemble de spécifications qui vous informe sur les Api que vous pouvez utiliser. Le but principal de .NET Standard est le partage de code entre les durées de fonctionnement. Et important que cette spécification mis en œuvre par tous les temps de fonctionnement.(.NET Framework, .NET de Base et Mono pour Xamarin).

Donc, si vous assurer que vous allez utiliser votre bibliothèque que pour .NET de Base des projets, vous pouvez l'ignorer .NET Standard, mais si ont même infime chance que votre code sera utilisé par .NET Framework ou Mono pour Xamarin ensuite de mieux adhérer .NET Standard

Notez également que la hausse de la version de .NET Standard contiennent plus d'Api, mais version basse soutenue par plus de plates-formes. Par conséquent, si vous créez .NET de la bibliothèque Standard que vous souhaitez partager entre les durées de fonctionnement pour ensuite cibler la version la plus vous pouvez, qui vous aideront à atteindre les montants maximaux des plates-formes. Par exemple, si vous souhaitez exécuter sur .NET Framework 4.5 et .NET Core 1.0, le plus élevé .NET version Standard vous pouvez utiliser est .NET Standard 1.1. Ce ce grand tableau à partir de la documentation pour plus d'informations à ce sujet.

PS: si vous voulez convertir vous de la bibliothèque à la .NET Standard, .NET la Portabilité de l'Analyseur peut vous aider avec ça.

2voto

steliosalex Points 41

.NET la Norme est une spécification de l'Api qui tous les .NET implémentations doivent fournir. Il apporte de la cohérence à la .NET de la famille et vous avez la possibilité de construire des bibliothèques, vous pouvez utiliser du tout .NET la mise en œuvre. Il remplace PCLs pour la construction de composants partagés.

.NET de Base est une implémentation de l' .NET Standard, optimisé pour la construction d'applications de console, d'applications Web et cloud les services de l'aide ASP.NET de Base. Son SDK est livré avec un outillage puissant que, en plus de développement Visual Studio prend en charge une commande complète basé sur la ligne de processus de développement. Vous pouvez en apprendre plus à leur sujet aka.ms/netstandardfaq et aka.ms/netcore.


Ci-dessus, avec une très claire explication de la plupart des éléments discutés dans cette question peut être trouvée dans la suite très utile article de Microsoft (MSDN - septembre 2017): .NET Standard - Démystifier .NET de Base et .NET Standard

0voto

Fityan Aula Points 77

Vouliez-vous dire .NET Framework? Parce que .NET standard est un implémentations, comme .NET Framework, .NET de Base et Xamarin.

J'adore .NET de Base parce que nous pouvons l'héberger sur Linux (utilisation de nginx dans mon expérience). C'est différent .NET framework qui est on ne peut accueillir sur IIS. Vous pouvez considérer au sujet de l'hébergement budget dans ce cas (Car windows server est cher pour moi).

Dans l' environnement de développement de point de vue, .Net de base est léger. Ainsi, vous pouvez utiliser VSCode, Sublime, pour de l'IDE (pas seulement de visual studio).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: