remote desktop for Linqpad - execute linq queries on a remote machine
I'd like to be able to have linqpad running on my app and sql servers and be able to securely execute my linqpad script on a remote machine, e.g. on sql server 1, or my hosting server (x), I'd run linqpad as a service, on my dev machine, I'd I want to be able to write a query and test it on my dev, box, then when I'm happy with it, I want to run it securely agains the remote box, and this is the critical part, so that the queries all run (locally) on the remote box without the data being transferred over the network to me, and only the dump (output window) results are transferred back to me. Or, I simply want my keystrokes to be transferred to the remote linqpad. My local linqpad must become a simple dumb terminal. Adding a reference should browse remote assemblies to reference. When I swith between local and remote, linqpad should recompile the script and resolve any references, just as if I had edited and pressed F5 again.
-
takeshik commented
I support this idea since latest LINQPad now runs on .NET Core. This means core (non-GUI) system might be able to run on non-Windows environment (Linux, Mac, etc.)
I think remote execution support is very useful. Some system classes (such as file operation: FileInfo) vary its behavior depends on running operating system. If LINQPad gets remote execution system, their behavior can be tested. -
Steve Dosan commented
Yes Joe. Remote dekstop tools like logmein, R-HUB remote support servers, TeamViewer etc. will exactly do the same in the above scenario.
-
Shlomi commented
This is actually a great idea..
For example - my dev workstation is in another continents than our Production servers and DB. When running a big script with lot's of queries roundtrips - the latency is a real issue! (in SaveChanges - every update/insert is a full roundtrip!).
Instead of packaging all the dll's and configurations and running the queries on a Production machine, this feature request would just solve it.
-
Alan Hemmings commented
Good question, sorry I didnt' explain properly. This is probably an extension of the suggestion to be able to automate linqpad so that it can run as part of a build script. Currently there's no simple product on the market or opensource that allows you to securely execute scripts on windows servers, (automatically) as part of a build process, not without severely compromising the servers security or requiring a huge amount of server management skills. There are some enterprise products, but they are such enterprise behemoths it's like shooting a fly with a "cricket" (MIB). Plus, remote desktop can't be automated, you have to manually log in. Use case I envisage is where I need to tweak and test the bits of the script that will execute remotely versus once they're working executing them and parsing results.I don't want to have to open a bunch of remote desktop windows, that's massively unproductive, I simply want to write two lines of code to query machine X, then another line that get's the perf counter from Machine Y, and then compares that to some values stored on machine Z, and if some condition, I want to delete a folder on another machine and fetch some package from source control. I'd want to be able prototype each piece of the script from one software interface, and see everything expressed neatly in front of me in code, as a script, not as "apps on remote desktops". Rule #1, automate repetitive tasks that humans do. If I have to log in to a remote desktop, I need to be logging in, selecting machines, opening apps,clicking buttons, waiting for results, all very time consuming repetitive and subject to human error. A single .linq script, can be code reviewed, can express the intent, and can be automated and then run by team city. w00t! I'm thinking that this would either require a remote execution DSL, for example ServerManager.Execute(OnMachineA, ()=> { my script {); or have a way of having scripts reference each other, [ so that you can give an entire "script" permissions ] then the DSL could perhaps look like var DBDeployResults = ScriptManager.Execute(RemoteMachineX, "GetLatestTestDB.linq"); Sorry for the brain dump. Am thinking that this could massively increase the market for linqpad, potentially any microsoft shop working with team city could then justify putting a linqpad (runner?) on every server that they manage. As the person responsible for sw purchases, I can easily justify pay for a linqpad CI licence for each of our production and test servers. We were managing 17 servers, and paying for 17 linqpad licences to achieve the above would not have battered an eyelid. Just saying... ;-D
-
What's the difference between what you're describing and simply running Remote Desktop? Wouldn't Remote Desktop do exactly what you need in this scenario?