MonoSirius

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

作业4:从需求分到软件设计

Visual Studio Code Remote Development允许您使用容器、远程机器或Windows Subsystem for Linux(WSL)作为功能齐全的开发环境。你可以:

  • 在您部署到的同一操作系统上进行开发,或使用更大或更专业的硬件。

  • 分离您的开发环境,以避免影响您的本地机器配置。

  • 让新贡献者轻松上手,让每个人都保持在一个一致的环境中。

  • 使用本地操作系统上不可用的工具或运行时,或管理它们的多个版本。

  • 使用适用于Linux的Windows子系统开发您的Linux部署应用程序。

  • 从多个机器或位置访问现有的开发环境。

  • 调试在其他地方运行的应用程序,例如客户站点或云端。

您的本地机器上不需要源代码即可获得这些好处。远程开发扩展包中的每个扩展都可以直接在容器、WSL或远程机器上运行命令和其他扩展,这样当您在本地运行时,一切都会感觉一样。

需求分析

1.功能需求

  1. 作为用户可以使用容器、远程机器、或WSL部署远程开发环境
  2. 作为用户可以在本地连接远程开发环境
  3. 作为用户可以从多个机器访问远程开发环境
  4. 作为用户可以在远程开发环境建立工作区
  5. 作为用户可以在查看、编辑、调试、运行远程开发环境上的代码

2.性能需求

  • 实现可以像本地运行一样的低延迟
  • 可以在多种网络环境下提供稳定连接

3.安全需求

  • 用户身份验证和访问权限控制
  • 网络连接的安全性

逆向工程

VS Code 使用 Electron 作为底层框架,并使用 TypeScript 进行开发。其中,插件可以访问 VS Code API 来扩展编辑器的功能。

从官网提供的架构图来看,remote devlopment 是 C/S架构,本地端的VS Code作为客户端,远程端作为VS Code服务器存在,包含代码,终端进程,调试器等等。

在客户端中,Remote Devlopment插件创建了终端窗口,通过SSH隧道将用户的操作请求发送到远程服务端上。

在服务端中,插件通过监听客户端请求的方式来对用户操作做出响应。

src/vs/platform/remoteTunnel 下主要包含了与隧道相关的功能实现,比如隧道的打开和关闭等

src/vs/platform/remote 中包含了与远程服务器通信的一些类,包括 RemoteAgentConnection

src/vs/workbench/contrib/remote 包下包含了关于remote devlepment相关的主要实现

src/vs/workbench/services/remote 包下包含 remoteAgentService.ts 提供远程代理服务等

posted on 2023-05-30 15:05  monoSirius  阅读(14)  评论(0编辑  收藏  举报