Laden...

C# Code in einer isolierten Umgebung ausführen?

Letzter Beitrag vor 11 Monaten 11 Posts 557 Views
C# Code in einer isolierten Umgebung ausführen?

Ich hoffe, der Forenbereich ist richtig gewählt 😃.
Ich habe eine ASP .NET Core Web API und bekomme C# Code an einen Endpoint. Ich möchte diesen Code ausführen und den return-Wert an den User zurückgeben. Wie ist es mir möglich den Code in einer isolierten Umgebung auszuführen, sodass der Code keine Auswirkungen auf meine Maschine hat? Ich habe die Lib Microsoft.CodeAnalysis verwendet. Das Ausführen funktioniert. Problem ist eben nur, dass es nicht in einer abgesicherten Umgebung passiert. Klar, ich könnte eine zusätzliche API in einer VM machen, aber das wäre die letzte Option, die ich in Erwägung ziehen würde.

Wenn man etwas nicht einfach erklären kann, hat man es nicht verstanden.

-Albert Einstein

Wäre dotnet try was für Dich? https://github.com/dotnet/try

Try .NET hört sich erstmal gut an, nur ist das halt Blazor WASM. Dann wäre mein API-Endpoint ja unnötig. Nur habe ich meine ganze Web-App so aufgebaut, dass das Frontend (React) nur Anfragen an meine API sendet.. Gibt es vielleicht noch eine andere Möglichkeit?

Wenn man etwas nicht einfach erklären kann, hat man es nicht verstanden.

-Albert Einstein

Die Ausführung im Client ist halt nun mal das sicherste; daher verfolgen im Prinzip alle solche Isolationen den Client-Weg.
Kenne keine aktuelle Server-Side-Lösung, die man für sowas empfehlen kann.

Es gibt sowas wie .NET Fiddle, die aber eine eigene Isolation auf VM-/Container-Ebene haben.

Dann gäbe es dann noch Code Server, der alles mögliche kann: https://github.com/coder/code-server  
Braucht aber auch eine Umgebung, Setup und Config.

Dass nun Dein API Endpunkt unnötig ist... well. Daher evaluiert man besser vorher 😃

Es gibt ein experimentelles Framework/eine Bibliothek von Steve Sanderson. Das ist genau das, was du brauchst:

https://github.com/SteveSandersonMS/DotNetIsolator

https://www.youtube.com/watch?v=gxplZcW5t3Y

Aber es ist (noch?!) EXPERIMENTELL und ich würde das nicht in einer Produktivumgebung einsetzen.

Hi. Ich bin mal auf Blazor WASM umgestiegen. Problem: Try.NET scheint out of support zu sein (Samples funktionieren nicht).. Gibt es da eine alternative zu? Also eine andere Lib, die den C#-Code aufm Client ausführt?

Wenn man etwas nicht einfach erklären kann, hat man es nicht verstanden.

-Albert Einstein

Nö, ist nicht out of support. Sieht man allein an der Commit-History auf GitHub.
Dass Samples nicht auf Anhieb funktionieren... well. Standard, leider. Als ichs vor paar Wochen selbst verwendet hab, gingen die Samples aber noch.

Try.NET ist auch die Basis für alle Live-Demos auf Microsoft Docs oder der .NET Webseite.

Also komischerweise stehen auch Beiträge unter issues, die vom selben Problem berichten... Hast du eventuell nen Tipp, wie man das ans laufen bekommt?

Wenn man etwas nicht einfach erklären kann, hat man es nicht verstanden.

-Albert Einstein

Jo, aber nur weil Samples nicht klappen ist das Produkt noch lange nicht out of support. Wenn das so wäre, wäre fast die gesamte Open Source Welt out of support.
Dass Samples nicht sofort klappen gehört zum guten Ton jeder Bibliothek, egal on .NET, Java, Microsoft, AWS....

Manchmal muss man sich leider den Quellcode ziehen und schauen/debuggen.
Weiß leider auch nicht mehr, was ich damals gemacht hab, dass die Samples klappten. War ein Kundenworkshop und nach ~15-20min liefs.

Edit: ich seh jetzt auch kein implizen Issue zu "Samples dont work".
Sondern halt Einzelfragen.

Ok. Danke für deine Hilfe. Dann werde ich jetzt wohl den Source-Code lesen müssen xD

Wenn man etwas nicht einfach erklären kann, hat man es nicht verstanden.

-Albert Einstein

Lösung

Ich habe die Samples doch noch ans laufen bekommen. Auf GitHub unter GitHub Issue ist beschrieben, wie man die Samples trotz Fehlermeldung ans laufen bekommt. Lag an der falschen SDK, die ich installiert hatte.

Wenn man etwas nicht einfach erklären kann, hat man es nicht verstanden.

-Albert Einstein