.NET Tools Remote Development

使用 JetBrains Rider 进行远程开发

Read this post in other languages:

JetBrains Rider 2022.2 为 .NET 开发者带来了远程开发测试版。 我们此前已经为基于 IntelliJ 平台构建的其他 JetBrains IDE 引入远程开发,Rider 用户现在也可以在 .NET 平台上体验其强劲功能。

本文将回答“什么是远程开发?”、“我为什么要使用远程开发?”以及如何使用当前版本的 JetBrains Rider 进行远程开发等问题。 我们开始吧。

什么是远程开发?

远程开发很常见,可以追溯到专业计算的诞生之初。 用户使用终端远程连接到大型计算机来完成工作。 计算机终端具有非常精彩的历史,也帮助我们步入如今的现代个人计算时代。 

与技术领域的大多数事物一样,趋势是周期往复的。 我们办公桌上寻常计算机的处理能力已经远超历史上第一批计算机科学家的想象,但这些设备仍然会在现代开发工作流中达到极限。 现在的工作负载可能需要大量 CPU、内存和 GPU,更不用说持续发展的量子计算了。

对于 .NET 开发者,这些限制已经超出了技术范围,还涉及多目标操作系统和硬件等问题。 虽然构建实体设备库是一个办法,但这对许多开发者来说并不现实。 虚拟化和模拟也有其局限性,因为托管开销通常会产生不太准确的结果。

现代开发者该如何克服这些挑战? 当然是采用远程开发!

JetBrains 远程开发可以在任何支持 SSH 的远程服务器上托管源代码、工具链和 IDE 后端。 基于 IntelliJ 平台的瘦客户端可以带来与本地相同的 Rider 开发工作流体验。 像平常一样编写、浏览、重构、运行、调试和测试项目。

如我们之前的公告所述:

远程开发能够通过 SSH 连接到现有服务器。 IDE 作为后端服务安装,将在其中加载项目而不显示用户界面。 瘦客户端在本地运行并连接到此 IDE 后端,提供与本地运行 IDE 相同的完整工作用户界面,即使所有处理都在远程服务器上完成。

JetBrains

远程开发在计算领域并不是一个崭新的概念,但 JetBrains 以其 20 年专业经验与最先进的托管方式强强联合,还是会让整个业界迎来一个独特时刻。 拥有有效 JetBrains Rider 订阅和支持 SSH 的远程服务器实例就可以开展远程开发。

但是为什么要进行远程开发?

为什么进行远程开发?

我们已经谈过了关于远程开发的技术部分,对于大多数开发者来说,这似乎会大幅改变自己的工作方式。 所以为什么要考虑远程开发?

当然,这取决于受益人的观点。 那么,我们就来看看组织利益相关者如何从远程开发团队受益。

开发者可以在几分钟内快速启动任何开发环境,不必花费数小时运行设置脚本、配置环境设置和下载依赖项。 开发者机器可以基于镜像和脚本,这就为整个团队提供了熟悉的开发环境,避免了团队中常见又恼人的“在我的机器上能用”问题。 一个额外的好处是,如果一个团队负责多个项目,开发者可以快速切换任务,几乎没有停机时间。

此外,开发者还可以无限制地访问资源,不必考虑硬件要求。 远程开发使用的是瘦客户端,繁重的作业由远程服务器完成。 需要更多 CPU、内存或 GPU? 在几分钟内扩展远程机器,然后直接开始工作,无需再等待那台昂贵的笔记本电脑邮寄过来。

对于 IT 和硬件经理来说,长远看来,远程开发比典型的企业硬件更新周期更实惠。 例如,在撰写本文时,我们的众多合作伙伴之一 GitPod 就能为单个开发者提供每小时工作成本不到 1 美元的工作区GitHub Codespaces 也提供免费时间和极具竞争力的定价模式。 一台 6,000 美元、更新周期为两年的工作站每个运行小时的成本可能略高于 1.50 美元(假设每年 48 个工作周,工作 40 小时)。 在衡量开发者工作效率、硬件购置和硬件管理成本时,远程开发对大多数团队来说更有吸引力。

远程开发也更为安全,因为知识产权始终在远程服务器上,永远不会到达开发者机器。 可能需要存储敏感信息的数据库等依赖项只能通过安全环境访问。 远程开发可以保护在金融、政府工作和医疗等高度监管行业中运营的企业。 硬件被盗或丢失不会使整个组织面临风险。

最后,虽然我们已经谈过了涉及所有相关者的间接好处,但最重要的是,当前开发流程将基本不受影响。 您可以带着一个便携设备去任何地方,只要网络允许,您就可以使用强劲服务器的全部功能。 因此,开发者可以继续使用自己喜欢的 JetBrains 工具来编写和部署 .NET 解决方案。

来看看如何开始使用 JetBrains Rider 的远程开发。

JetBrains Rider 远程开发入门

