Phenix Framework 7 for .net core 3 & Orleans 3
Copyright ? 2007, 2020 Phenixヾ Studio
發布地址:https://github.com/phenixiii/Phenix.NET7
技術交流群:206648373
20190522
1,發布輕量級的持久化引擎,支持Oracle、MySQL(20200510后支持PostgreSQL,20200707后支持SQL Server),封裝ADO.NET,可同時操作多個(主庫+分庫)資料庫
2,提供資料庫的資料字典的查看方法,示例見Demo.Phenix.Core.Data.Schema
3,提供存放日志到本地或資料庫的通用方法,示例見Demo.Phenix.Core.Log.EventLog
4,提供系統唯一的序列號,支持多執行緒、多行程、分布式應用,示例見Demo.Phenix.Core.Data.Sequence
5,提供連續遞增的序列號,支持多執行緒、多行程、分布式應用,示例見Demo.Phenix.Core.Data.Increment
6,提供直接讀取資料庫資料DataReader功能,示例見Demo.Phenix.Core.Data.Common.DataReader
20190715
1,持久化引擎支持在物體屬性上打System.ComponentModel.DataAnnotations.ValidationAttribute派生標簽,提交物件/屬性時會自動完成屬性的有效性驗證(驗證失敗拋出ValidationException)
以下默認規范會自動添加,不必手工打標簽:
System.ComponentModel.DataAnnotations.RequiredAttribute,如果屬性值不允許為空的規范是按照表欄位NOT NULL的話;
System.ComponentModel.DataAnnotations.StringLengthAttribute,如果字串屬性值長度要求是按照表欄位長度規范的話;
一旦手工打上標簽,以上默認規范會被覆寫掉
2,持久化引擎支持在物體上實作System.ComponentModel.DataAnnotations.IValidatableObject介面,也可以實作Phenix.Core.Data.Validity.IValidation介面,提交物件時自動完成物件的有效性驗證(驗證失敗拋出ValidationException)
3,提供物體類代碼生成工具Phenix.Tools.EntityBuilder工程原始碼
20190804
1,提供WebAPI服務端Phenix.Services.Host工程原始碼
2,提供WebAPI服務的phenix7.js客戶端原始碼,見Phenix.Services.Host\wwwroot\lib目錄,測驗代碼見Phenix.Services.Host\wwwroot\test
20190807
1,Phenix.Services.Host可部署在KestrelServer+Docker環境中
2,提供《Phenix.Services.Host.部署方法.doc》檔案
20190813
1,Phenix.Core.Data.Database和Phenix.Core.Data.Common.DbCommandHelper的呼叫存盤程序函式ExecuteStoredProc,回傳值改為IDictionary<string, object>型別,為存盤程序的呼叫結果集"引數名-引數值",如需轉換為JSON格式請呼叫Phenix.Core.Reflection.Utilities.JsonSerialize(result)
2,增補Phenix.Core.Data.Schema.Table、Phenix.Core.Data.Schema.View、Phenix.Core.Data.Model.EntityBase<T>的查詢函式,可讀取DataReader內容回傳物體物件或JSON格式的查詢結果
3,增補Phenix.Core.Reflection.Utilities的JsonSerialize()函式,直接將DbDataReader匯出JSON格式的查詢結果,JSON格式的屬性名為資料源的表/視圖的欄位名/別名
20190905
1,提供Phenix.Client工程,含HttpClient類Checkin、Logon、ChangePassword、Sequence、Increment、Message、UploadFile、DownloadFile、EventLog、Call等系列函式,示例代碼見:Demo.Phenix.Client.HttpClient_Message、Demo.Phenix.Client.HttpClient_File
2,提供Phenix.Business工程,含Phenix.Business.UndoableBase<T>可撤銷編輯的物體基類,為物體物件的編輯操作提供單級回滾的功能,示例見Demo.Phenix.Business.UndoableBase
3,約定時間戳欄位以'_TIMESTAMP'后綴命名
4,增補Phenix.Core.Data.Model.EntityBase<T>功能具備樂觀鎖機制,Update()和UpdateRecord()函式提供checkTimestamp引數(默認true),保證在分布式架構下新資料不會被臟資料覆寫(會拋出Phenix.Core.Data.Validity.OutdatedDataException)
20190911
1,除了主鍵(后綴'_ID')、制單人(后綴'_ORIGINATOR')、制單時間(后綴'_ORIGINATE_TIME')、制單團體(后綴'_ORIGINATE_TEAMS')等水印欄位外,約定系統自定義的水印欄位用后綴'_WM'進行標識,以便在新增記錄以后的歷次修改中,這些欄位都不會再被改動(即使編輯過物體物件也不會被持久化)
2,提供Phenix.Business.BusinessBase<T>可操作聚合樹的業務基類,為聚合根物件的整顆聚合樹提供編輯操作和持久化的功能
3,一旦為聚合樹中某個節點的業務物件打上洗掉標記(IsSelfDeleted=true),呼叫SaveDepth()函式持久化時,只要資料庫中存在物理外鍵,將會對它及其下的所有從業務物件(包括未加載到記憶體)的記錄做級聯洗掉
20190920
1,規定將WebAPI服務的Controller代碼撰寫在各自的工程里,程式集的命名以"*.Plugin.dll"作為后綴,默認會被Phenix.Services.Host自動加載并裝配到ApplicationParts中
2,發布Phenix.Services.Host時,可自動將Docker相關的檔案寫入到發布目錄(Publish目錄)中,方便部署到Docker
3,提供用戶訊息PULL和PUSH兩套方法,具體見測驗網頁user-message.html
20191013
1,升級至for .net core3.0,開發工具 Visual Studio 2019 16.3.x及以上版本
2,提供服務介面IFileService以擴展系統自身的個性化的檔案上傳下載功能,框架代碼見Phenix.Services.Extend工程里的FileService類,注入方法見Phenix.Services.Host工程Startup類里的AddFileService()代碼行,用法見測驗網頁file.html
20191021
1,phenix7.js和Phenix.Client.HttpClient類的Call函式,補充'是否加密上傳資料'、'是否解密回傳資料'引數
2,提供業務類代碼生成工具Phenix.Tools.BusinessBuilder工程原始碼
20191030
1,新增Phenix.Core.Threading.Timer類,提供定時執行任務功能,通過AddTimedTask()函式添加已實作Phenix.Core.Threading.ITimedTask介面的物件,會自動按照指定周期在一個獨立執行緒里執行這個物件的Execute()函式
2,Phenix.Core.SyncCollections命名空間的集合類,都已實作Phenix.Core.Threading.ITimedTask介面,只要通過AddTimedTask()函式加入到Phenix.Core.Threading.Timer的定時執行任務佇列里,會自動按照指定周期清理集合物件里過期的集合項,前提條件是集合項物件需實作Phenix.Core.SyncCollections.ICachedObject介面,指定它的失效時間以自動被從集合中剔除出去
20191102
1,提供非對稱加密的公鑰私鑰生成工具Phenix.Tools.CreateKeyPair工程原始碼
2,資料庫連接串配置記錄存放在Phenix.Core.db(推薦使用SQLite Expert工具打開)庫檔案PH7_Database表里,以便在程式運行時無需通過撰寫代碼注冊資料庫入口,可直接獲取Phenix.Core.Data.Database物件,具體配置方法見示例記錄的Remark欄位內容
3,注釋掉Phenix.Services.Host工程里的資料庫入口注冊代碼,改用Phenix.Core.db庫檔案PH7_Database表做資料庫連接串的配置
20191205
1,提供Phenix.Actor工程原始碼,封裝Orleans3的客戶端和服務集群配置方法和入口,以及一套輕量級的Actor開發框架,支持并行和分布式大規模服務架構設計
2,規定將Orleans服務的Grain及其介面代碼撰寫在各自的工程里,程式集的命名以"*.Plugin.dll"作為后綴,默認會被Phenix.Services.Host自動加載并裝配到ApplicationParts中
3,提供Phenix.Services.Plugin工程原始碼,包含用戶身份驗證和管理的UserGrain類、IUserGrain介面,及其代理UserGrain服務的UserProxy類,通過UserProxyFactory類注冊到Phenix.Core的權限控制模塊,注冊方法(見Phenix.Services.Host):
Phenix.Core.Security.Identity.RegisterFactory(new Phenix.Services.Plugin.UserProxyFactory());
20191227
1,提供《Phenix.Services.Host.分布式服務架構.pptx》,講解WebAPI(應用)服務和Orleans(領域)服務的搭建和部署方法
2,提供Phenix.Core.AppSettings應用系統配置工具,配置項定義方法參考Phenix.Services.Host的OrleansConfig類,系統實施時可直接在Phenix.Core.db庫檔案PH7_AppSettings表里做配置
20200107
1,添加Demo_Practice目錄,用于存放實戰演練專案的代碼
2,添加Demo.InventoryControl庫存管控演練專案到Demo_Practice目錄
3,InventoryControl演練第一步,完成貨架裝卸貨物的記錄功能,見Demo.InventoryControl.Plugin_MySQL工程
20200205
1,提供Phenix.Algorithm工程原始碼,含ZeroOneKnapsackProblem類的0-1背包演算法,支持"打包至少占有一定容量"、"打包至少占有一定容量且不低于一定價值"、"趨向最小規格且不考慮打包價值/只要滿足最低打包價值"等約束條件,用法見Demo.Phenix.Algorithm.CombinatorialOptimization.ZeroOneKnapsackProblem工程
2,為Phenix.Algorithm工程添加BunchKnapsackProblem類,從M支集束的N個物品中挑選出一個盡可能整支和價值高的子集使其裝滿容量為W且允許有一定超載范圍的背包
3,InventoryControl演練第二步,完成從Area-Alley-Location逐層自動挑貨的標記功能,見Demo.InventoryControl.Plugin_MySQL工程
20200213
1,為Phenix.Actor工程封裝Orleans Streams功能,見StreamProvider類
2,為Demo.InventoryControl.Plugin_MySQL工程添加Demo.InventoryControl.Plugin.oom設計檔案
3,添加Demo.InspectionStation檢查站作業演練專案到Demo_Practice目錄
4,InspectionStation演練第一步,完成各作業點的地磅和車牌號的資料上報和讀取、閘口的放行,作業點動態資訊的發布和訂閱,見Demo.InspectionStation.Plugin_MySQL工程
20200217
1,升級用戶訊息發布和訂閱功能,允許在單一的訊息ID上持續發送訊息,可用于資料監控等業務場景,示例代碼見:Demo.Phenix.Client.HttpClient_Message
2,為Phenix.Actor工程添加StreamEntityGrainBase類,可支持網格化的訊息發布和訂閱機制
3,InspectionStation演練第二步,中控的WebAPI客戶端可訂閱指定的多個作業點的動態資訊,通過SignalR的推送機制實時獲取到最新資料,見Demo.InspectionStation.Plugin_MySQL工程
20200220
1,修訂《Phenix.Services.Host.部署方法.doc》,補充'開發環境的搭建'等章節
2,提供《Phenix.Services.Host.分布式服務插件.pptx》,講解WebAPI(應用)服務和Orleans(領域)服務的設計和開發方法
20200224
1,重構Phenix.Core持久化引擎,強調聚合和聚合根的領域物件模型,在采取分庫分表策略的資料庫部署場景下,一棵聚合樹里的所有物件都隨聚合根物件一起鎖定在某個分庫上進行持久化,持久化的路由演算法是取自聚合根物件里一個映射'_RU'后綴欄位的屬性值經HASH取余得到具體的分庫ID
2,重構Phenix.Core權限控制模塊,借助Phenix.Services.Plugin工程實作分布式部署
3,重構Phenix.Actor工程,精簡EntityGrainProxyBase僅限于物體Grain的代理功能
20200315
1,提供《Phenix.Core.Data.持久層開發介面.doc》,講解Phenix.Core持久化引擎的資料庫集群、主庫+分庫、分庫分表策略、使用介面和持久層開發方法
2,為Phenix.Services.Host工程添加Dashboard插件,可在瀏覽器上打開可視化Silo監控工具:http://localhost:8080/
3,完善Phenix.Core.AppSettings功能,類似Phenix.Core.Data.Database.Fetch()函式會自動加密Phenix.Core.db庫檔案PH7_Database表Password欄位值,ReadValue()函式也會加密PH7_AppSettings表Value欄位值
4,為Phenix.Core工程添加Plugin功能(命名空間為Phenix.Core.Plugin),用于動態加載和管理包含有實作了IPlugin介面的插件類的程式集
20200408
1,修訂《Phenix.Services.Host.部署方法.doc》的"服務組件的開發和部署"章節
2,添加《Phenix.Core.Data.持久層開發介面.doc》的"用DataReader獲取物體物件/JSON的Sheet方法"章節
3,完善Phenix.Core.Log.EventLog功能,可防止連續寫同一message造成本地日志瞬時暴漲的問題,中斷重復日志強度閾值由靜態屬性BreakRepeatIntensityPerMinute控制,預設為重復日志超過每分鐘6000次
4,完善用戶身份驗證功能,可防止同一用戶高頻訪問服務,中斷服務請求強度閾值由Phenix.Core.Security.User的BreakRequestIntensityPerMinute靜態屬性控制,預設為服務請求超過每分鐘6000次
5,為Phenix.Actor工程添加TreeEntityGrainBase、StreamTreeEntityGrainBase、TreeEntityGrainProxyBase類,以支持樹狀結構Kernel的處理
6,豐富Phenix.Services.Plugin工程功能,注冊用戶可搭建起組織架構成為公司管理員,示例見Demo.Phenix.Client.Security.Identity_MyselfRootTeams
20200510
1,豐富Phenix.Algorithm工程ZeroOneKnapsackProblem、BunchKnapsackProblem的功能,可支持超大規格(容量)背包的運算
2,持久化引擎支持PostgreSQL,解決方案Phenix.NET7_PgSQL.sln,程式集輸出目錄Bin_PgSQL,配置庫Phenix.Core.db需升級至最新版
20200516
1,提供Phenix.Core.Data.Schema.Table配置項ClassNameByTrimTableName(默認false),可根據自己Build Entity的需要設定類名取自被整理(如果第PrefixCount(默認3)位后是"_"則剔去其及之前的字符)的表名
2,提供Phenix.Core.Data.Schema.View配置項ClassNameByTrimViewName(默認false),可根據自己Build Entity的需要設定類名取自被整理(如果第PrefixCount(默認3)位后是"_"則剔去其及之前的字符, 如果第SuffixCount(默認1)位前是"_"則剔去其及之后的字符)的視圖名
3,提供Phenix.Core.Data.Schema.Column配置項FieldNameByTrimColumnName(默認true),可根據自己Build Entity的需要設定類的欄位名和屬性名取自被整理(如果第PrefixCount(默認2)位后是"_"則剔去其及之前的字符)的表/視圖欄位名
4,豐富Phenix.Services.Plugin工程功能,公司管理員可為自己員工注冊用戶,為其配上所在團隊(自己公司組織架構上的某個節點)、所擔崗位,鎖定/解鎖、注銷/恢復
20200523
1,修正系統管理員(用戶名ADMIN,默認密碼ADMIN)第一次無法登錄注冊的問題,并可增刪改系統的崗位定義
2,提供Phenix.Core.Data.Rule.ValidationException資料驗證例外類,用于將其ValidationMessage屬性拋到客戶端,客戶端在攔截到HTTP狀態409后,利用ValidationMessage屬性的MessageType、StatusCode(取1000以上的整型值)分類處理例外訊息Hint
3,增補Phenix.Core.Net.Api.ControllerBase的SelectRecord()函式,直接打包到分頁查詢結果DataPageInfo物件,DataPageInfo的DataName為物體類名,DataSize為資料量,PageNo為頁碼,PageSize為分頁大小,PageBody為當前頁JSON格式的記錄資料
20200603
1,為持久化引擎添加條件運算式動態傳參的功能,涉及Phenix.Core.Data.Schema.Sheet的UpdateEntity、UpdateRecord、DeleteRecord、SelectEntity、SelectRecord、RecordCount等函式,以及Phenix.Core.Data.Model.EntityBase<T>、Phenix.Core.Net.Api.ControllerBase的相關功能,緊隨著條件運算式(criteriaLambda/criteriaExpression)后面都會有一個條件物件(criteria)引數
2,Phenix.Core.Data.Schema.Sheet、Phenix.Core.Net.Api.ControllerBase的SelectRecord可按照介面定義回傳指定的屬性值記錄,而不是整個物體物件打包到JSON中
3,借助Phenix.NET6實作用戶登錄身份驗證,可參考代碼實作第三方身份驗證
20200613
1,修正身份驗證失敗(比如登錄口令輸錯)時瀏覽器F12提示"Origin null is not allowed by Access-Control-Allow-Origin"的問題
2,修訂《Phenix.Core.Data.持久層開發介面.doc》,補充條件物件的使用方法,補充Phenix.Core.Data.Database的功能介紹
3,添加Demo.IDOS智能倉儲作業系統演練專案到Demo_Practice目錄,僅限于Phenix.NET7_PgSQL解決方案可見
4,修正Phenix.Tools.EntityBuilder、Phenix.Tools.BusinessBuilder代碼生成填充表欄位默認值時無法轉換bool型別的問題
20200707
1,持久化引擎支持SQL Server,解決方案Phenix.NET7_MsSQL.sln,程式集輸出目錄Bin_MsSQL,配置庫Phenix.Core.db需升級至最新版
2,添加對WebAPI傳入引數的驗證,回傳客戶端HTTP狀態為400的報文體是ValidationMessage物件,其StatusCode屬性為400,Hint屬性為驗證訊息
3,Phenix.Core.Data.Model.EntityBase<T>支持跨域傳遞并持久化,舊版物體類需升級(為初始函式添加 dataSourceKey 和 id 引數)或重新生成代碼,類似這樣:
[Newtonsoft.Json.JsonConstructor]
private User(string dataSourceKey, long id, string name)
: base(dataSourceKey, id)
{
_name = name;
}
20200718
1,調整表名/視圖名/欄位名映射規則,只要名稱里出現的第一個'_'是在第1-4位之間,'_'及其前面的字串都算作是前綴
2,提供統一的服務訪問入口:/api/service/portal,能讓客戶端直接訪問繼承自Command<T>的物件的公共函式,訪問授權的控制方法與控制器上的保持一致,同樣可以在這些函式上打[AllowAnonymous](或實作IAllowAnonymous的標簽)、[Authorize](或實作IAuthorizeData的標簽)、繼承自Phenix.Core.Net.Filters.AuthorizationFilter的標簽,訪問授權的角色配置是在第一次被訪問時自動保存在PH7_Controller_Role表中,獲取方法參考Phenix.Services.Plugin.Api.Security.RoleController,角色的動態配置可自行開發功能來編輯PH7_Controller_Role表
20200728
1,為Phenix.Actor工程添加GrainBase、StreamGrainBase類,以提供最基本的通用功能
2,為Phenix.Core.Data.Database添加AppSettings屬性,可將應用系統配置項持久化到資料庫中
待完成:
2,添加《Phenix.Core.Security.身份驗證方法.doc》
3,適配雙活資料中心的Actor狀態跨地域同步機制
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/100082.html
標籤:.NET Core
