51 votes

Différence entre .Net Core, Portable, Standard, Compact, UWP et PCL?

J'ai entendu parler de

  • .Net De Base
  • .Net Portable
  • .Net Standard
  • .Net Compact
  • Universelle Plate-Forme Windows
  • Portable Bibliothèques De Classe

Ces outils ont tous été expliqué à moi comme "un sous-ensemble de la totalité .Net qui vous permet de cibler de multiples plates-formes". Donc mes questions sont les

  1. Quelle est la différence!?
  2. Si je veux écrire une bibliothèque utilisable pour le plus grand auditoire possible, dont l'une (ou plusieurs) de ces dois-je utiliser?

(Ma situation spécifique: j'ai une bibliothèque qui cible .Net 2.0, .Net 4.5, et UWP. Le ciblage de l'UWP nécessite la création d'un nouveau VS projet et la liaison de tous les fichiers existants, qui est une énorme douleur. Maintenant, quelqu'un me dit qu'il ne fonctionne pas pour PCL, et à partir du son de ce que j'ai à faire à NOUVEAU .Net Standard!?)

55voto

Stephen Cleary Points 91731

Je vais répondre à votre deuxième question:

J'ai une bibliothèque qui cible .Net 2.0, .Net 4.5, et UWP. Le ciblage de l'UWP nécessite la création d'un nouveau VS projet et la liaison de tous les fichiers existants, qui est une énorme douleur. Maintenant, quelqu'un me dit qu'il ne fonctionne pas pour PCL, et à partir du son de ce que j'ai à faire à NOUVEAU .Net Standard!?)

Si je veux écrire une bibliothèque utilisable pour le plus grand auditoire possible, dont l'une (ou plusieurs) de ces dois-je utiliser?

Réponse courte: vous devriez cibler netstandard. L'utilisation la plus faible de la version qui a toutes les Api dont vous avez besoin. Vous pouvez utiliser un outil comme l'API de Port pour vérifier votre projet existant pour assurer la compatibilité avec un netstandard version.

Malheureusement, cette approche permettra de laisser derrière anciennes plates-formes, dans votre cas, .NET 2.0. Si le maintien .NET 2.0 est nécessaire, puis vous aurez besoin d'un projet distinct (avec des fichiers liés) pour construire un document distinct .NET 2.0 de l'assemblée.

Sur les détails...

