基於.net core 3 和 Orleans 3 的 開發框架:Phenix Framework 7

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,封裝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.Data.Common.DataReader的SelectRecord()函數,直接導出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


20191011
1,升級至for .net core3.0,開發工具 Visual Studio 2019 16.3.x及以上版本
2,提供服務接口IFileService以擴展系統自身的個性化的文件上傳下載功能,框架代碼見Phenix.Services.Extend工程裏的FileService類,注入方法見Phenix.Services.Host工程Startup類裏的AddFileService()代碼行,用法見測試網頁file.html


20191013
1,修訂《Phenix.Services.Host.部署方法.doc》
2,調通Phenix.Services.Host部署在Docker的方法


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());


20191216
1,升級至for .net core3.1 + SignalR3.1 + Orleans3.1
2,調通Phenix.Services.Host\wwwroot\test目錄的測試網頁


20191227
1,提供《Phenix.Services.Host.分佈式服務架構.pptx》,講解WebAPI(應用)服務和Orleans(領域)服務的搭建和部署方法
2,提供Phenix.Core.AppSettings應用系統配置工具,配置項定義方法參考Phenix.Services.Host的OrleansConfig類,系統實施時可直接在Phenix.Core.db庫文件PH7_AppSettings表裏做配置


20200107
1,微調Phenix.Actor工程的功能
2,添加Demo_Practice目錄,用於存放實戰演練項目的代碼
3,添加Demo.InventoryControl庫存管控演練項目到Demo_Practice目錄
4,InventoryControl演練第一步,完成貨架裝卸貨物的記錄功能,見Demo.InventoryControl.Plugin_MySQL工程


20200113
1,提供Phenix.Algorithm工程源碼,含ZeroOneKnapsackProblem類的0-1揹包算法,用法見Demo.Phenix.Algorithm.CombinatorialOptimization.ZeroOneKnapsackProblem工程
2,完善Phenix.Core.AppSettings類的功能


20200116
1,豐富Phenix.Algorithm工程ZeroOneKnapsackProblem類的功能,添加"打包至少佔有一定容量"、"打包至少佔有一定容量且不低於一定價值"、"趨向最小規格且不考慮打包價值/只要滿足最低打包價值"等約束條件
2,豐富Demo.Phenix.Algorithm.CombinatorialOptimization.ZeroOneKnapsackProblem工程的演示代碼


20200205
1,爲Phenix.Algorithm工程添加BunchKnapsackProblem類,從M支集束的N個物品中挑選出一個儘可能整支和價值高的子集使其裝滿容量爲W且允許有一定超載範圍的揹包
2,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,補充和修訂Demo.InspectionStation和Demo.InventoryControl的設計文檔
3,提供《Phenix.Services.Host.分佈式服務插件.pptx》,講解WebAPI(應用)服務和Orleans(領域)服務的設計和開發方法


20200224
1,重構Phenix.Core持久層框架,強調聚合和聚合根的領域對象模型,在採取分庫分表策略的數據庫部署場景下,一棵聚合樹裏的所有對象都隨聚合根對象一起鎖定在某個分庫上進行持久化,持久化的路由算法是取自聚合根對象裏一個映射'_RU'後綴字段的屬性值經HASH取餘得到具體的分庫ID
2,重構Phenix.Core權限控制模塊,藉助Phenix.Services.Plugin工程實現分佈式部署
3,重構Phenix.Actor工程,精簡EntityGrainProxyBase僅限於實體Grain的代理功能


20200303
1,梳理Phenix.Core持久層框架
2,提供《Phenix.Core.Data.持久層開發接口.doc》,講解Phenix.Core持久層框架的數據庫集羣、主庫+分庫、分庫分表策略、使用接口和持久層開發方法


20200315
1,爲Phenix.Services.Host工程添加Dashboard插件,可在瀏覽器上打開可視化Silo監控工具:http://localhost:8080/
2,完善Phenix.Core.AppSettings功能,類似Phenix.Core.Data.Database.Fetch()函數會自動加密Phenix.Core.db庫文件PH7_Database表Password字段值,ReadValue()函數也會加密PH7_AppSettings表Value字段值
3,爲Phenix.Core工程添加Plugin功能(命名空間爲Phenix.Core.Plugin),用於動態加載和管理包含有實現了IPlugin接口的插件類的程序集
2,修訂Phenix.Tools.EntityBuilder、Phenix.Tools.BusinessBuilder代碼生成問題,增補'protected override void InitializeSelf()'函數代碼生成功能,用於填充表字段默認值


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工程功能,公司管理員可註冊自己組織架構上的用戶併爲其配上所在團隊(自己公司組織架構上的某個節點)、所擔崗位,系統管理員(用戶名ADMIN,默認密碼ADMIN)可增刪改系統的崗位定義,示例見Demo.Phenix.Client.Security.Identity_MyselfRootTeams

 

 


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章