Avec .NET 4.5, j'ai créé une application Web extensible. Avec exécute au code certifié d'exécution de tiers. Pour cela, j'utilise les domaines d'application et la communication inter-processus.Meilleure pratique Comment isoler du code/des assemblages dynamiques avec .net CORE
Maintenant, je vis que beaucoup de technologies que j'ai utilisé pour ce ne sont plus pris en charge dans le noyau .NET
comme:
- AppDomains
- Remoting
- BinarySerzializers
Pour la plupart d'entre eux, il existe des solutions évidentes. Mais la suppression de AppDomains est une chose difficile. Si je comprends bien, je devrais utiliser des processus. Mais si mon application a environ 100 extensions (plusieurs clients)? Cela signifierait que je devrais créer 100 processus (microservices) ou au moins en regrouper certains dans des microservices.
Mais je ne me sens pas très à l'aise avec l'un ou l'autre. Dans un sens, je finirais avec des centaines de processus. Et si je groupais, je pourrais encore avoir des influences entre eux.
Alors, quelle serait la bonne façon de choisir?
pire un regard, mais comme vous l'avez dit est pas le même niveau d'isolement. Je me demande simplement si les gens du noyau de dotnet ignorent juste ces besoins ou si je surveille quelque chose ... –
Il peut bien être quelque chose qui revient en tant que plus du cadre complet est ajouté à 'netstandard' - ils ne sont pas explicitement mentionnez «AppDomain» mais si vous ne l'avez pas déjà fait, cet article vaut le coup d'œil sous la forme d'une feuille de route vague: https://blogs.msdn.microsoft.com/dotnet/2016/05/27/making-it-easier-to -port-to-net-core/ – Sock
Je veux juste souligner ce que @Sock a dit: 'AssemblyLoadContext' ne fournit pas une isolation parfaite. Il n'est pas difficile pour une assemblée "isolée" de modifier l'état privé dans d'autres assemblées par réflexion. Il semble que la séparation des processus soit le seul moyen infaillible d'empêcher cela. –