waf / CSharpRepl

A command line C# REPL with syntax highlighting – explore the language, libraries and nuget packages interactively.
https://fuqua.io/CSharpRepl/
Mozilla Public License 2.0
2.76k stars 106 forks source link

Remote Console For Web Applications #30

Open jdobrzanski opened 3 years ago

jdobrzanski commented 3 years ago

Feature Description

Nice work!!! I've been waiting for a cross-platform c# REPL, thanks!

A great feature addition would be the ability to "remote console" into running web applications such as is possible with other stack's REPLs (e.g. elixir/erlang). This is very convenient for confirming/tweaking service configurations and executing code for debugging issues. We use this extensively in our phoenix/elixir deployment (with care on production but very helpful for staging too). Obviously this exposes a security risk but can be locked down.

I imagine that the console would run locally and use tcp to send commands and print the results. It would be up to the end-users to ensure secure connections and proper authorization.

The critical piece is that the console should have fun access to the running system and state. Nice-to-haves would be to have access to the IServiceProvider to instantiate instances of services and inspect/set fields/properties or run methods.

waf commented 3 years ago

Thanks! I agree, this would be a great feature. I miss it from my time in Clojure.

Implementation-wise, I think it'd make sense to use MIEngine and netcoredbg. This is a similar architecture to what e.g. vscode uses, and gives us debugging over SSH, as well as docker, for "free" without having to define our own protocol. I think it should work for both local and remote and be cross-platform.

See also https://github.com/puremourning/vimspector which uses a similar way of connecting.