作者引言

很高兴啊,我们来到了IceRPC之使用Dev Containers进行 .NET QUIC 精简开发,主要是一篇指引,如何使用开发容器做为开发环境,进行开发IceRPC,可适用于任务应用的开发

使用 Dev Containers 进行 .NET QUIC 精简开发

主要是引导大家,如何使用开发容器Development Containers,进行.Net下的QUIC的开发。

QUIC 是一种考虑到性能和安全性的现代传输协议,是远程过程调用(RPCs)的理想选择。 然而,利用 QUIC 功能开发 .NET 应用程序,可能具有挑战性,因为.NET 对跨平台 QUIC 的支持有限。例如:.NET QUIC 实现需要 Linux 上的 libmsquic 库,并且截至撰写本文时还未支持 Windows 10 或 macOS。因此,深入研究基于 QUIC 的应用程序开发的最有效方法之一是利用开发容器development containers

开发容器(简称dev container) 允许将容器作为功能齐全的开发环境。它可用于运行应用程序、分离使用代码库所需的工具、库或运行时,并帮助持续集成和测试。

https://containers.dev

这些容器能够创建便携式、一致的开发环境 - 解决 QUIC 开发.NET相关的特定平台的挑战,并确保团队中的所有开发人员都在使用相同的工具和库。

本篇将引导设置,专门用于开发 .NET 应用程序的开发容器,应用程序使用 QUIC,然后说明,如何使用此容器运行简单的 QUIC 服务器和客户端。涉及开发容器的整体概念,可以应用于任何应用!

先决条件

Docker

Docker 是一个用于构建和共享容器化应用程序的工具。 Docker 开始使用的最佳方法是在电脑机器上安装 Docker Desktop.

装 Docker Desktop 后,启动它并确保其运行。可以通过在终端中执行以下命令来验证 Docker 是否正确安装以及 Docker 守护程序是否正在运行:

docker info

Visual Studio Code

虽然可以使用任何支持 dev 容器的编辑器,但本篇将假设正在使用 Visual Studio Code(VS Code)。 因此,请确保已下载 VS Code 并安装了 Dev Containers 扩展:

1. 创建 .devcontainer 目录

既然我们已经安装并运行了 Docker,可以开始配置我们的开发环境了。创建新目录,或导航到要设置开发容器的现有项目。

导航到项目并创建一个顶级目录,可以在其中存储开发环境配置文件和代码。

mkdir .devcontainer
cd .devcontainer

2. 创建 devcontainer.json

.devcontainer 文件夹中创建 devcontainer.json 文件。该文件将定义开发环境的配置。虽然可以使用 devcontainer.json 文件来指定各种设置,但我们只会指示它使用我们将在下一步中创建的 Dockerfile ,并指定一些运行参数。可以在Dev Container specification中找到其他配置选项。

{
"name": "QUIC Development Container",
"build": {
"dockerfile": "Dockerfile"
}
}

这个 devcontainer.json 做了什么?

  • 名称 name 属性指定开发容器的名称。当开发容器处于活动状态时,该名称会显示在 VS 代码状态栏中。
  • 构建 build 属性指定将用于构建开发容器的 Dockerfile 路径。在这种情况下,Dockerfiledevcontainer.json 文件位于同一目录中,并命名为Dockerfile

3. 创建 Dockerfile

下一步, 在 .devcontainer 目录下创建 Dockerfile 文件。 该文件包含构建 Docker 映像的说明,这是开发容器的基础。

FROM mcr.microsoft.com/devcontainers/dotnet:8.0-jammy

# Install libmsquic
RUN wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb \
&& apt-get update \
&& apt install libmsquic -y

这个 Dockerfile 做了什么?

  • mcr.microsoft.com/devcontainers/dotnet:8.0-jammy 指定开发容器的基本映像。这是一个包含 .NET SDK 和运行时,以及所需的其他工具和库 .NET 开发的 Linux 映像。
  • libmsquic Linux 平台上的 .NET QUIC 库。可以在QUIC in .NET中了解有关 QUIC 的更多信息.

4. QUIC 和 证书

由于 QUIC 是一种安全的运输工具,因此需要提供证书。为了简单起见,在本篇中,我们将在下一节中使用 IceRPC 新建项目模板提供的证书。请注意,这些证书不适合生产使用,在部署应用程序时应替换为自己的证书

5. 使用 Dev Container

为了使用 QUIC 开发容器, 我们使用 icerpc-slice-* .NET 模板,来生成一个通过 QUIC 进行通信的服务端和一个客户端。还为我们处理 SSL 证书,是快速验证开发容器的绝佳起点。

dotnet new install IceRPC.Templates
dotnet new icerpc-slice-client -o ExampleClient --transport quic
dotnet new icerpc-slice-server -o ExampleServer --transport quic

现在我们已经创建了服务器和客户端,可以在 VS Code 中打开我们的项目,并使用 Ctrl+Shift+PCmd+Shift+P 启动命令板,然后搜索 Dev Container:在 Container 中打开文件夹Open Folder in Container并选择根级项目目录。

这将打开一个新的 VS Code 窗口,等待容器下载及更新Dockerfile构建 ,项目将加载到开发容器中!

现在我们的项目在开发容器中打开了,可以启动服务器和客户端。通过在 VS Code 集成终端中,运行服务器和客户端,来完成此操作,该终端现在将使用开发容器。

IceRPC 客户端和服务器, 运行非常简单:

cd ExampleServer
dotnet run # In a new terminal tab
cd ExampleClient
dotnet run

结论

现在应该可以看到客户端和服务器通过 QUIC 进行通信!好吧,我们可以在开发容器内开始开发 QUIC 应用程序!开发容器提供了,跨不同机器的一致开发环境,并确保所有开发人员使用相同的工具和库来吧,浪起来!