Quelle est la différence!?

  • .Net Standard (netstandard) - c'est la nouvelle de la croix-plate-forme BCL API. C'est un "standard" dans le sens que c'est juste une définition de l'API et non de mise en œuvre. L'idée est que vous pouvez compiler votre bibliothèque (une version de) cette API et il fonctionnera sur n'importe quelle plate-forme qui prend en charge cette version.
  • .Net de Base - vous pouvez considérer cela comme une implémentation de référence de l' netstandard (avec un supplément de quelques bits). C'est une croix-plate-forme de mise en œuvre de l'API. Il est possible que l'Isu et d'autres cadres peuvent construire sur elle, mais pour l'instant son seul pied qui agit en tant que plate-forme de choix pour les ASP.NET de Base. [Note: pour des raisons historiques, ".NET de Base" est complètement différent de l' netcore NuGet cible; quand vous êtes dans une NuGet contexte, netcore signifie "Windows 8/8.1/10"].
  • .Net Portable et Portable Bibliothèques de classes - Portables Bibliothèques de Classe (PCLs) sont les moins-petit dénominateur commun en matière de communication d'une croix-plate-forme de l'API. Ils couvrent un large éventail de plates-formes cibles, mais elles sont incomplètes et pas d'avenir. Ils ont essentiellement été remplacé par netstandard.
  • .Net Compact - C'est un de complètement différent .NET framework avec sa propre API. Il est totalement incompatible avec tout autre cadre, PCL ou netstandard version; en tant que tel, il est beaucoup plus difficile de soutenir que toute autre plate-forme. Cependant, il est encore utilisé sur les appareils les plus serrés contraintes de mémoire.
  • Universelle Plate-forme Windows - C'était un Win10 de l'époque de la fusion de l'API entre Windows Phone et de bureau, ce qui permet des applications du Windows Store/bibliothèques d'être écrit pour les deux plates-formes. Cela a essentiellement été remplacé par netstandard.

23voto

krillgar Points 2791

En lien dans les commentaires, il y a déjà une description par Microsoft qui décrit l'ensemble de ces informations. Cependant, par votre réponse, il semble que vous ne comprenez pas la chose entière. C'est très long, donc voici (je l'espère) un tl;dr version.

Nous allons commencer par le tableau suivant à partir du lien ci-dessus, et nous espérons que cela permettra de dissiper une partie de la confusion:

.NET Standard compliance

Un bref aperçu des autres bailleurs qui trouvent cela plus tard: Le .NET bibliothèques ont disparu au cours d'un lot de changements et les ports au cours de ses 15 ans d'existence. En ce moment, de nombreux smartphones sont maintenant presque aussi puissant que certains des ordinateurs de bureau qui ont été en cours d'utilisation, en 2001. Dans ce intermin, des sous-ensembles de l' .NET framework a été créé (et vite abandonnée) pour une utilisation dans différentes plates-formes. Avec Satya Nadella la nouvelle approche de décisions .NET comme une grande portée d'une plate-forme que possible, les choses doivent changer.

Être un de 15 ans, la technologie, les choses doivent être améliorées. .NET de Base a été travaillé depuis 2014, comme une refonte complète de l' .NET de l'architecture. Il a été réécrit à partir du sol en place comme une nouvelle version de la .NET de la langue. L'un des objectifs de Base était de permettre à la croix-plate-forme de déploiement. Si c'est une application de s'exécuter sur un iPhone/Android/XBox One, ou un site web qui peut être hébergé dans IIS, ou sur une machine Linux, .NET de Base vous a couvert. Il le fait en plusieurs façons, y compris en ne nécessitant pas l' .NET Framework doit être installé sur la machine, et au lieu de paquet les bibliothèques nécessaires à votre solution.

La plupart des notamment avec .NET de Base est les changements drastiques à ASP.NET. L'ancien Système.Web a complètement disparu et réécrit pour être aussi performante que possible, avec des résultats impressionnants. Le distinct WebApi contrôleurs sont allés, comme tout est fait à l'intérieur d'un seul contrôleur. L'ensemble du processus est aujourd'hui opt-in par opposition à défaut de permettre à des choses que vous pourriez ne pas vouloir.

Cependant, nous, en tant que développeurs voudront migrer certaines applications, finalement, comment peut-on être sûr que le code que nous avons déjà écrit n'a pas eu plusieurs petits mineur changements de nom, de méthodes et de briser ainsi la compilation de géant solutions? En vient la .NET Standard. C'est un ensemble d'Api qui doit être mis en œuvre pour que votre plate-forme de l'appeler lui-même ".NET".

Comme la base .NET Framework , nous avons travaillé avec pendant des années, est bien établie, il a été utilisé comme la base de ce que la Norme va englober. Cependant, tout n'est pas inclus, car à quoi servirait-il? Si la Norme n'est qu'commune Api existent entre les divers types de la .NET plates-formes. Vous ne sera pas éventuellement être l'écriture de code ".NET Standard".

Xamarin (inclus dans le tableau ci-dessus) a été acheté par Microsoft en 2016, et que la technologie a été utilisée pour aider à construire (ou au moins inspirer) .NET de Base pour être multi-plateforme. Il existe encore comme un outil, mais dans la même veines comme il a été utilisé dans le passé. D'après le tableau, il sera .NET Standard 2.0 dans le vNext libération. Cependant, c'est le public cible ne changera pas.

Pour répondre directement à votre question, si vous voulez écrire une application avec le plus large possible, seul déployer la solution, que vous souhaitez utiliser .NET de Base. Toutefois, si vous utilisez une bibliothèque qui est actuellement construit sur .NET Framework 2.0 et 4,5, alors vous serez coincé à l'aide .NET Framework et les avoir séparés UWP solution pour la cible.

Si il offre quelque chose que vous pouvez appeler via une API Web appel, on pouvait avoir en cours d'exécution sur votre serveur .NET Framework, et ont une solution unique dans .NET de Base à déployer pour les utilisateurs finaux. Si elle est intégrée à votre code, vous êtes malheureusement pas de chance jusqu'à ce qu'un .NET de Base mise à jour est fournie.

J'espère que cela a éclairci la confusion entre les différentes technologies de noms.

MODIFIER

Après quelques précisions sur votre situation spécifique, je peux clarifier les choses pour vous. Vous pouvez pas faire une solution unique qui cible à la fois .NET Framework et .NET de Base. La compilation de façons complètement différentes, avec une technologie différente, donc c'est la même situation que d'essayer d'utiliser votre .NET version 4.5 dans un .NET 2.0 solution.

Cependant, il existe des tutoriels pour vous permettent de port de votre projet à Cœur. Pour la plupart, il suffit de copier la classe d'organes dans votre .NET solution de Base, et la plupart des choses fonctionneront correctement. Il y a quelques morceaux qui ont été abandonnés, d'autres qui n'ont pas été complètement 100% étoffé encore (pas pour votre cas, mais Entity Framework n'ont pas tous les mêmes caractéristiques, par exemple). Il y a aussi quelques appels qui ont un peu changé.

La bonne nouvelle est qu'à l'avenir, .NET de Base qui va vous donner la plus large portée possible. .NET Framework n'est pas de s'en aller, mais il et la de Base sera beaucoup plus synchronisés les uns avec les autres.

L'autre avantage de .NET de Base est qu'il utilise une approche itérative pour le déploiement, afin que vous ne serez pas attendre 2 ans pour la prochaine mise à jour majeure. Tout étant livré via NuGet, vous aurez une bien plus rapide sur les améliorations et les nouvelles fonctionnalités.

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:

X