您需要最新版本的 JetBrains Rider(2022.3 或更高)来测试远程开发测试版。 也可以只安装 JetBrains Gateway,它具有相同的功能,但只安装瘦客户端。 如果您只想进行远程开发,JetBrains Gateway 是一个很好的选择。

您还需要一个远程服务器和一个有效的 SSH 服务器。 我们建议从具有 2 个以上核心、4GB 以上 RAM 和 5GB 以上磁盘空间的远程服务器开始,但具体需求将取决于您的解决方案和开发工作流。 目前,远程服务器必须为 Linux,但我们计划很快支持 Mac 和 Windows。

启动 JetBrains Rider 时,欢迎屏幕右侧将显示 Remote Development(远程开发)部分,其中包含两个选项:SSH 和 JetBrains Space。 未来,GitHub、GitPod、Google、Amazon 和适用于 Linux 的 Windows 子系统 (WSL) 等合作伙伴将提供更多显式提供程序。 点击 New Connection(新建连接)添加新的 SSH 连接。

显示远程开发测试版以及 SSH、JetBrains Space 和 WSL 的选项的 JetBrains Rider 欢迎屏幕

Connect to SSH(连接到 SSH)屏幕上,您可以选择现有连接,或者如果是首次使用,可以创建新的 SSH 连接:指定用户名、主机、端口和要添加到远程服务器的本地私钥(向基于 SSH 的服务(如 Git)进行身份验证)。

注意:不支持 localhost 和 127.0.0.1,但可以使用本地 IP 地址连接到本地虚拟机进行测试。

显示输入字段的 Connect to SSH(连接到 SSH)屏幕。

正确输入所有值后,可以点击 Check Connection and Continue(检查连接并继续)。 接下来,JetBrains Rider 将提示输入密码,并提供保存凭据至重新启动或永久保存的选项。

要求输入密码的 SSH 连接的 Authentication(身份验证)对话框

通过远程服务器的身份验证后,即可选择 JetBrains 后端以及要打开的解决方案文件。 在此屏幕上,您可以选择 Rider 作为后端,并打开一个 SSH 终端以从源代码控制中克隆现有解决方案。 选择所有选项后,点击 Start IDE and Connect(启动 IDE 并连接)。

包含 Rider 和解决方案文件设置的 Choose IDE and Project(选择 IDE 和项目)对话框。

如果这是第一次使用远程开发,可能出现两个进度条。 第一个显示后端服务安装的进度。 第二个对应 JetBrains 客户端下载进度,它将在开发机器上本地运行。 这只需要一次,客户端和后端服务器都将在环境中保持不变。 最后,在所有进程完成后,JetBrains 客户端就将呈现熟悉的 JetBrains Rider 体验。

连接到远程服务器上的 JetBrains Rider 后端的 JetBrains 客户端。

开发期间,您应该会喜欢上编辑器的快速响应。 因为编辑在本地进行,JetBrains 客户端会将更改同步到后端。 所有处理都发生在后端机器上。 这包括索引解决方案文件、磁盘访问、快速修复建议和其他一切。 您可以打开 Rider 的终端来确认。 您还可以使用 JetBrains Marketplace 中的插件、主题、按键映射和大多数条目自定义本地 JetBrains 客户端体验。

显示远程服务器解决方案文件夹内容的终端。

您还可以使用 Rider 实例顶部的 Backend Status Details(后端状态详细信息)微件查看关键远程指标。 此微件会显示服务器上 CPU、内存和磁盘的资源利用率。 您还可以管理公开的端口并查看后端服务生成的输出。

显示 CPU 负载、内存和磁盘利用率等后端指标的 JetBrains 客户端 Backend Status Details(后端状态详细信息)对话框。

虽然您可以手动配置端口,但远程开发会自动检测并转发所有必要端口,提供无缝的本地开发体验。 例如,ASP.NET Core 开发要求在开发 Web 应用程序时转发 HTTP 端口。

正在使用从远程服务器转发到本地环境的端口配置运行 ASP.NET Core。

您可以使用 localhost:port 从服务器访问任何转发端口。 您可以在运行窗口顶部附近看到所有转发端口。 端口转发可以让您使用与 Rider 上相同的工具轻松测试和调试远程运行的任何进程。

正在 JetBrains 客户端中调试 ASP.NET Core 单元测试

在远程开发中也可以进行调试。 将必要的断点添加到应用程序或单元测试并启动新的调试会话。

如本部分所述,JetBrains Rider 远程开发便捷直观,易于上手。

结论

远程开发是现代软件开发的未来,它让开发者和其他相关方都能灵活应对任何问题。 如本文所述,JetBrains 远程开发具有诸多优势,同时为开发者提供了熟悉和喜爱的体验。

当前版本仍处于测试版阶段,因此我们非常欢迎使用 JetBrains Space、GitPod、Google、AWS、GitHub 甚至本地 SSH 服务器进行尝试。 请提交您遇到的问题,并在下方评论区留下任何意见或疑虑。

一如既往,感谢阅读本文和信任 JetBrains。

 

本博文英文原作者:

Sue

Khalid Abuhakmeh

image description

Discover more