Mit .NET 4.5 habe ich eine erweiterbare Webanwendung erstellt. Mit zur Laufzeit ausgeführtem zertifiziertem Code von Drittanbietern.Best Practice So isolieren Sie dynamischen Code/Assemblys mit .net CORE
Dazu verwende ich App-Domänen und Inter-Prozess-Kommunikation. Jetzt
ich sah, dass viele Technologien ich dafür verwendet werden, nicht mehr in .NET Kern unterstützt
wie:
- AppDomains
- Remoting
- BinarySerzializers
Für die meisten von ihnen gibt es offensichtliche Lösungen. Aber das Entfernen von AppDomains ist eine schwierige Sache.
Wenn ich es richtig verstehe, sollte ich Prozesse verwenden. Aber wenn meine Anwendung etwa 100 Extensions (mehrere Kunden) hat? Dies würde bedeuten, dass ich 100 Prozesse (Microservices) erstellen oder zumindest einige in Microservices zusammenfassen müsste.
Aber ich fühle mich nicht sehr wohl mit beiden. Auf die eine Weise würde ich mit Hunderten von Prozessen enden. Und wenn ich Gruppe I könnte immer noch Einflüsse zwischen ihnen bekommen.
Also, was wäre der richtige Weg zu wählen?
schlechter einen Blick, aber wie Sie gesagt, es ist nicht die gleiche Isolationsstufe. Ich frage mich nur, ob die Leute im dotnet-Kern diese Bedürfnisse einfach ignorieren oder ob ich irgendwas übersehen habe ... –
Es mag gut sein, dass etwas zurückkommt, da mehr von dem vollständigen Framework zu "netstandard" hinzugefügt wird - sie nicht explizit Erwähnen Sie "AppDomain", aber wenn Sie es nicht bereits getan haben, ist dieser Artikel einen Blick als vage Roadmap wert: https://blogs.msdn.microsoft.com/dotnet/2016/05/27/making-it-easier-to -port-zu-net-core/ – Sock
Ich möchte nur unterstreichen, was @Sock sagte: 'AssemblyLoadContext' bietet keine perfekte Isolation. Es ist nicht schwierig für eine "isolierte" Versammlung, den privaten Zustand in anderen Versammlungen durch Reflexion zu verändern. Es scheint, dass Trennprozesse der einzig sichere Weg sind, dies zu verhindern. –