vs code作为目前最受开发人员欢迎的文本编辑器之一,优秀的远程开发和调试功能必不可缺。而vs code通过Remote Development插件来实现这一功能。
需求分析
当我们要去逆向一个程序,首先要明白我们想从这个程序获得那些体验,这时候就需要进行需求分析。也就是这个程序哪些功能是我们自己制作时需要去实现的。
功能需求
1.完整的开发和调试功能。
2.源码的同步。
3.运行远程主机的系统和开发环境。
4.允许多个机器或位置访问远程主机。
5.本地机器可以连接到不同开发环境的远程主机,使用容器和WSL。
性能需求
稳定且延迟在可接受范围的连接。
安全需求
1.网络连接的安全
2.只有在获得权限后才能修改远程主机的内容。
逆向工程
vs code基于electron开发。而vscode插件一般用TypeScript和JavaScript进行开发,Remote Development同样如此。
Remote Development使用C/S架构,本地主机作为用户端,远程主机作为服务器端。
在客户端中,Remote Devlopment插件创建了终端窗口,通过SSH隧道将用户的操作请求发送到远程服务端上。
在服务端中,插件通过监听客户端请求的方式来对用户操作做出响应。
src/vs/platform/remoteTunnel 实现隧道相关的功能。
src/vs/platform/remote 实现了与远程主机通信相关的一些接口
src/vs/workbench/contrib/remote 包含了关于remote devlepment相关的主要实现
src/vs/workbench/services/remote 包含 remoteAgentService.ts
提供远程代理服务等