從 3.1 到 5.0 —— OpenReservation 更新記

OpenReservation 從 asp.net core 3.1 到 5.0

Intro

OpenReservation 是一個開源的預定系統,最初的版本是咱們學校的活動室預定系統,如今正逐步變成一個更爲通用的預定系統。.NET5 發佈以後也是把這個項目更新到了 5.0。git

這個項目是一個作了很長時間的項目,從原來的 asp.net WebForm 到 asp.net mvc 再到 asp.net core,如今不只僅支持服務器端渲染,也支持了 Web API + SPA 的模式,
從應用部署上來講,從原來的只支持 IIS 部署,到如今支持跨平臺部署,支持 docker 以及 k8s,helm 部署,從原來每次都是手動發佈部署,到如今基於 Azure DevOps 的自動化 CI/CD 部署。github

項目文件更新

原來的 TargetFrameworknetcoreapp3.1 的須要更新成 net5.0,原來 3.1 的包引用須要更新成 5.0,由於不少包的版本都是同樣的因此我在項目根目錄加了一個 Directory.Build.props 設置了一個變量,要更新的時候每次更新這個變量就能夠了。docker

由於從 .net5.0 開始就淡化 .net core 了,都是 dotnet,因此變量名我也從 DotNetCorePackageVersion 更新成了 DotNetPackageVersion
另一個更新是有的 netstandad2.0 的項目更新成了 netstandard2.1,由於我要使用 efcore5.0,須要 .netstandard2.1 的 Targetjson

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 變動:mvc

Dockerfile

dockerfile 的更新在以前的文章中已經有過介紹,須要把 docker 鏡像名稱中的 core 去掉,而後修改 tag 從 3.1 到 5.0app

CI update

目前在用的 CI 是 Azure DevOps 和 Github Actions,須要將 Build 的 dotnet sdk 更新到 5.0,如今這兩種 CI 都支持使用 5.0.x 來獲取 5.0 版本的最新版本 sdkasp.net

Azure DevOps CI 變動:ui

Github Actions 變動:.net

More

後續更新計劃:

從業務的角度來講,會支持一些更通用的預定配置,

  • 預定頻次限制,每一個預定項目配置每一個人天天/每週/每個月最多能夠預定次數
  • 預定時間段容許屢次預定,當前每一個預定時間段只能被預定一次,有些狀況容許同一個時間段屢次預定,好比駕校預定,同一時間段容許多人同時預定,也須要限制,須要根據每一個預定項目進行配置
    能夠參考:https://github.com/OpenReservation/ReservationServer/issues/40

從技術的角度來講,以前我會把日誌寫到 ES 裏,經過 Kibana 來作可視化,日誌裏也包括了一些 Metrics 之類的信息,因此後面會增長 Prometheus 和 Grafana, 將一些 Metrics 信息暴露出去,讓 Prometheus 去抓取應用運行過程當中暴露出來的 Metrics,經過 Grafana 作可視化展現

另外但願可以在下一個版本中增長組織(租戶)的概念,每一個組織能夠進行一些定製化的配置,以替代如今的預定詳情,如今仍是老的活動室預定的打印頁面

Reference

相關文章
相關標籤/搜索