OpenReservation 从 asp.net core 3.1 到 5.0

Intro

OpenReservation 是一个开源的预约系统,最初的版本是我们学校的活动室预约系统,现在正逐步变成一个更为通用的预约系统。.NET5 发布之后也是把这个项目更新到了 5.0。

这个项目是一个做了很长时间的项目,从原来的 asp.net WebForm 到 asp.net mvc 再到 asp.net core,现在不仅仅支持服务器端渲染,也支持了 Web API + SPA 的模式,

从应用部署上来说,从原来的只支持 IIS 部署,到现在支持跨平台部署,支持 docker 以及 k8s,helm 部署,从原来每次都是手动发布部署,到现在基于 Azure DevOps 的自动化 CI/CD 部署。

项目文件更新

原来的 TargetFrameworknetcoreapp3.1 的需要更新成 net5.0,原来 3.1 的包引用需要更新成 5.0,因为很多包的版本都是一样的所以我在项目根目录加了一个 Directory.Build.props 设置了一个变量,要更新的时候每次更新这个变量就可以了。

因为从 .net5.0 开始就淡化 .net core 了,都是 dotnet,所以变量名我也从 DotNetCorePackageVersion 更新成了 DotNetPackageVersion

另外一个更新是有的 netstandad2.0 的项目更新成了 netstandard2.1,因为我要使用 efcore5.0,需要 .netstandard2.1 的 Target

JSON 更新

微软从 3.0 开始引入了自己的 System.Text.Json 来作为默认的 Json 序列化器,之前更新的时候觉得 System.Text.Json 的 BUG 太多,还是使用的 JSON.Net(Newtonsoft.Json),这次升级到 5.0 之后,开始使用微软的 System.Text.Json 来作为 asp.net core 的 JSON 序列化器,这样也可以少一个引用

Startup 变更:

Dockerfile

dockerfile 的更新在之前的文章中已经有过介绍,需要把 docker 镜像名称中的 core 去掉,然后修改 tag 从 3.1 到 5.0

CI update

目前在用的 CI 是 Azure DevOps 和 Github Actions,需要将 Build 的 dotnet sdk 更新到 5.0,现在这两种 CI 都支持使用 5.0.x 来获取 5.0 版本的最新版本 sdk

Azure DevOps CI 变更:

Github Actions 变更:

More

后续更新计划:

从业务的角度来说,会支持一些更通用的预约配置,

  • 预约频次限制,每个预约项目配置每个人每天/每周/每月最多可以预约次数
  • 预约时间段允许多次预约,当前每个预约时间段只能被预约一次,有些情况允许同一个时间段多次预约,比如驾校预约,同一时间段允许多人同时预约,也需要限制,需要根据每个预约项目进行配置

    可以参考:https://github.com/OpenReservation/ReservationServer/issues/40

从技术的角度来说,之前我会把日志写到 ES 里,通过 Kibana 来做可视化,日志里也包括了一些 Metrics 之类的信息,所以后面会增加 Prometheus 和 Grafana, 将一些 Metrics 信息暴露出去,让 Prometheus 去抓取应用运行过程中暴露出来的 Metrics,通过 Grafana 做可视化展示

另外希望能够在下一个版本中增加组织(租户)的概念,每个组织可以进行一些定制化的配置,以替代现在的预约详情,现在还是老的活动室预约的打印页面

Reference

