.Net 8.0 下的新RPC,IceRPC之使用Dev Containers进行 .NET QUIC 精简开发
作者引言
很高兴啊,我们来到了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路径。在这种情况下,Dockerfile与devcontainer.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 映像。libmsquicLinux 平台上的 .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+P 或 Cmd+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 精简开发的更多相关文章
- Ubuntu18.04和OpenWrt 18.06.0 下使用aria2和BaiduExport处理百度盘下载
Ubuntu下没有可用的百度盘客户端, 下载大文件如果通过浏览器就会特别不可靠. 可以使用Chrome插件 BaiduExport 得到下载链接和参数后, 通过aria2进行下载. Aria2安装 直 ...
- Ubuntu14.0下安装Zend Framework 2
Ubuntu14.0下安装Zend Framework 2为了安装这个东西,忙活了快一天了,参考中文博客一直没有安装成功,有些博客的时间也是已经很早了,后来google看英文版的才安装成功,这里记录一 ...
- 有史来最大改变 Android 5.0十大新特性
有史来最大改变 Android 5.0十大新特性 2014.10.16 14:51:31 来源:腾讯数码作者:腾讯数码 ( 0 条评论 ) 距离Android系统上一次重大更新不到一年的时间,谷歌 ...
- Android下添加新的自定义键值和按键处理流程
Android下添加新的自定义键值和按键处理流程 说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我 ...
- .NET Framework4.0 下的多线程
一.简介 在4.0之前,多线程只能用Thread或者ThreadPool,而4.0下提供了功能强大的Task处理方式,这样免去了程序员自己维护线程池,而且可以申请取消线程等...所以本文主要描述Tas ...
- NodeJS - Express 3.0下ejs模板使用 partial展现 片段视图
如果你也在看Node.js开发指南,如果你也在一步一步实现 microBlog 项目!也许你会遇到本文提到的问题,如果你用的是Express 3.0 本书实例背景是 Express 2.0 而如今升级 ...
- 【CNMP系列】CentOS7.0下安装PHP5.6.30服务
上一节我们讲过了如何在CentOS7.0下安装MySql服务,如果没有看到欢迎页面的朋友,可以加我的个人微信详聊:litao514148204 附上一节地址:http://www.cnblogs.co ...
- 【CNMP系列】CentOS7.0下安装Nginx服务
话步前言,CNMP之路,系统起步:http://www.cnblogs.com/riverdubu/p/6425028.html 这回我来讲解下CentOS7.0下如何安装和配置Nginx服务 Ngi ...
- 【Linux】CentOS7.0下安装JDK环境
写在前面:此次试验是在CentOS7上面安装的,亲测成功. 所需工具:JDK1.8安装包,xftp 具体步骤: 1,首先使用xftp连接到自己的虚拟机,然后查看是否有"/usr/java/j ...
- Spring Boot 2.0正式发布,新特性解读
作者|翟永超 Spring Boot 2.0 来啦,有哪些新特性?升级吗? 写在前面 北京时间 3 月 1 日,经过漫长的等待之后,Spring Boot 2.0 正式发布.作为 Spring 生态中 ...
随机推荐
- Scala变量和常量的声明
标示符的命名规则 1. 字母或下划线开头 2. 以操作符开头,且只包含操作符(+ - * / # !等) 3. 用反引号`....`包括的任意字符串,即使是 Scala 关键字(39 个)也可以• p ...
- 数组栈(ArrayStack)
栈 栈是一种线性结构,相比与数组,栈对应的操作时数组的子集,只能从一端添加元素,也只能从一端取出元素,是一种 后进先出(Last In First Ou,LIFO) 的数据结构. push pop ...
- #链表#CF706E Working routine
题目 给出一个 \(n*m\) 的矩阵,每次交换两个等大的矩阵,输出 \(q\) 次操作后的矩阵 分析 维护向右和向下的指针,考虑最后输出只需要从每行的头指针向右跳, 那么修改实际上是将矩阵左边一列. ...
- C++ 虚函数详解:多态性实现原理及其在面向对象编程中的应用
在面向对象的编程中,多态性是一个非常重要的概念.多态性意味着在不同的上下文中使用同一对象时,可以产生不同的行为.C++是一种面向对象的编程语言,在C++中,虚函数是实现多态性的关键 什么是虚函数 虚函 ...
- C# 虚方法virtual详解(转载)
C# 虚方法virtual详解 在C++.Java等众多OOP语言里都可以看到virtual的身影,而C#作为一个完全面向对象的语言当然也不例外. 虚拟函数从C#的程序编译的角度来看,它和其它一般的函 ...
- 使用Python-psycopg访问postgres、openGauss、MogDB
摘要 Psycopg 是一种用于执行 SQL 语句的 PythonAPI,可以为 PostgreSQL.GaussDB 数据库提供统一访问接口,应用程序可基于它进行数据操作.Psycopg2 是对 l ...
- HarmonyOS CPU与I/O密集型任务开发指导
一.CPU密集型任务开发指导 CPU密集型任务是指需要占用系统资源处理大量计算能力的任务,需要长时间运行,这段时间会阻塞线程其它事件的处理,不适宜放在主线程进行.例如图像处理.视频编码.数据分析等 ...
- 树模型-LightGBM-从三个层面改进xgb
LightGBM lightGBM总结
- python 虚拟环境篇
前言 这个倒是非常之重要. 首先我们知道python通过pip安装,那么我们安装的所有东西都会在我们pip下的配置目录下,这会显得非常臃肿,同样也让我们部署艰难. python虚拟环境,他是这样做的, ...
- 调用App Store Connect Api
对iOS的证书.描述文件.账号.设备等管理,之前都去苹果开发者中心操作,官网上操作也比较繁杂,想搞一些自动化之类的,更是麻烦,有时候官网都打不开-- 其实苹果还提供里一套API接口,创建证书.创建账号 ...