从 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:用spring security加强spring boot admin的安全(spring boot admin 2.3.0 / spring boot 2.3.3)
一,spring boot admin的安全环节: 1,修改context-path,默认时首页就是admin, 我们修改这个地址可以更安全 2,配置ip地址白名单,有ip限制才安全, 我们使用了sp ...
- linux(centos8):安装prometheus服务端/node_exporter客户端(prometheus 2.18.1)
一,prometheus的用途 Prometheus是一个开源的系统监控和警报工具包 相比其他监控系统,它更适用于微服务的体系架构 它使用各种专用exporter,用来实现对硬件/存储/数据库/web ...
- swoole创建进程
<?php /** * Created by PhpStorm. * User: mac * Date: 2020/4/23 * Time: 21:57 */ use Swoole\Proces ...
- __getattr__和__setattr__
getattr 拦截运算(obj.xx),对没有定义的属性名和实例,会用属性名作为字符串调用这个方法 class F(object): def __init__(self): self.name = ...
- 【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
问题情形 使用Python SDK在连接到数据库后,连接数据库获取数据成功,但是在Pandas中用 to_sql 反写会数据库时候报错.错误信息为:ProgrammingError: ('42000' ...
- python web自动化上传文件工具
工具下载地址:链接:https://pan.baidu.com/s/1cHdNHW 密码:56bp说明:1.WinSpy-1.0.2.7z解压即可.2.pywin32的exe程序,根据自己安装的pyt ...
- python自定义模块引入报错 pycharm
1.首先进入settings->python console 选择Add source roots to PYTHONPATH 2.然后将自己工程文件夹mark as source root 3 ...
- centos mysql5.7安装
1. 安装 1 wget http://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm 2 rpm -ivh mysql57-c ...
- 理解cookie
Cookie的有效期 Cookie的maxAge决定着Cookie的有效期,单位为秒(Second).Cookie中通过getMaxAge()方法与setMaxAge(int maxAge)方法来读写 ...
- IOS8 对flex兼容性问题
问题: IOS8.2 dispaly:flex:不生效: 注意一下兼容写法的顺序问题, display: -webkit-box; /* Chrome 4+, Safari 3.1, iOS Saf ...