天天看點

從 3.1 到 5.0 —— OpenReservation 更新記

OpenReservation 從 asp.net core 3.1 更新到 5.0

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

設定了一個變量,要更新的時候每次更新這個變量就可以了。

從 3.1 到 5.0 —— OpenReservation 更新記

因為從 .net5.0 開始就淡化 .net core 了,都是 dotnet,是以變量名我也從

DotNetCorePackageVersion

更新成了

DotNetPackageVersion

另外一個更新是有的

netstandad2.0

的項目更新成了

netstandard2.1

,因為我要使用

efcore5.0

,需要

.netstandard2.1

的 Target

從 3.1 到 5.0 —— OpenReservation 更新記
從 3.1 到 5.0 —— OpenReservation 更新記

JSON 更新

微軟從 3.0 開始引入了自己的

System.Text.Json

來作為預設的 Json 序列化器,之前更新的時候覺得

System.Text.Json

的 BUG 太多,還是使用的 JSON.Net(Newtonsoft.Json),這次更新到 5.0 之後,開始使用微軟的

System.Text.Json

來作為 asp.net core 的 JSON 序列化器,這樣也可以少一個引用

從 3.1 到 5.0 —— OpenReservation 更新記

Startup 變更:

從 3.1 到 5.0 —— OpenReservation 更新記

Dockerfile

dockerfile 的更新在之前的文章中已經有過介紹,需要把 docker 鏡像名稱中的

core

去掉,然後修改

tag

從 3.1 到 5.0

從 3.1 到 5.0 —— OpenReservation 更新記

CI update

目前在用的 CI 是 Azure DevOps 和 Github Actions,需要将 Build 的 dotnet sdk 更新到 5.0,現在這兩種 CI 都支援使用

5.0.x

來擷取 5.0 版本的最新版本 sdk

Azure DevOps CI 變更:

從 3.1 到 5.0 —— OpenReservation 更新記

Github Actions 變更:

從 3.1 到 5.0 —— OpenReservation 更新記

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/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

上一篇: Flink 入門