从 3.1 到 5.0 —— OpenReservation 更新记的更多相关文章

  1. plain framework 1 1.0.4 更新 稳定版发布

    PF由于各种因素迟迟不能更新,此次更新主要是更新了以往和上个版本出现的内存问题,该版本较为稳定,如果有用到的朋友请更新至此版本. PF 1.0.4 修复1.0.0.3更新后产生的内存问题,可能导致网络 ...

  2. docker管理shipyard中文版v3.0.2更新

    shipyard中文版v3.0.2更新  https://console.dockerclub.net/ https://dockerclub.net/docs/intro/getting_start ...

  3. struts2-core-2.0.14更新到2.3.15

    struts2-core-2.0.14更新到2.3.15 将低版本的struts2-core更新到最新版本2.3.15,更新jar包,有这个几个 1. struts2-core-2.0.14.jar ...

  4. IntelliJ Idea 常用快捷键总结-0 #<间断性更新中...>,部分有示例

    IntelliJ Idea 常用快捷键总结-0 <间断性更新中...>,部分有示例 自动补齐代码 常用的有for循环体,fori可以输出循环语句: eg: public void test ...

  5. Selenium 4.0 Alpha更新实践

    上期讲到了Selenium 4.0 Alpha更新日志,这次来实践一下更新内容. DevTools操作更加方便. Chrome录制更加方便.(未实践) 窗口管理不在依赖一个driver. 相对定位器功 ...

  6. ADFS 4.0 证书更新

    ADFS 4.0 证书更新 由于公网证书的过期,需要重新更新ADFS的服务通信证书: 证书要求: 带私钥 PFX格式 更换流程: 证书安装到 证书\计算机\个人,安装后点开证书能看到"你有一 ...

  7. Docker 1.13.0 详细更新日志

    本文讲的是Docker 1.13.0 详细更新日志[编者的话]Docker发布1.13.0版本,此次版本更新内容较多,以下为该版本具体的变更. 构建 添加在构建时可以指定镜像用作高速缓存源的功能. 这 ...

  8. plain framework 1 1.0.3更新 优化编译部分、网络压缩和加密

    有些东西总是姗姗来迟,就好比这新年的钟声,我们盼望着新年同时也不太旧的一年过去.每当这个时候,我们都会总结一下在过去的一年中我们收获了什么,再计划新的一年我们要实现什么.PF并不是一个十分优秀的框架, ...

  9. 关于SubSonic3.0插件更新字符串过长引发的System.Data.SqlClient.SqlException的异常修复

    最近公司客服提交了个BUG,说是更新产品详细信息时,有的可以有的更新不了,前段时间一直没空所以暂时放下,刚才又出现这个问题,所以马上处理了一下. 打开项目解决方案,进入DEBUG模式,拿到操作的数据提 ...

随机推荐

  1. 智能DNS的实现

    网络路径远,导致用户访问延迟 各个运营商之间的带宽有阀口. GSLB 就近的返回服务器的地址 CDN网络 内容分发网络 Content Delivery Network CND服务商 阿里 腾讯 蓝汛 ...

  2. 模块二:ES新特性与TypeScript、JS性能优化

    一.请说出下列最终得执行结果,并解释为什么.

  3. mysql 必会基础1

    1.cmd --> 开启服务:net start mysql 关闭服务:net stop mysql 没有restart命令;命令格式:net stop serviceName;后面不需要加分号 ...

  4. spark load data from mysql

    spark load data from mysql code first 本机通过spark-shell.cmd启动一个spark进程 SparkSession spark = SparkSessi ...

  5. npm的使用说明

    博主是刚开始写项目的前端小白菜,边学边整理,以供后面的小猿参考,共同进步. 首先: npm的官网地址:https://www.npmjs.com Windows 安装包(.msi) 32 位安装包下载 ...

  6. 国云数据:中国版的Snowflake,国内数据中台领导者

    [股神巴菲特加持,今年最受关注美股IPO ] 这段时间, 由股神巴菲特54年来首次打新的美股IPO公司Snowflake迅速得到业界重点关注.Snowflake已于2020年9月16日正式上市,发行价 ...

  7. Luogu P3200 [HNOI2009]有趣的数列

    题意 给定 \(n\),求有多少个长度为 \(2n\) 的排列 \(p\) 满足 对于 \(1\leq i\leq n\),\(p_{2i-1}<p_{2i}\). \(p_1<p_3&l ...

  8. 专题二:redis的数据类型之string

    一.redis的数据存储格式 redis本身是一个Map,其中所有的数据都是采用 "key:value"的方式进行存储的. 我们说的数据类型是数据存储的类型,也就是对应下图的val ...

  9. 关于maven下,lombok的安装

    1.首先下载lombok的jar包,可至https://mvnrepository.com/下载 2.双击即会自动扫描eclipse.exe,如图: 选择eclipse.exe,点击install/u ...

  10. 硬核卸载Vue(删除)

    第一步 查找vue位置 打开 cmd 输入 where vue 第二步 进入文件 直接cv(复制粘贴) 随便打开个文件 第三步 删除vue 删除前缀vue的所有 进入node_modules 删除@v ...