.Net 8.0 下的新RPC,IceRPC之使用Dev Containers进行 .NET QUIC 精简开发的更多相关文章

  1. Ubuntu18.04和OpenWrt 18.06.0 下使用aria2和BaiduExport处理百度盘下载

    Ubuntu下没有可用的百度盘客户端, 下载大文件如果通过浏览器就会特别不可靠. 可以使用Chrome插件 BaiduExport 得到下载链接和参数后, 通过aria2进行下载. Aria2安装 直 ...

  2. Ubuntu14.0下安装Zend Framework 2

    Ubuntu14.0下安装Zend Framework 2为了安装这个东西,忙活了快一天了,参考中文博客一直没有安装成功,有些博客的时间也是已经很早了,后来google看英文版的才安装成功,这里记录一 ...

  3. 有史来最大改变 Android 5.0十大新特性

    有史来最大改变 Android 5.0十大新特性 2014.10.16 14:51:31 来源:腾讯数码作者:腾讯数码 ( 0 条评论 )   距离Android系统上一次重大更新不到一年的时间,谷歌 ...

  4. Android下添加新的自定义键值和按键处理流程

            Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我 ...

  5. .NET Framework4.0 下的多线程

    一.简介 在4.0之前,多线程只能用Thread或者ThreadPool,而4.0下提供了功能强大的Task处理方式,这样免去了程序员自己维护线程池,而且可以申请取消线程等...所以本文主要描述Tas ...

  6. NodeJS - Express 3.0下ejs模板使用 partial展现 片段视图

    如果你也在看Node.js开发指南,如果你也在一步一步实现 microBlog 项目!也许你会遇到本文提到的问题,如果你用的是Express 3.0 本书实例背景是 Express 2.0 而如今升级 ...

  7. 【CNMP系列】CentOS7.0下安装PHP5.6.30服务

    上一节我们讲过了如何在CentOS7.0下安装MySql服务,如果没有看到欢迎页面的朋友,可以加我的个人微信详聊:litao514148204 附上一节地址:http://www.cnblogs.co ...

  8. 【CNMP系列】CentOS7.0下安装Nginx服务

    话步前言,CNMP之路,系统起步:http://www.cnblogs.com/riverdubu/p/6425028.html 这回我来讲解下CentOS7.0下如何安装和配置Nginx服务 Ngi ...

  9. 【Linux】CentOS7.0下安装JDK环境

    写在前面:此次试验是在CentOS7上面安装的,亲测成功. 所需工具:JDK1.8安装包,xftp 具体步骤: 1,首先使用xftp连接到自己的虚拟机,然后查看是否有"/usr/java/j ...

  10. Spring Boot 2.0正式发布,新特性解读

    作者|翟永超 Spring Boot 2.0 来啦,有哪些新特性?升级吗? 写在前面 北京时间 3 月 1 日,经过漫长的等待之后,Spring Boot 2.0 正式发布.作为 Spring 生态中 ...

随机推荐

  1. FtpClient一定要setSotimeOut、setDataTimeout

    SotimeOut,简单说就是读取数据时阻塞链路的超时时间. /** * Enable/disable {@link SocketOptions#SO_TIMEOUT SO_TIMEOUT} * wi ...

  2. .NET Emit 入门教程:第六部分:IL 指令:2:详解 ILGenerator 辅助方法

    前言: 经过前面几大部分的学习,已经掌握了 Emit 的前因后果,今天来详细讲解 Emit 中 IL 的部分内容. 如前文所讲,通过 DynamicMethod(或 MethodBuilder)可获得 ...

  3. mybatis一次执行多条SQL语句报错

    如果这样来写一个 mapper 1 <update id="createTable3" parameterType="map"> 2 drop ta ...

  4. 32位x86处理器编程架构

    1. IA-32架构的基本执行环境 1.1 寄存器的扩展   为了在汇编语言程序中使用经过扩展(Extend) 的寄存器:   在32位模式下,为了生成32位物理地址,处理器需要使用32位的指令指针寄 ...

  5. #树状数组#洛谷 5677 [GZOI2017]配对统计

    题目 分析 考虑处理出所有右端点的能够匹配的左端点,然后用树状数组离线查询 代码 #include <cstdio> #include <cctype> #include &l ...

  6. 成长计划校园极客秀|基于OpenHarmony的智能阳台

    前言 本文由OpenAtom OpenHarmony(以下简称"OpenHarmony")开源开发者成长计划活动的参与者李建涛提供,详细阐述了由搭载OpenHarmony系统的拓维 ...

  7. C 语言中布尔值的用法和案例解析

    C语言中的布尔值 在编程中,您经常需要一种只能有两个值的数据类型,例如: 是/否 开/关 真/假 为此,C语言有一个 bool 数据类型,称为布尔值. 布尔变量 在C语言中,bool 类型不是内置数据 ...

  8. 数据库自增ID用完了会怎么样?

    记一个数据库方面的面试题:数据库自增ID用完了会怎么样? MySQL中 int 类型是4个字节,如果是有符号,那就是 [ -2^31 , 2^31-1 ], 如果是无符号,那就是 [ -2^31 , ...

  9. 打造美团外卖新体验,HarmonyOS SDK 持续赋能开发者共赢鸿蒙生态

    从今年 8 月起,所有升级到 HarmonyOS 4 的手机用户在美团外卖下单后,可通过屏幕上的一个"小窗口",随时追踪到"出餐.取餐.送达"等订单状态.这个能 ...

  10. HarmonyOS开发者创新大赛总决赛结果公布

    原文:https://mp.weixin.qq.com/s/I-AofLNY72_CtnHWg2k-Bw,点击链接查看更多技术内容. 2021 年 10 月 22 日第二届 HarmonyOS 开发者 ...