Pas de domaines d'application dans .NET de Base! Pourquoi?

Est-il une bonne raison pourquoi Microsoft a choisi de ne pas soutenir des domaines d'application dans .NET de Base?

Domaines d'application sont particulièrement utiles lors de la construction de longues serveur en cours d'exécution des applications, où l'on peut mettre à jour les assemblages chargés par le serveur, est un gracieux manière, sans arrêter le serveur.

Sans domaines d'application, comment allons-nous remplacer nos assemblées au long du processus de serveur?

Domaines d'application aussi nous fournir un moyen d'isoler les différentes parties de code serveur. Comme, une coutume serveur websocket peut avoir socket code dans le principal domaine d'application, tandis que nos services sont exécutés dans l'appdomain secondaire.

Sans domaines d'application, le scénario ci-dessus n'est pas possible.

Je peux voir un argument qui peut parler de l'utilisation des ordinateurs virtuels concept de Cloud pour le traitement de l'assemblée des changements et ne pas avoir à payer les frais généraux de domaines d'application. Mais est-ce que Microsoft pense ou dit? ou ils ont une raison particulière et des solutions de rechange pour les scénarios ci-dessus?

  • Mais .NET Core 5 n'est pas .NET Framework. C'est pas la version à venir de .NET CLR 4.6 mais une autre chose, alors ne vous inquiétez pas, domaine d'application est là pour rester.
  • Je vois, mais si Microsoft est de prétendre que les .NET Core 5 va être multi-plateforme (Windows/Linux/Unix), alors je suis curieux de savoir pourquoi ils veulent supprimer une fonction de noyau comme domaine d'application.
  • Je pense (mais c'est juste mon avis) qu'il est plus difficile à mettre en œuvre dans un multi-plateforme manière, ils ralentissent beaucoup de choses et ajouter de la complexité. Pas si beaucoup de gens les utilise (au moins la plupart des gens ne le font pas directement). Si vous n'en avez pas besoin, vous pouvez utiliser .NET de Base. Si vous avez besoin d'eux...ne l'utilise pas (pense ReFS vs NTFS). Tout simplement .NET de Base ne l'est pas .NET avenir (pour l'instant), mais un projet distinct. Peut-être un banc de travail, mais sûrement pas un chemin de migration ou de 1:1 de rechange (au moins maintenant).
  • Pensez à ajouter ce que une réponse, car je pense qu'il est utile en tant que tel.
  • c'est juste mon avis (2ème commentaire), je pourrais répondre que la communauté wiki, mais je laisse cette tâche à quelqu'un avec un plus à l'aise en anglais!
  • Ok. Merci pour vos pensées, bien.
  • .NET, le Noyau d'un nouveau concept de "charge de contexte" (ou quelque chose de semblable), c'est-à IDisposable. Il vous permet de vous décharger des assemblées de cette façon, sans l'forcée limites que vous obtenez à partir de l'app domaines.
  • Je suis intéressé à en savoir plus à propos de "charger contexte". Pouvez-vous donner des précisions, si vous avez plus d'info? Sans doute cela a quelques réponses à ma question.
  • Parce que vous ne pouvez pas le modèle le concept d'un Domaine de l'Application sur Linux et Mac OS. Sur windows App Domaines sont profondément liée à la notion de Processus, DACL, Ace, Listes de Contrôle d'Accès, etc, etc, etc... de Ces choses n'existent pas sous Linux/MacOs... Que et autant que je sache, sur linux, il est en cours d'exécution sur Xarmarin (Mono) et je ne suis pas sûr de savoir comment il compile le MSIL et pour quoi, mais je pari que c'est pas du code Machine Natif.