平时经常要将开发好的 Android APP 上传到云服务器,然后将下载链接生成二维码,发送给客户,方便扫码下载安装。 之前用的草料二维码虽然满足需求,但是操作有点繁琐,所以想借自学 .NET 8 的机会,边学习边开发一个在线的二维码生成工具。 也算是在枯燥的工作之余,自己找点乐趣吧。
断断续续搞了一个周,每天最多半小时,终于上线了。总体感觉 .NET 8 的 ASP.NET Core MVC 开发起来还算舒服。 就是官方文档比较杂乱,需要东找西找。市面上的书籍也滥竽充数的居多,鲜有从头一步步的构建流程,大多是官方文档的二次消化式输出。 所以,写个 .NET 8 的入门教程,应该很有市场。
体验地址
- 中文版: 二维码生成器
- 英文版: Qrcode Generator
i18n 国际化
想尝试 .NET 8 的很大一个原因就是,之前使用的 golang gin 和 rust axum 对 i18n 的支持为 0。 需要自己去实现,例如,我整理的
虽然勉强能用,但是实际项目中会发现也存在的不便之处。 例如,功能多了之后,发现无法将不同功能的翻译进行隔离。而 .NET 默认将不同页面的翻译分散到了不同的资源文件。 前期看似麻烦,但是后续会发现确实是经验之举。
唯一的不便之处是,不能像 Android Studio 一样自动将文本提取为资源文件。 对文本硬编码也没有警告提示,说明 VS 对国际化不够重视。
具体实现,参考 ASP.NET Core in .NET 8 的 I18N 多语言国际化
部署
之前尝试了 .NET AOT 的部署。参考之前的文章
DotNet 8 Minimal API with AOT (三): Ubuntu Server 生产环境部署
但是如果算上 wwwroot 和配置文件,其实远不如 golang 的真正的单文件部署方便。因为 golang 可以 通过 go embed.FS 将 gin 模板及静态资源文件打包进二进制程序,但是 .NET 并没有找到类似的方案。其实 rust 项目我也没有找到类似 golang 这么简便的方案。
既然这样,使用非 AOT 的方案部署,对我来说也能接受。例如,目前的 .NET8 MVC 项目的部署流程是:
- dotnet publish 生成部署文件目录
- 使用 rsync 命令将 publish 目录同步到 ubuntu 服务器制定目录
- 在服务器上使用 systemctl 重启 dotnet 服务
唯一担心的,就是过低版本的 ubuntu server 无法安装 .NET 8 Runtime。 手头的 Ubuntu Server 目前最低版本的是 18.04,好在上面有 Docker,实在不行就用 Docker 部署。
脱离 Visual Studio 单纯使用 VIM 开发
使用 .NET CLI 在命令行下新建一个 .NET 8 MVC 项目 后,就可以轻松的使用 VIM 进行开发。即便没有 Visual Studio 也没有任何障碍。
但是,对 .NET CLI 还是不够熟悉, 没有找到如何通过命令行创建:
- Razor page
- MVC Controller
- i18n 翻译用的资源文件
这些用手动也能创建,但是稍显麻烦,不够优雅,也许需要自定义命令。 后续再了解一下。
https://learn.microsoft.com/en-us/dotnet/core/tools/
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式