目录
一、VS Code Remote Development 功能介绍
二、VS Code Remote Development 需求分析
三、VS Code Remote Development 用例逆向工程
一、VS Code Remote Development 功能介绍
在实际工作中,经常有远程开发的需求,有可能是需要连接到有一定地理距离的机器上开发,抑或是可能需要连接到自己的虚拟机上开发。前者的问题难以解决,后者频繁地且换虚拟机也会相当不便。因此,VS Code 的 Remote Development 插件应运而生。
VS Code Remote Development 是 Visual Studio Code 的一个功能扩展,它允许开发者通过远程连接到不同的开发环境进行开发工作。当有时候需要在远程计算机或虚拟机上进行开发,在这种情况下,VS Code Remote Development 提供了一种方便的方式来远程连接到目标环境并进行开发。
远程开发扩展的名称是 Remote Development,它实际上是一个扩展包(Extension Pack),由 Remote-SSH、Remote-Containers、Remote-WSL 以及 Python 四个扩展组合而成,除了 Python 主要用于功能支持外,其他三个扩展功能是很明显的。
目前,VSCode 远程开发支持下列三种主要模式:
- Remote SSH:通过 SSH 连接到 Linux 服务器;
- Remote Container:连接到 Docker 容器;
- Remote WSL:连接到已安装的 WSL 环境。
从原理上讲,VSCode 远程开发扩展相当于把开发者自己机器上的 VSCode 原样拷贝到作为目标机器(Remote Host)上,以服务的形式运行,而本地的 VSCode 作为客户端,两者之间通过远程通讯协议彼此协调合作,实际上的开发工作主要是在服务端完成的。这个架构特别之处在于,我们日常所使用的扩展也被分成两个阵营:和界面定制相关的部分,主要包括样式、主题、图标等等在客户端运行;而与开发相关的大部分扩展则在服务端运行。后面在实际操作的部分,我们会看到界面上相应的变化。
二、VS Code Remote Development 需求分析
需求分析就是需求分析师对用户期望的软件行为进行表述,并进一步用对象或实体的状态、属性和行为来定义需求。
2.1功能需求:
- 用户需要知道远程主机的IP地址或主机名,并拥有登录凭据。
- 用户需要在本地计算机上安装VS Code和Remote Development插件。
- 用户需要选择连接类型,例如SSH或Windows远程桌面。
- 用户需要等待VS Code建立连接,并确认连接成功。
- 用户需要能够在VS Code中打开远程主机上的文件或目录,并在本地计算机上进行编辑。
- 用户需要远程主机上的所有更改自动同步到本地计算机上。
- 用户需要选择将代码运行在远程主机上,而不是本地计算机上。
- 用户需要能够断开与远程主机的连接。
2.2 性能需求
- 实现低延迟的远程编辑体验。
- 在多种网络环境下提供稳定的连接和操作性能。
- 对 CPU 和内存资源的占用要求较低
2.3安全需求
- 保护用户的身份验证信息和连接安全。
- 防止对远程主机进行未授权的访问或更改
三、VS Code Remote Development 逆向工程
为了更好地理解 Remote Development 功能是如何实现的,可以进行逆向工程,对代码库进行分析,以确定其实现细节。
- 识别系统的组成部分和之间的关系:该系统由本地计算机、远程主机和VS Code Remote Development插件组成。本地计算机和远程主机之间通过SSH或Windows远程桌面建立连接,VS Code Remote Development插件作为连接和编辑器的中间层。
- 识别系统的输入和输出:系统的输入是用户输入的IP地址、主机名和登录凭据,以及用户在VS Code中进行的编辑和代码运行命令;系统的输出是在本地计算机上打开并编辑远程主机上的文件、将更改同步到远程主机上以及在远程主机上运行代码的结果。
- 识别系统的功能和特性:该系统的主要功能是让用户能够在本地计算机上使用VS Code编辑远程主机上的文件,并能够在远程主机上运行代码。特性包括自动同步文件更改、断开与远程主机的连接等。
- 识别系统的限制和局限性:该系统需要远程主机安装SSH或Windows远程桌面服务,并需要用户进行连接验证。同时,该系统的性能可能受到网络延迟等因素的影响。
- 识别系统的安全和隐私问题:该系统需要用户提供登录凭据,因此需要注意安全问题。此外,用户的编辑和代码可能包含敏感信息,需要保证隐私。
- 识别系统的未来发展方向:该系统可以进一步增强其性能和安全性,例如通过引入更高级的身份验证和加密技术来保护用户的登录凭据和数据传输。此外,该系统可以增加更多的连接类型和支持更多的远程主机操作系统,以满足不同用户的需求。
学号后三位:110