从 3.1 到 5.0 —— OpenReservation 更新记
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 部署。
项目文件更新
原来的 TargetFramework
是 netcoreapp3.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
- https://github.com/OpenReservation/ReservationServer
- https://reservation.weihanli.xyz/
- https://github.com/OpenReservation/angular-client
- https://reservation-client.weihanli.xyz/
从 3.1 到 5.0 —— OpenReservation 更新记的更多相关文章
- plain framework 1 1.0.4 更新 稳定版发布
PF由于各种因素迟迟不能更新,此次更新主要是更新了以往和上个版本出现的内存问题,该版本较为稳定,如果有用到的朋友请更新至此版本. PF 1.0.4 修复1.0.0.3更新后产生的内存问题,可能导致网络 ...
- docker管理shipyard中文版v3.0.2更新
shipyard中文版v3.0.2更新 https://console.dockerclub.net/ https://dockerclub.net/docs/intro/getting_start ...
- 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 ...
- IntelliJ Idea 常用快捷键总结-0 #<间断性更新中...>,部分有示例
IntelliJ Idea 常用快捷键总结-0 <间断性更新中...>,部分有示例 自动补齐代码 常用的有for循环体,fori可以输出循环语句: eg: public void test ...
- Selenium 4.0 Alpha更新实践
上期讲到了Selenium 4.0 Alpha更新日志,这次来实践一下更新内容. DevTools操作更加方便. Chrome录制更加方便.(未实践) 窗口管理不在依赖一个driver. 相对定位器功 ...
- ADFS 4.0 证书更新
ADFS 4.0 证书更新 由于公网证书的过期,需要重新更新ADFS的服务通信证书: 证书要求: 带私钥 PFX格式 更换流程: 证书安装到 证书\计算机\个人,安装后点开证书能看到"你有一 ...
- Docker 1.13.0 详细更新日志
本文讲的是Docker 1.13.0 详细更新日志[编者的话]Docker发布1.13.0版本,此次版本更新内容较多,以下为该版本具体的变更. 构建 添加在构建时可以指定镜像用作高速缓存源的功能. 这 ...
- plain framework 1 1.0.3更新 优化编译部分、网络压缩和加密
有些东西总是姗姗来迟,就好比这新年的钟声,我们盼望着新年同时也不太旧的一年过去.每当这个时候,我们都会总结一下在过去的一年中我们收获了什么,再计划新的一年我们要实现什么.PF并不是一个十分优秀的框架, ...
- 关于SubSonic3.0插件更新字符串过长引发的System.Data.SqlClient.SqlException的异常修复
最近公司客服提交了个BUG,说是更新产品详细信息时,有的可以有的更新不了,前段时间一直没空所以暂时放下,刚才又出现这个问题,所以马上处理了一下. 打开项目解决方案,进入DEBUG模式,拿到操作的数据提 ...
随机推荐
- spring boot:thymeleaf给fragment传递参数的方法(spring boot 2.3.3)
一,thymeleaf如何给fragment传递参数? 1,如果是全局的参数,可以用interceptor中传递 非全局参数,可以从controller中传递 2,引用片断时也可以传递参数 说明:刘宏 ...
- etc/river.toml
# MySQL address, user and password # user must have replication privilege in MySQL. my_addr = " ...
- Vue基础(1)
Vue简介 1.JavaScript框架 2.简化Dom操作 3.响应式数据驱动 Vue基础 通过下面代码引用vue: <script src="https://cdn.jsdeliv ...
- Spring Boot打包部署
date: 2018-11-19 15:30:11 updated: 2018-11-21 08:28:37 Spring Boot打包部署 第一种方式 打包成jar包部署在服务器上 1.1 添加插件 ...
- js中!!的运用
最近在看vue源码. 里面使用Object.defineProperty()中!!吸引眼球 1 export function def (obj: Object, key: string, val: ...
- JS常用事件的总结
JS常用事件的总结 outsbumit 表单提交事件 onload 页面加载事件 onclick 鼠标单击某个对象事件 ondblclick 鼠标双击某个对象事件 on ...
- SpringBoot连接多数据源(HBASE,KUDU,ORACLE集成和开发库)
前提:1.连接hadoop需要本地安装 winutils.exe 并在程序指定,不然程序会报错 IOException: HADOOP_HOME or hadoop.home.dir are not ...
- 【总结】spring基础
一.spring 1.spring体系结构 (1)核心容器(core container):由spring-core,spring-beans,spring-context和spring-expres ...
- Luogu P2536 [AHOI2005]病毒检测
题意 给一个有通配符的模式串和 \(n\) 个文本串,其中 ? 可以匹配任意字符,* 可以匹配 \(0\) 或任意多个字符,求 \(n\) 个文本串中无法与模式串匹配的数量. \(\texttt{Da ...
- Luogu P4234 最小差值生成树
题意 给定一个 \(n\) 个点 \(m\) 条边的有权无向图,求出原图的一棵生成树使得该树上最大边权与最小边权的差值最小. \(\texttt{Data Range:}1\leq n\leq 5\t ...