Phenix.NET for WebAPI WF CSLA,企业级、分布式、符合领域建模的OOP软件快速开发平台
Phenix Framework and Teamwork Tools 20190624 下載地址 :
https://download.csdn.net/download/phenixiii/11316834
?
Phenix Framework and Teamwork Tools 交流群:206648373,可在群文件里下載最新版
??
?
?在IDE中設計業務類的映射關系演示:
?
以下是版本升級日志:
2007-11-09 ?1,完成 RemotingAgent 組件。為 Client 程序集提供統一的 remoting 參數設置和遠程對象代理工廠;
? ? ? ? ? ? 2,完成 Login 組件。為 Client 程序集提供統一的登錄界面和用戶校驗機制,同時,自動進行文件的升級、本地與數據庫的對時等功能;
? ? ? ? ? ? 3,初步構建了一個應用服務容器,除了為 Login 等組件提供服務外,可自動加載當前目錄下的 Service 程序集;
2008-05-21 ?1,完成業務組件框架,繼承 CSLA 的 BusinessListBase、BusinessBase、ReadOnlyListBase、ReadOnlyBase、CommandBase,支持主從業務對象集;
? ? ? ? ? ? 2,可自動映射和持久化業務對象,支持同一登陸用戶的多步長事務;
? ? ? ? ? ? 3,封裝 CSLA 的本地和遠程調用模式,通過 Login 組件自動切換,方便調試服務端代碼;
2008-07-11 ?業務處理跟蹤日志(留痕)引擎;
? ? ? ? ? ??
2008-08-01 ?數據集動態刷新服務引擎;
2008-08-03 ?Login 組件,如果用戶選擇的應用服務器不可登陸,可自動挑選可登陸的應用服務器;
...
2011-10-9升級:
BusinessBase取子業務對象集合時,可以從本地的業務對象集合中過濾出來:
? ? /// <summary>
? ? /// 取從業務對象集合
? ? /// </summary>
? ? /// <param name="expression">條件表達式</param>
? ? /// <param name="source">數據源</param>
? ? public TDetail GetDetail<TDetail, TDetailBusiness>(Expression<Func<TDetailBusiness, bool>> expression, TDetail source)
? ? ? where TDetail : BusinessListBase<TDetail, TDetailBusiness>
? ? ? where TDetailBusiness : BusinessBase<TDetailBusiness>
2011-10-24升級:
排除未注冊的業務類,當Fetch時陷入死循環的缺陷。
?
2011-11-09升級:
AddIn工具添加“構建指令類”功能。
2011-11-27升級:
1,框架案例.zip新增Phenix.Windows.dll源碼,你可以重新編譯支持非v10.1版本的DevExpress
2,新增功能:在業務類的OnInsertingSelf、OnUpdatingSelf中中嵌入了附加的條件語句,可以實現如下效果的提交語句:
update PH_Department set DP_Name = 'aaa' where DP_ID = 33221343543545
and not exists (select * from PH_Department where DP_Name = 'aaa' and DP_ID <> 33221343543545)
本案例實現了DP_Name不允許重復的業務邏輯。不過業務類中我們無需添加類似邏輯代碼,唯一索引驗證功能在框架中已默認實現。
? ? /// <summary>
? ? /// 新增本對象集合之前
? ? /// 在運行持久層的程序域里被調用
? ? /// </summary>
? ? /// <param name="transaction">數據庫事務</param>
? ? /// <param name="limitingConditions">限制保存的條件</param>
? ? protected virtual void OnInsertingSelf(DbTransaction transaction, out Criterions[] limitingConditions)
? ? {
? ? ? limitingConditions = 需要限制保存的條件;
? ? }
? ? /// <summary>
? ? /// 更新本對象集合之前
? ? /// 在運行持久層的程序域里被調用
? ? /// </summary>
? ? /// <param name="transaction">數據庫事務</param>
? ? /// <param name="limitingConditions">限制保存的條件</param>
? ? protected virtual void OnUpdatingSelf(DbTransaction transaction, out Criterions[] limitingConditions)
? ? {
? ? ? limitingConditions = 需要限制保存的條件;
? ? }
3,當提交時滿足限制條件則拋出CheckSaveException異常。如果是通過BarManager提交的,則可以在它的OnSaveFailed(e)事件里處理這個異常,如果不想由BarManager提示的話,則可以將e.Applied=true
2011-12-14升級:
BusinessListBase新增功能:可通過GetRecordCount()函數獲取指定條件下的記錄數:
? ? /// <summary>
? ? /// 獲取記錄數量
? ? /// </summary>
? ? /// <param name="criteriaExpression">條件表達式</param>
? ? public static long GetRecordCount(CriteriaExpression criteriaExpression)
?
2011-12-19升級:
類似下面的語句可以產生Exists、UnExists語句:
WorkingProcessLocks = ProcessLockList.Fetch(
? ? ? ? ProcessLock.AllowexecuteProperty == true & ProcessLock.NameProperty == "a"& ProcessLockList.Exists(ProcessLock.AllowexecuteProperty == false));
Command Text="select ?PL_NAME,PL_ALLOWEXECUTE,PL_TIME,PL_USERNUMBER,PL_REMARK from PH_PROCESSLOCK where (( ?PL_ALLOWEXECUTE ?= :PK_PL_ALLOWEXECUTE689faafad8d2 ?and ? PL_NAME ?= :POCESSLOCK_PL_NAME0a99cadeeaee )and ( exists (select * from PH_PROCESSLOCK where ? PL_ALLOWEXECUTE ?= :PK_PL_ALLOWEXECUTEae66969bf88a )))
2011-12-21升級:
排除SQLServer數據庫下的bug。
?
2011-12-26升級:
加入“權限管理、系統應用框架”源碼。
請留意版權聲明:Phenix.license.txt
?
2012-01-16升級:
糾正Phenix.Services.Host.exe在Win7-64位旗艦版下注冊Phenix.Addin不到VS2010執行目錄下的情況。
?
2012-03-31升級:
1,支持簡繁體;
2,糾正一些細小bug;
?
2012-05-13升級:
1,重新整理授權規則類及配套的輔助代碼生成Addin工具;
2,內含系列說明書:
《Phenix Framework Tools.使用指南.01.簡介》
《Phenix Framework Tools.使用指南.02.部署開發環境》
《Phenix Framework Tools.使用指南.03.Addin工具使用方法》
《Phenix Framework Tools.使用指南.04.登錄應用系統》
《Phenix Framework Tools.使用指南.05.業務對象公共接口的授權》
《Phenix Framework Tools.使用指南.06.ReadWriteAuthorization組件》
《Phenix Framework Tools.使用指南.07.ExecuteAuthorization組件》
?
2012-5-16升級:
添加說明書:
《Phenix Framework Tools.使用指南.08.業務對象公共接口的數據驗證》
《Phenix Framework Tools.使用指南.09.EditValidation組件》
?
2012-6-25升級:
添加說明書并整理公共接口:
《Phenix Framework Tools.使用指南.10.BarManager組件》
《Phenix Framework Tools.使用指南.11.業務對象生命周期及其狀態》
《Phenix Framework Tools.使用指南.12.業務結構對象模型》
?
2012-8-30升級:
1,CSLA封裝到4.3.12版本
2,增加分頁Fetch機制:Phenix.Business.BusinessListPageBase
3,添加說明書并整理公共接口:
《Phenix Framework Tools.使用指南.13.日志服務》
《Phenix Framework Tools.使用指南.14.過程鎖》
《Phenix Framework Tools.使用指南.15.業務碼》
《Phenix Framework Tools.使用指南.16.分頁檢索業務對象》
《Phenix Framework Tools.使用指南.17.條件檢索業務對象》
《Phenix Framework Tools.使用指南.18.數據庫設計規則》
《Phenix Framework Tools.使用指南.19.緩存》
《Phenix Framework Tools.使用指南.20.動態刷新》
4,CSLA封裝到4.3.13版本
5,優化業務對象緩存機制的性能
?
2012-12-05
1,全面優化性能
2,支持SQLserver能力已經驗證
3,加強Fetch的查詢條件表達式
?
2012-12-31
支持諸如下述Fetch方法:
List<string> names = new List<string>() {"ADMIN"};
ProcessLockList.Fetch(mm => !names.Contains(mm.Name));
2013-1-27
1,支持諸如下述Fetch方法:
List<string> shopcodelist = pdlist.Select(mm => mm.ShopCode).ToList();
SPA_Business.Shop_BaseList ssl = SPA_Business.Shop_BaseList.Fetch(mm => shopcodelist.Contains(mm.Shopcode));
2,補充:BusinessBase類RefreshLink()函數
3,修正bug:對SqlServer的支持等
4,修正bug:分頁功能、計算字段功能、GetLink功能
5,完善:允許混合LAN和WAN環境下連同一應用服務器
6,優化Addin工具: 枚舉的Caption屬性帶字段緩存
7,優化性能
8,優化升級客戶端文件性能
2013-2-4
修正bug:帶CheckDirtyOnSaving = true樂觀鎖機制的刪除,當未能刪除時應該拋CheckDirtyException異常
2013-2-7
支持諸如下述Fetch方法:
ProcessLockList.Fetch(mm => mm.Name.Contains("ADMIN");
2013-2-14
支持同構/異構節點的樹狀業務類:Phenix.Business.BusinessTreeBase、Phenix.Business.BusinessTreeNodeBase
對應的窗體組件:Phenix.Windows.TreeListDragDropManager,管理TreeList控件的構建和拖拽等功能
2013-3-14
1,修正bug:對SqlServer的支持等
2,重構:BusinessListPageBase
2013-3-17
1,優化性能等
2,FieldAggregateAttribute增加ToDoOnUpdate屬性:控制在update的時候是否需要ToDo主表的對應字段
2013-3-21
發布:Phenix.Web.Mvc源碼
2013-4-7
擴展Phenix.Windows.BarManager組件:
解決因Execl文檔存在多個Sheet且未指定Sheet名稱或Sheet名稱錯誤的問題而影響導入,可通過彈出“輸入Execl的Sheet名稱”對話框來讓用戶更改Sheet的名稱,起到系統容錯的作用
2013-4-8
添加Addin工具新功能:對于映射視圖的業務/查詢類,當使用“初始化/編輯業務類”、“初始化/編輯查詢類”時,會自動為當前工程添加或重寫該視圖的SQL文件,文件名為視圖名.SQL
2013-4-9
添加說明書:
《Phenix Framework Tools.權限管理.01.簡介》
《Phenix Framework Tools.權限管理.02.搭建解決方案》
2013-4-15
1,優化全景數據獲取
2,優化Selected清單與界面的交互方式
3,添加說明書:
《Phenix Framework Tools.權限管理.03.角色管理工程.勾選清單》
2013-4-28
1,重構樹狀業務類:Phenix.Business.BusinessTreeBase、Phenix.Business.BusinessTreeNodeBase,僅支持同構節點
2,對應的窗體組件:Phenix.Windows.TreeListManager,管理TreeList控件的屬性設置、拖拽權限驗證等功能
3,添加說明書:
《Phenix Framework Tools.權限管理.04.崗位管理工程.樹狀結構》
《Phenix Framework Tools.權限管理.05.部門管理工程.快捷導航》
2013-5-27
1,完善帶屬性聯結表的多對多數據處理方法
2,完善執行規則驗證機制,可支持傳遞給驗證類的上下文Phenix.Business.Rules.AuthorizationContext帶Arguments參數供判斷
3,升級CSLA到4.3.14版本
4,升級Phenix.Extended支持到12.2.X版本DevExpress控件包
5,升級配置庫:需重啟Phenix.Services.Host.exe以便自動升級
6,添加說明書:
《Phenix Framework Tools.權限管理.06.表過濾器管理工程.級聯選擇》
《Phenix Framework Tools.權限管理.07.切片管理工程.勾選編輯》
《Phenix Framework Tools.權限管理.08.用戶管理工程.執行規則》
《Phenix Framework Tools.權限管理.09.用戶日志管理工程.勾選刪除》
2013-6-22
1,優化主從數據處理Filter方法及性能
2,支持帶主從層級關系GridView的GridControl
3,支持Linq條件中帶Array的Fetch方法
4,優化業務對象緩存機制的性能
5,添加說明書:
《Phenix Framework Tools.權限管理.10.程序集管理工程.主從結構》
《Phenix Framework Tools.使用案例.業務數據的缺省值-序號》
《Phenix Framework Tools.使用案例.業務數據的讀寫-加解密》
《Phenix Framework Tools.權限管理.11.自動解除用戶登錄失敗鎖工程.服務插件》
2013-6-23
修正bug:當業務對象的AllowEdit屬性值為false而業務對象集合的AllowEditItem屬性值為true時,BarManager的Edit功能按鈕應該是不允許被點擊的
2013-6-27
修正bug:恢復支持帶非long類型主鍵的類,這些對象在new時主鍵不會被賦值,也不會在嘗試賦值時拋出異常
2013-6-29
重構Phenix.StandardRule.Information:添加簡單的評審流程
2013-7-4
1,提供Phenix.Core.Net.RemotingConfig.Timeout配置屬性,控制remoting請求在超時前等待的毫秒數
2,提供Phenix.Core.Data.DbConnectionInfo.MSSqlConnectTimeout配置屬性,控制MSSql數據庫的Connect Timeout超時等待時間(秒)
3,提供Fetch超時配置屬性:在你要Fetch的業務(集合)類里,覆寫
? ? /// <summary>
? ? /// 等待Fetch命令執行的時間(秒數), null 指示不限制
? ? /// 默認值為 null
? ? /// </summary>
? ? public virtual int? FetchTimeout
? ? {
? ? ? get { return null; }
? ? }
2013-7-19
添加SHB.Charge.Subject演示工程和視頻鏈接
2013-8-23
1,修正組件有時會發生序列化錯誤的問題
2,Phenix.Windows的BarManager組件中添加兩事件:
? ? /// <summary>
? ? /// 刪除按鈕觸發提示被否決后事件
? ? /// </summary>
? ? public event EventHandler<BarItemDeleteEventArgs> DeleteRejected;
? ? /// <summary>
? ? /// 取消按鈕觸發提示被否決后事件
? ? /// </summary>
? ? public event EventHandler<BarItemClickEventArgs> CancelRejected;
2013-9-2
1,擴展EditValidation、ReadWriteAuthorization,可支持DevExpress.XtraTreeList.Columns.TreeList
2,修正bug:對SqlServer的支持
2013-9-24
修正Addin工具中構建編輯業務類界面上的配置屬性AllowReservedColumn,使之與IsBusinessCodeColumn、IsInputerColumn等配置屬性無關聯
2013-10-18
擴充業務基類、業務集合基類的:
? ? /// <summary>
? ? /// 構建本業務對象之前
? ? /// 在運行持久層的程序域里被調用
? ? /// </summary>
? ? /// <param name="connection">數據庫連接</param>
? ? /// <param name="command">DbCommand</param>
? ? /// <param name="criterions">條件集</param>
? ? protected virtual void OnFetchingSelf(DbConnection connection, DbCommand command, Criterions criterions)
? ? /// <summary>
? ? /// 構建本業務對象之前
? ? /// 在運行持久層的程序域里被調用
? ? /// </summary>
? ? /// <param name="transaction">數據庫事務</param>
? ? /// <param name="command">DbCommand</param>
? ? /// <param name="criterions">條件集</param>
? ? protected virtual void OnFetchingSelf(DbTransaction transaction, DbCommand command, Criterions criterions)
可重載后對command.CommandText進行處理,如果被賦過SQL語句,則會跳過框架持久層引擎自動拼裝SQL的功能,也就是可以干預數據提取過程
2013-10-26
1,增加host服務程序的監控功能,崩潰時可啟動新進程:Phenix.Services.Host.Monitor.exe,64位執行Phenix.Services.Host.Monitor.x64.bat、32位執行Phenix.Services.Host.Monitor.x86.bat
2,重構分頁業務類:Phenix.Business.BusinessListPageBase、Phenix.Business.BusinessPageBase,業務對象含分頁號PageNo屬性,可用于界面BindingSource.Filter的過濾顯示
3,重寫說明書:
《Phenix Framework Tools.使用指南.16.分頁檢索業務對象》
4,配置庫表PH_AssemblyClass添加AC_Authorised字段,默認下只有AC_Type = Phenix.Core.Dictionary.AssemblyClassType.Form時才AC_Authorised = 1,也就是窗體上的控件、組件可被授權控制,
其他如業務類等對象,普通應用場景下不會要求權限控制到屬性級別,所以AC_Authorised = 0,當然,如果改成了1,框架就允許授權控制到它
5,重新梳理業務類的GetLink和GetDetail函數,解決了緩存不完善的情況發生
2013-11-7
1,可選擇僅允許一個用戶一個IP地址登錄系統
2,提醒密碼復雜度(長度大于6位且含數字和大小寫字母或特殊字符)
3,提醒密碼過期天數
2013-11-16
1,針對調用編輯函數時拋出的Csla.Core.UndoException,提供更為詳細的提示信息,比如可指出業務對象與Parent之間EditLevel的不一致、業務對象中含有未打上[Csla.NotUndoable]標簽的業務對象字段等現象;
2,Link對象可跟隨業務對象一起編輯、提交,本功能可用業務對象的下列屬性開關:
? ? /// <summary>
? ? /// 可自動保存關聯的業務對象
? ? /// 缺省為 true
? ? /// </summary>
? ? public virtual bool AutoSaveLinks
? ? {
? ? ? get { return true; }
? ? }
3,Addin工具在構建業務對象代碼時, 提供了自動生成工廠方法New()函數代碼的功能,可提供新建業務對象強類型傳參填充所有字段的功能,方便設計大批量數據導入功能的業務場景;當然,如果傾向于通用性且能忍受反射機制帶來的性能損耗,也可調用BusinessListBase提供的工廠方法New()函數:
? ? /// <summary>
? ? /// 新增業務對象集合
? ? /// </summary>
? ? /// <param name="source">數據源</param>
? ? /// <param name="propertyInfos">數據屬性信息隊列, 順序與數據源columnIndex一致, 當為null、空隊列時按source列名與業務類屬性名匹配條件進行數據填充</param>
? ? public static T New(DataTable source, IList<Phenix.Core.Mapping.IPropertyInfo> propertyInfos)
2013-11-29
廢棄Phenix.Core.Mapping.CriteriaOperate中大小寫相關枚舉,新增Phenix.Core.Mapping.CriteriaFieldAttribute大小寫相關屬性:
? ? /// <summary>
? ? /// 條件操作忽略大小寫
? ? /// 僅針對字符串類型的字段
? ? /// 缺省為 false
? ? /// </summary>
? ? public bool OperateIgnoreCase { get; set; }
Phenix.Core.Mapping.CriteriaExpression的構建函數新增大小寫控制的ignoreCase參數
2013-12-6
1,添加說明書:
《Phenix Framework Tools.使用案例.Web服務開發注意事項》
2,Phenix.Core.Mapping.ClassAttribute新增屬性:
? ? /// <summary>
? ? /// 是否從服務器獲取序號
? ? /// 在New業務對象時為PrimaryKey字段賦服務器上的唯一值, 這在本地處于多進程環境里是更加穩妥的
? ? /// 缺省為 false, 也就是從本地(一個進程有一個)序號生成器獲取,性能高
? ? /// </summary>
? ? public bool SequenceFromServer { get; set; }
2014-1-17
增加:
? ? /// <summary>
? ? /// 清除關聯業務對象Cache
? ? /// </summary>
? ? protected void ClearLinkCache(Type type)
? ? /// <summary>
? ? /// 清除從業務對象Cache
? ? /// </summary>
? ? protected void ClearDetailCache(Type type)
2014-2-26
1,增加:Phenix.Business.Tunnel.FastSaveCommand,提供快速批量Save數據功能,具體見:
《Phenix Framework Tools.使用案例.業務數據的讀寫-快速Save》
2,改進:將業務類的GetDetail()拆分為GetCompositionDetail()、GetAggregationDetail(),以區分“組合關系”、“聚合關系”,
對于GetAggregationDetail(),當業務對象被刪除時,其Detail業務對象僅清空外鍵字段,不做級聯刪除;而GetCompositionDetail(),就是原來的GetDetail(),可做級聯刪除
3,支持:32/64位Win7操作系統、Visual Studio 2010/2012/2013上,Addin工具的注冊
4,添加說明書:
《Phenix Framework Tools.權限管理.12.重置口令.工作流》
5,BusinessListBase新增功能:與GetRecordCount()函數用法相同,可根據指定條件刪除記錄:
? ??
? ? /// <summary>
? ? /// 刪除記錄
? ? /// </summary>
? ? /// <param name="criteriaExpression">條件表達式</param>
? ? public static int DeleteRecord(CriteriaExpression criteriaExpression)
比如:刪除用戶工號等于"3333"的用戶記錄:UserList.DeleteRecord(User.UserNumberProperty == "3333");
2014-3-27
1,添加說明書:
《Phenix Framework Tools.使用指南.21.異構服務集群》
《Phenix Framework Tools.權限管理.13.打印用戶清單.自定義報表》
2,解除Phenix.Windows.Client.csproj安全性異常
3,糾正Phenix.Services.Host.x86/x64.exe初始化時無法搭建配置庫的問題
4,支持DevExpressComponents-13.2.X版本;
5,允許映射視圖的類含多個表的主鍵時可自動提交主表數據,見測試工程:
? ? Phenix.Test.使用指南.12.8.1.1
? ? Phenix.Test.使用指南.12.8.1.2
2014-5-22
1,補充:BusinessBase類NewPure函數,可新增未初始化字段值的業務對象
2,新增測試工程:
? ? Phenix.Test.使用指南.11.2.1
? ? Phenix.Test.使用指南.11.2.2
? ? Phenix.Test.使用指南.11.2.3
? ? Phenix.Test.使用指南.11.2.4
? ? Phenix.Test.使用指南.11.2.5
? ? Phenix.Test.使用指南.11.3.2.1.4
? ? Phenix.Test.使用指南.11.3.2.2
? ? Phenix.Test.使用指南.11.5.1.1
? ? Phenix.Test.使用指南.11.5.2.2
? ? Phenix.Test.使用指南.12.6.2.1
? ? Phenix.Test.使用指南.12.6.2.2
? ? Phenix.Test.使用指南.12.6.2.8
? ? Phenix.Test.使用指南.12.6.2.12?
? ? Phenix.Test.使用指南.15.6
? ? Phenix.Test.使用指南.16.3
? ? Phenix.Test.使用指南.17.3
3,重構Phenix.Windows.CriteriaCombineControl動態查詢條件功能,重構Phenix.Security.Windows.UserManage以演示動態查詢條件功能
4,Phenix.Core.AppSettings新增可自定義config文件路徑配置屬性:ConfigFilename,見測試工程:
? ? Phenix.Test.使用指南.3.13.1
5,BusinessBase、BusinessListBase類新增以下方法:
? ? /// <summary>
? ? /// 檢索出從業務對象隊列
? ? /// </summary>
? ? public IList<TDetailBusiness> FindDetailBusinesses<TDetailBusiness>()
? ? ? where TDetailBusiness : BusinessBase<TDetailBusiness>
? ? ??
6,修正web應用中Phenix.Business.Security.UserPrincipal.User的緩存問題
7,修正IDE環境下調試web應用時Phenix.Core.AppConfig.AppType不等于AppType.Webform的現象
2014-6-24
1,新增測試工程:
? ? Phenix.Test.使用指南.12.6.2.5.1
? ? Phenix.Test.使用指南.12.8.4
2,修正了Phenix.Business、Phenix.Addin、Phenix.Workflow的一些bug
3,廢棄Phenix.Workflow的Phenix.Business.Workflow.ResumeCommand,將
? ? Phenix.Business.Workflow.ResumeCommand.Execute(workflowTaskInfo);
? 改成
? ? workflowTaskInfo.ProceedWorkflow();
4,修正bug:對SqlServer日期數據的支持
5,業務對象Fetch提速
2014-8-8
1,Phenix.Windows的BarManager組件新增屬性:
? ? /// <summary>
? ? /// OnFetched時是否自動進入編輯狀態
? ? /// </summary>
? ? [DefaultValue(false), Description("OnFetched時是否自動進入編輯狀態?\n點擊Fetch功能按鈕檢索到數據后自動點擊Edit功能按鈕"), Category("Phenix")]
? ? public bool AutoEditOnFetched { get; set; }
? ? /// <summary>
? ? /// OnSaved時是否自動進入編輯狀態
? ? /// </summary>
? ? [DefaultValue(false), Description("OnSaved時是否自動進入編輯狀態?\n點擊Save功能按鈕保存好數據后自動點擊Edit功能按鈕"), Category("Phenix")]
? ? public bool AutoEditOnSaved { get; set; }
? ? /// <summary>
? ? /// 雙擊編輯控件時是否自動進入編輯狀態
? ? /// </summary>
? ? [DefaultValue(false), Description("雙擊編輯控件時是否自動進入編輯狀態?\n雙擊編輯控件后自動點擊Edit功能按鈕"), Category("Phenix")]
? ? public bool AutoEditOnEditControlByDoubleClick { get; set; }
? ??
? ? /// <summary>
? ? /// 需要過程鎖獨占窗體, 一旦發現被他人占用將提示 ProcessLockException 信息
? ? /// </summary>
? ? [DefaultValue(false), Description("需要過程鎖獨占窗體, 一旦發現被他人占用將提示 ProcessLockException 信息"), Category("Phenix")]
? ? public bool NeedLockProcess
? ??
2,整理動態刷新程序集,拆分出Phenix.Renovate.Client.Core.dll,便于業務層使用
3,BusinessListBase類新增一次下載全部從業務對象的系列函數FetchDetail(),可與BusinessBase類中帶(TDetail source)參數的GetDetail()函數組合使用,將它們過濾進各主業務對象的Detail緩存中,具體使用方法見測試工程:
? ? Phenix.Test.使用指南.11.3.2.2
4,Addin工具"初始化/編輯業務類"功能,新增ClassDetailAttribute的所見即所得設置界面
5,如顯式聲明ClassDetailAttribute的CascadingDelete=false,在級聯刪除時自動將子表的外鍵字段賦值為null
6,撤銷FieldLinkAttribute的CascadingSave、CascadingDelete屬性及其功能
7,新增測試工程:
? ? Phenix.Test.使用指南.12.6.2.7
? ? Phenix.Test.使用指南.12.7.4
? ? Phenix.Test.使用指南.17.1.8.2
? ? Phenix.Test.使用指南.20
8,優化Phenix.Windows的BarManager組件性能,添加對DevExpress.XtraVerticalGrid.VGridControl控件的支持
9,添加說明書:
《Phenix Framework Tools.設計規范.數據庫設計規范》
《Phenix Framework Tools.設計規范.分析模型技術方案》
10,Phenix.Windows的UnifyControlLayout組件新增屬性:
? ? /// <summary>
? ? /// 統一 GridView 焦點行顏色
? ? /// 當為 Color.Empty 時禁用本功能
? ? /// </summary>
? ? public static Color GridViewFocusedRowColor { get; set; }
2014-9-19
1,Addin工具"初始化/編輯業務類"功能,糾正樹狀表結構無法自動生成代碼的錯誤
2,Phenix.Windows的BarManager組件,不僅在點擊編輯、新增等按鈕時可以自動將焦點定位到BindingSource屬性指定的控件上,當界面初始化、點擊檢索按鈕時也可以
3,修補在兩層架構(客戶端直連數據庫)下數據訪問安全漏洞;修補后,在IDE里調試程序可以不用每次都輸入數據庫連接串,而直接運行時每次都會要求重新輸入數據庫連接串
4,優化業務對象緩存機制的性能
5,Phenix.Windows的BarManager組件新增屬性:
? ? /// <summary>
? ? /// 需要單步提交時鎖死游標
? ? /// </summary>
? ? [DefaultValue(false), Description("單步提交時鎖死游標\n當 AllowMultistepSubmit = false 或者 AllowMultistepSubmitMaster = false 狀態下設置為 true 時, 不允許移動當前編輯的游標"), Category("Phenix")]
? ? public bool NeedLockPositionInOnestepSubmit { get; set; }
6,添加說明書:
《Phenix Framework Tools.使用案例.如何將枚舉屬性綁定到LookUpEdit》
2014-10-30
1,Phenix.Windows添加UnifyControlEnvironmental組件,可通過以下靜態配置屬性統一界面上的:
? ??
? ? /// <summary>
? ? /// 統一控件 Font
? ? /// 當為 SystemFonts.DefaultFont 時禁用本功能
? ? /// </summary>
? ? public static Font Font
? ? /// <summary>
? ? /// 統一控件 BackColor
? ? /// 當為 Color.Empty 時禁用本功能
? ? /// </summary>
? ? public static Color BackColor
? ? /// <summary>
? ? /// 統一控件 ForeColor
? ? /// 當為 Color.Empty 時禁用本功能
? ? /// </summary>
? ? public static Color ForeColor
? ? /// <summary>
? ? /// 統一控件 RightToLeft
? ? /// 當為 RightToLeft.Inherit 時禁用本功能
? ? /// </summary>
? ? public static RightToLeft RightToLeft
2,Host服務程序增加MarkUpgraded功能按鈕:點擊確認后,之前連接的終端會在請求服務時被提示“服務已升級,您操作的版本已不匹配,請退出系統重新登錄!”使用本功能,建議在應用于系統升級時的步驟:客戶端和服務端都開啟狀況 -> 關閉服務Host -> Host下目錄及子目錄更新新的dll -> 啟動服務Host -> 點擊MarkUpgraded功能按鈕并確認 -> 之前登錄的客戶端在操作數據時會彈出提示
3,Phenix.Core.Cache.ObjectCache,在現有Extremely屬性開關可控制是否在本地磁盤上做緩存外,還增加以下屬性作為它的閥值:
? ? /// <summary>
? ? /// 極端方式最小閾值: 緩存流長度
? ? /// 缺省為 1024 * 1024 / 2
? ? /// </summary>
? ? public static int ExtremelyThresholdMin
? ? /// <summary>
? ? /// 極端方式最大閾值: 緩存流長度
? ? /// 缺省為 1024 * 1024 * 4
? ? /// </summary>
? ? public static int ExtremelyThresholdMax
4,增加:Phenix.Business.Tunnel.FastFetchCommand,提供快速批量Fetch數據功能,具體見:
《Phenix Framework Tools.使用案例.業務數據的讀寫-快速Fetch》
5,新增測試工程:
? ? Phenix.Test.使用案例.業務數據的讀寫-快速Save
? ? Phenix.Test.使用案例.業務數據的讀寫-快速Fetch
6,BusinessListBase類Filter()系列函數,新增按條件表達式過濾出業務對象集合的功能,使用案例見新增測試工程:
? ? Phenix.Test.使用指南.11.3.2.6
7,BusinessListBase類新增OrderBy()系列函數的排序功能,使用案例見新增測試工程:
? ? Phenix.Test.使用指南.11.3.2.7
8,Phenix.Services.Client.Security.LogOn組件增加UpgradeFileSubdirectoryName屬性(缺省是"ClientLibrary"子目錄),使得服務端可為不同的客戶端提供指定子目錄下的文件下載升級
2014-11-14
1,Addin工具“初始化/編輯業務類”功能,可自動生成三個文件:虛擬類、可編輯類、不可編輯類,不可編輯類是通過在其Class上加Phenix.Core.Mapping.ReadOnlyAttribute標簽來定義的
2,Addin工具添加“刷新視圖”功能
3,解決在WEB架構下Phenix.Business.Security.User的Identity屬性內容亂碼的問題
4,解決高并發下業務對象緩存機制的持久化偶爾會死鎖的問題
5,解決在'提交時填充值'模式下的業務碼未能填充的問題,并重寫測試工程:
? ? Phenix.Test.使用指南.15.6
2014-12-18
1,配置表PH_AssemblyClassMethod上增加了字段,可用于自己開發的權限模塊里,針對窗體的菜單進行配置:
? AM_AllowVisible NUMERIC(1) NULL, --是否允許顯示即使沒權限(null: 默認、0:允許顯示、1:不允許顯示),針對AC_Type = Form上的功能按鈕
? AM_AM_ID NUMERIC(15) NULL, ? ? ? --所屬程序集類方法(針對AC_Type = Form上的樹狀菜單,為便于查看可在自己的權限配置界面上手工調整到與實際菜單結構一致)
2,ADDIN工具的“初始化/編輯業務類”設計界面中:
? 添加“Build Easy Entity”功能按鈕,可生成輕量級的Entity對象,繼承自Phenix.Core.Mapping.EntityBase<T>
? 添加“Instance Variable List”頁,不僅可瀏覽、定位到所有實例字段,還能為它打上或撤銷Csla.NotUndoableAttribute標簽
3,Phenix.Core.Mapping.EntityBase<T>提供簡單的回滾機制:
? ? /// <summary>
? ? /// 啟動編輯
? ? /// 開始記錄編輯過程
? ? /// </summary>
? ? void BeginEdit();
? ? /// <summary>
? ? /// 取消編輯
? ? /// 將當前狀態恢復回原始狀態
? ? /// </summary>
? ? void CancelEdit();
? ? /// <summary>
? ? /// 提交編輯
? ? /// 將原始狀態更新為當前狀態
? ? /// </summary>
? ? void ApplyEdit();
4, 新增測試工程:
? ? Phenix.Test.使用指南.03.3
? ? Phenix.Test.使用指南.03.5
5,將Phenix.Core.Net.RemotingConfig.CompressionSupported配置屬性的默認值調整為false,因為在分析實際應用中Remoting的報文交互,發現壓縮過程會出現timeout報文,由此廢棄的連接時而會有所堆積增加,使得可供連接的余量會有所下降,影響到并發響應帶寬(如果應用系統是千位級別下的并發連接可忽略此影響),為此建議在帶寬充足、特別是要求千位級別以上的連接響應請求的場景下關閉本功能
2015-1-15
1,修正bug:BusinessCode流水號未能歸零的缺陷
2,Host服務程序SystemInfo配置界面Security頁上添加NoLogin選項,允許禁用用戶登錄驗證服務(返回的User.Identity.IsAuthenticated=false),但其他服務仍然可被調用
3,為Phenix.Core.Mapping.EntityBase<T>添加配套的EntityListBase<T, TEntity>,并能通過ADDIN工具自動生成
4,在Phenix.Services.Client.Library.Registration注冊器上添加連接服務的測試速度函數:
? ? /// <summary>
? ? /// 測試連接速度
? ? /// </summary>
? ? /// <param name="servicesAddress">主機IP地址</param>
? ? /// <returns>歷時毫米數</returns>
? ? public static double TestServicesSpeed(string servicesAddress)
2015-2-1
為了編程風格的統一,在Phenix.Business里繼承了EntityBase<T>、EntityListBase<T, TEntity>,可直接在這些類里調用靜態的Fetch()函數,且可通過ADDIN工具生成代碼
2015-3-24
1,優化配置數據(比如程序集信息)的緩存機制
2,優化透明的持久化機制
3,打上Flags標記的枚舉值,可在數據庫查詢中拼裝出按位與(AND)的條件表達式,
? ? 對于類似“executeModify & ExecuteModify.NonnullToNull) == ExecuteModify.NonnullToNull”的條件操作符為CriteriaOperate.Like
? ? 對于類似“executeModify & ExecuteModify.NonnullToNull) <> ExecuteModify.NonnullToNull”的條件操作符為CriteriaOperate.Unlike
2015-4-23
1,優化內存提升性能
2,優化權限驗證功能
3,優化界面驗證功能
4,排除在服務端代碼里修改業務對象屬性值未能回傳給客戶端的缺陷(可用“Phenix.Test.使用指南.12.6.2.2”測試)
2015-6-17
1,為EntityBase<T>、EntityListBase<T, TEntity>,添加IsNew、IsDeleted、IsSelfDirty等狀態屬性及Save()函數,可按Entity的狀態提交數據庫增刪改表記錄,并重寫測試工程:
? ? Phenix.Test.使用指南.03.5
2,優化BarManager組件處理業務對象屬性值驗證的提示功能
3,添加Phenix.Business.EntityPageBase<T>、Phenix.Business.EntityListPageBase<T, TEntity>以支持分頁
4,添加Phenix.Core.Data.ServiceBase<T>、Phenix.Business.ServiceBase<T>以支持批量的業務邏輯處理的服務
5,將冗余字段的隱式(默認)自動處理方法改成需顯式申明才能生效,具體見《使用指南》的12.9.2章節,以及《權限管理》的7.3.3章節
6,Phenix.Web.Mvc增加"檢查安全"標簽CheckSecurityAttribute,可自動驗證Controller調用方的權限,并自動注冊后臺服務的代理
7,Host服務程序SystemInfo配置界面Security頁上添加PasswordExpirationRemindDays(密碼變更天數提醒)、PasswordExpirationDays(密碼失效過期天數)輸入項,可對登錄用戶的密碼變更情況進行控制
2015-7-29
1,增強跨域用戶驗證安全性
2,解決客戶端登錄升級大文件時被殺毒軟件掃描鎖住造成無法繼續下載升級的問題
3,輕量級的Entity對象,推薦使用Phenix.Core.dll的Phenix.Core.Data命名空間下的EntityBase<T>、EntityListBase<T, TEntity>、EntityPageBase<T>、EntityListPageBase<T, TEntity>、ServiceBase<T>
4,強化對OleDb的封裝,除了繼承CSLA的類仍保留OracleConnection/SqlConnection外,只要涉及到持久化的代碼都使用OleDbConnection,建議利用Phenix.Core.Data.DbCommandHelper操作數據庫,需注意OleDb是要求按次序CreateParameter的
5,Phenix.Core.Windows.BaseForm和Phenix.Windows.BaseForm,新增PgUpMoveBackControl屬性,默認“當輸入上頁鍵時選擇上一個可用控件并使其成為活動控件”
6,AddIn工具的業務類編輯界面,添加Reset All Property - Switch GetSet Method菜單,可改GetProperty()、SetProperty()代碼為直接操作字段,也可以切換回來
7,部門資料Phenix.Core.Security.DepartmentInfo類增加InHeadquarters屬性,可用來判斷當前用戶是否屬于總部,比如:
? ? ? ? Phenix.Core.Security.DepartmentInfo department = Phenix.Business.Security.UserPrincipal.User.Identity.Department;
? ? ? ? bool inHeadquarters = department != null && department.InHeadquarters.HasValue && department.InHeadquarters.Value;
? ?為此,Phenix.Security.Windows.DepartmentManage工程亦添加對這個屬性的設置功能,具體開發方法參考:
《Phenix Framework Tools.權限管理.05.部門管理工程.添加屬性》
8,對于含禁用字段(FieldAttribute.IsDisabledColumn)的業務對象,作廢“新增對象時, 如唯一鍵沖突則作廢新對象并將原對象上禁用字段置為Phenix.Core.Mapping.CodingStandards.DefaultDisabledFalseValue”功能。現改為直接拋出異常,在這個異常的InnerException屬性里包含了CheckRepeatedException異常對象(抽取方法可使用Phenix.Core.AppUtilities.FindException<CheckRepeatedException>(異常)函數),可依此自行判斷處理(建議業務系統要么提供恢復禁用的功能,要么提示用戶修改這個業務對象的唯一鍵內容)
? ?
2015-8-17
1,提供Phenix.VSPackage.vsix以支持Microsoft Visual Studio 2015
2,修正映射到數字型表字段的decimal業務類屬性在被賦值時,框架自動處理其精度范圍規則時產生的一個bug缺陷
3,Phenix.Core.Data.EntityListBase<T, TEntity>新增UpdateRecord()、DeleteRecord()系列靜態函數,可按條件批量更新、批量刪除
4,在Phenix.Extensions解決方案里添加Phenix.Security.Plugin.Authoriser工程,可支持擴展的權限驗證功能,具體開發方法參考:
《Phenix Framework Tools.權限管理.13.擴展為AD用戶權限驗證.服務插件》
2015-9-30
1,提供基于ASP.NET WebAPI的服務(“\Bin.Top”目錄,需運行在.NET Framework 4.5以上環境),具體見:
《Phenix Framework Tools.使用指南.21.WebAPI服務》
2,提供基于HttpClient的客戶端程序集Phenix.Web.Client.DLL及其工程源碼,示例見測試工程:
? ? Phenix.Test.使用指南.21.3
? ? Phenix.Test.使用指南.21.5
3,新增Web瀏覽器AJAX應用的開發示例:
? ? Phenix.Test.使用指南.21.3.html
4,優化:BarManager組件Fetch功能,添加ParallelFetch屬性,默認為在阻塞主線程下并行Fetch多個數據集的方法, 本功能僅適用于主數據集且其IsAsynchronousFetch=false
5,優化:BusinessBase類IsDirty、IsSelfDirty、IsDeleted、IsSelfDeleted屬性相關功能的優化,可提升Save性能
6,優化:BusinessBase類Selected屬性不參與CSLA的Undoable功能
7,優化:BusinessBase、BusinessListBase類新增NotUndoable屬性,默認(false)為參與多級撤銷,如果覆寫它并返回true的話則不參與并阻斷Detail對象的多級撤銷,BarManager組件的檢索功能按鈕被點擊后將直接進入到可編輯狀態,編輯功能按鈕已無必要(將不可操作),而取消功能按鈕、提交功能按鈕都始終保持著可操作狀態,具體參考:
《Phenix Framework Tools.使用指南.11.業務對象生命周期及其狀態》第11.5.3章節
8,棄用:Phenix.Business.CheckSavableException,改由Csla.Rules.ValidationException替代
9,棄用:BusinessBase、BusinessListBase類的IgnoreSaveError、SaveErrors屬性及其功能,改由AloneTransaction屬性替代,為此改寫了《Phenix Framework Tools.使用指南.12.業務結構對象模型》第12.6.2.10章節
? ??
2015-10-31
1,修復最近優化中產生的bug
2,優化:豐富BusinessBase、BusinessListBase類的CheckRules()、CheckSelfRules()、CheckObjectRules()、CheckSelfObjectRules()系列方法
3,優化:BusinessBase、BusinessListBase類Save()時,在客戶端會自動檢查全部的Rules,傳到服務端的業務對象在持久化之前僅自動檢查ObjectRules
4,優化:Phenix.Business.CriteriaBase添加數據源鍵DataSourceKey屬性,可指定Fetch哪個數據源,具體見:
《Phenix Framework Tools.使用指南.22.數據庫集群》
5,優化:BarManager組件添加“恢復”按鈕,可恢復當前禁用對象
6,優化:BarManager組件提交對象時,如發現因唯一鍵原因提交失敗,則會判斷是否是與被禁用對象沖突,并提示用戶可恢復被禁用對象并加入到當前集合中供繼續編輯
7,實現WebAPI數據服務的Fetch()、Save()、Execute()功能,具體見:
《Phenix Framework Tools.使用指南.21.WebAPI服務》
2015-12-26
1,Host服務程序SystemInfo配置界面System頁上,添加定時清理日志的配置項,可自動清理幾個月之前的日志
2,提供全新的Phenix.Core.Clip.dll、Phenix.Web.Client,可支持Xamarin的開發
3,AddIn工具,添加以業務類、查詢類為模板自動生成Phenix.Core.Clip的實體類、查詢類的功能
4,重寫開發示例:
? ? Phenix.Test.使用指南.21.3
? ? Phenix.Test.使用指南.21.5
5,修復多Host服務環境下配置權限后未能自動刷新的bug
6,添加說明書:
《Phenix Framework Tools.使用案例.如何利用監控手段輔助調試》
《Phenix Framework Tools.使用案例.如何繞過默認的持久層操作》
2016-1-20
1,添加直接獲取業務碼功能,提升批量處理性能,具體見《Phenix Framework Tools.使用指南.15.業務碼》15.6.5章節,并重寫開發示例:
? ? Phenix.Test.使用指南.15.6
2,Phenix.Core.Data.ServiceBase<T>添加異步服務功能,具體見《Phenix Framework Tools.使用指南.23.異步服務》及測試工程:
? ? Phenix.Test.使用指南.23.2
3,當 Phenix.Core.Net.NetConfig.ServicesFixed = true 時,登錄界面(Phenix.Services.Client.Security.LogOnDialog)的服務IP輸入框會被隱藏掉,此時需在代碼里向Phenix.Core.Net.NetConfig.ServicesAddress賦值上正確的服務IP或配置在config文件里
4,當 Phenix.Core.Net.NetConfig.ServicesFixed = false 時,登錄界面(Phenix.Services.Client.Security.LogOnDialog)的服務IP輸入框會根據以往登錄歷史,被自動填充上一個曾經最快登錄過的服務IP(為默認服務IP)
5,組件Phenix.Services.Client.Security.LogOn增加UpgradeServicesAddress屬性,可指定升級(客戶端的)服務器地址
2016-3-3
WebAPI數據服務的Fetch(),允許匿名獲取數據,只要在服務端的業務類、實體類上將ClassAttribute的屬性值 OnAnonymity = true
2016-4-15
1,修復業務屬性的缺省值定義未能起作用的缺陷等
2,新增Phenix.Algorithm程序集,提供ZeroOneDynamicProgramming類"0-1背包問題"算法,使用方法示例見工程:
? ? Phenix.Test.背包問題
3,添加說明書:
《Phenix Framework Tools.研發規范.系統部署升級要點》
4,Phenix.Addin的注冊方法,改成運行Bin.Top目錄下的Host服務程序,要求開發環境的操作系統部署.NET4.5或以上版本
2016-5-30
1,為Phenix.Security.Windows.FormClassManage工程添加文檔:
《Phenix Framework Tools.權限管理.14.窗體管理.刷新權限配置信息》
2,提供phenix.js用于AJAX+WebAPI的應用開發
3,新增Web瀏覽器AJAX應用的開發示例:
? ? Phenix.Test.使用指南.21.5.html
4,CSLA、Phenix.Core和Phenix.Business等程序集都引用到Newtonsoft.Json.dll,支持業務類、實體類的JSON序列化(MemberSerialization.OptOut模式)
5,Addin工具,可自動生成支持JSON序列化(MemberSerialization.OptOut模式)的業務類、實體類的構造函數
6,優化WebAPI服務,改寫《Phenix Framework Tools.使用指南.21.WebAPI服務》
7,業務集合對象、實體集合對象按照查詢時帶入的OrderByInfo及字段上的FieldOrderByAttribute標簽維持排序狀態,具體見《Phenix Framework Tools.使用指南.12.業務結構對象模型》第12.6.1.3段落及測試工程:
? ? Phenix.Test.使用指南.12.6.1.3
2016-6-30
1,為《Phenix Framework Tools.使用指南.04.登錄應用系統》添加"4.1.5 指定升級服務的地址"章節,示例工程:
? ? Phenix.Test.使用指南.04.1.5
2,修訂Phenix.Windows的BarManager組件,阻止快速點擊功能按鈕
3,優化Phenix.Algorithm程序集的ZeroOneDynamicProgramming類,可支持需撐滿背包且在一個超載范圍內的問題,使用方法示例見工程:
? ? Phenix.Test.背包問題
2016-7-14
優化Phenix.Algorithm程序集的ZeroOneDynamicProgramming類,可利用IGoodsGroup接口以支持物品的分組問題,使用方法示例見工程:
? ? Phenix.Test.背包問題
2016-8-17
1,修正兩層架構下數據安全問題
2,修正本地緩存業務對象刷新問題
2016-9-13
1,添加Addin工具新功能:可依照函數及其參數內容自動生成Command類的框架代碼,并在該函數代碼段內添加執行Command對象的示例語句
2,在Phenix.Extensions解決方案里添加Phenix.StandardService工程,借客戶端和服務端同步數據庫時鐘為例,介紹將業務邏輯代碼僅部署在服務端的方法
3,在Phenix.Extensions解決方案里添加Phenix.StandardPush工程,借客戶端和服務端同步數據庫時鐘為例,介紹通過Socket將數據庫時鐘推送到客戶端的方法
2016-10-20
1,補充BusinessBase類、CommandBase類的函數FetchExecuteAction(),可查詢到當前對象曾經被改寫過的歷史痕跡(需在對象的ClassAttribute標簽上設置PermanentExecuteAction = ExecuteAction.Update、希望留痕的字段FieldAttribute標簽上設置PermanentExecuteModify屬性(類型為ExecuteModify)來申明當本字段值屬于哪種新舊值變換狀況下才需要記錄下操作痕跡),具體見:
《Phenix Framework Tools.使用指南.13.日志服務》
2,Phenix.Windows的BarManager組件,修訂了Fetch后界面狀態應正確變換的問題,在狀態欄上增加了顯示和查看當前業務對象的歷史操作痕跡的功能
3,修正Fetch()傳linq表達式時含Contains函數的處理問題,測試代碼見:
? ? Phenix.Test.使用指南.17.3
2016-11-10
1,在Web應用(部署在IIS)下,Phenix.Core.AppConfig.TempDirectory屬性值返回系統臨時文件夾下的目錄名
2,Bin.Top目錄新增Phenix.Addin.Install.exe程序,可直接部署Phenix.Addin,請以超級管理員身份運行
2016-12-13
1,優化業務對象緩存機制的持久化性能
2,修正Phenix.Algorithm程序集的ZeroOneDynamicProgramming類處理分組問題的缺陷
3,數據庫連接池增加MinPoolSize、MaxPoolSize、ConnectionLifetime的config配置內容
2017-01-24
1,優化業務對象緩存機制的持久化過程,減輕對數據庫的壓力
2,配置緩存數據的存放目錄從TempDirectory改為CacheDirectory,有關web應用的項目需注意的問題,請參考《Phenix Framework Tools.使用案例.IISWeb服務開發注意事項》
3,業務類的FieldAttribute標簽新增IsFillSysdateColumn屬性,可設置為該字段內容應自動填充自系統時間
2017-03-31
1,改造Phenix.Addin.VSPackage.vsix和Phenix.Addin.Install.exe(請以超級管理員身份運行),以支持Microsoft Visual Studio 2017
2,發布第一版Phenix Teamwork Tools功能,具體見:
《Phenix Teamwork Tools.使用指南.01.簡介》
《Phenix Teamwork Tools.使用指南.02.缺陷管理》
2017-04-25
1,修正無物理外鍵場景下的從表級聯刪除問題
2,修正Addin工具菜單灰亮問題等缺陷
3,豐富部分說明書內容
4,為保證概念完整性,用new標記來關閉CSLA中有可能帶來誤導的virtual函數:
? ? 在BusinessBase類里關閉的函數:
? ? ? public new T Save()
? ? ? protected new void OnPropertyChanging(IPropertyInfo propertyInfo)
? ? ? protected new void OnPropertyChanged(IPropertyInfo propertyInfo)
? ? ? protected new void MarkOld()
? ? ? 請統一從以下函數override:
? ? ? public virtual T Save(bool needCheckDirty, IBusiness[] firstTransactionData, IBusiness[] lastTransactionData)
? ? ? protected virtual void OnPropertyChanging(string propertyName)
? ? ? protected virtual void OnPropertyChanged(string propertyName)
? ? ? protected virtual void MarkOld(bool resetOldFieldValues)
? ? 在BusinessListBase類里關閉的函數:
? ? ? public new T Save()
? ? ? 請統一從以下函數override:
? ? ? public virtual T Save(bool needCheckDirty, IBusiness[] firstTransactionData, IBusiness[] lastTransactionData)
5,新增測試工程:
? ? Phenix.Test.使用指南.11.5.1.3
2017-05-26
1,Host服務程序SystemInfo配置界面System頁上,添加客戶端下載目錄、服務端升級目錄的設置功能,為能僅從一處目錄來升級系統提供方便
2,修正Selected清單未能與業務對象一起CancelEdit的問題 ? ??
3,優化配置信息及數據字典的檢索性能
4,優化處理業務對象link關系時的性能
5,link關系中,如果外鍵字段不允許為空,則當Unlink時,外鍵字段將被賦值為其缺省值(建議在表結構定義中設置其缺省值為-1,以代表無外鍵關聯),業務對象屬性在SetProperty時會自動將null轉換為缺省值
6,補充《Phenix Framework Tools.設計規范.數據庫設計規范》有關枚舉與表結構的設計方法
7,查詢條件表達式(參考Phenix.Security.Windows.UserManage工程)的存儲格式改成JSON,CriteriaCombineControl中舊的自定義查詢條件作廢,需重新設置
8,查詢條件表達式持久化時亦存儲Caption內容,配置庫需升級(運行一次Host服務程序連接上數據庫即可)
2017-06-27
1,修正近期優化過程中埋下的缺陷
2,Phenix.Core.Data.DbCommandHelper的ExecuteNonQuery()、ExecuteReader()、ExecuteScalar()函數,Phenix.Core.Data.DataSetHelper的ExecuteReader()函數,都帶上了“params ParamValue[] parameters”參數,以便直接為DbCommand的執行傳入參數值
3,Phenix.Core.Data.EntityListBase<T, TEntity>的UpdateRecord()函數的傳參參數,改為“params PropertyValue[] propertyValues”
4,以上2、3的示例見:
《Phenix Framework Tools.設計規范.排版格式一致化編碼習慣一貫性》
5,升級Addin工具“構建業務類”的“Detail Table List”功能,以支持新版Phenix.Core.Mapping.ClassDetailAttribute的代碼生成,部署請運行Phenix.Addin.Install.exe程序
6,對于匿名的公共數據檢索服務,只要在服務端的Business或Entity類、Command或Service類上將ClassAttribute的屬性值 OnAnonymity = true,其Fetch()或Execute()功能就不再被權限控制約束;另外提醒一下,只要調用Business或Entity對象帶 DbConnection、DbTransaction 參數的函數,也是不受權限控制約束的
7,修改 Phenix.Core.Net.NetConfig.ServicesFixed = true 時的登錄界面(Phenix.Services.Client.Security.LogOnDialog)邏輯(false時仍維持原有邏輯),服務IP輸入框下拉清單由登錄者自行維護(組合鍵Ctrl+Del可將當前輸入框內容從下拉清單中剔除),默認值請配置在客戶端程序的config文件里,例如:
? ? ? ? <add key="Phenix.Core.Net.NetConfig.ServicesFixed." value="True" />
? ? ? ? <add key="Phenix.Core.Net.NetConfig.ServicesAddress." value="192.168.1.100" />
? ? ? ? <add key="Phenix.Core.Net.NetConfig.ServicesAddresses." value="192.168.1.100 #-*-# 192.168.1.101 #-*-# " />
8,廢棄Phenix.Services.Client.Security.LogOnDialog、LogOn的屬性UpgradeFileSubdirectoryName,而僅使用Host服務程序SystemInfo配置界面System頁上的客戶端下載目錄,且Host會為這個目錄自動添加“Own”子目錄,用于個性化的客戶端程序集或其他文件的升級下載,相應的,實施人員須為登錄用戶配置上所屬部門,所屬部門的最頂層(一級)部門的代碼,將作為“Own”下某子目錄的名字(由實施人員添加這某子目錄),這些個性化文檔部署到這某子目錄里,舉例:
? 假設客戶端下載目錄為“\\192.168.1.100\ClientLibrary\”,Host會自動為其添加“Own”子目錄,再假設登錄用戶所屬部門的頂層部門代碼為“SGWY”,則其個性化文檔部署在“\\192.168.1.100\ClientLibrary\Own\SGWY\”,同名同深度的文件“\\192.168.1.100\ClientLibrary\Test.dll”和“\\192.168.1.100\ClientLibrary\Own\SGWY\Test.dll”,被下載升級的是后者
9,補充《Phenix Framework Tools.使用指南.21.WebAPI服務》直接操作Phenix.Core.AppHub.DataProxy的示例代碼
10,如果業務類的字段 IsInputTimeColumn = true,則其必定是 IsFillSysdateColumn = true(須 CheckDirtyOnSaving = false 時有效),保存對象時自動填充數據庫時間
11,升級Phenix.Algorithm程序集DataStructures命名空間下的數據結構類,可支持多線程安全和Serializable序列化
12,如果登錄用戶有所屬部門,則其所屬部門可用于限制程序集類方法的操作,比如綁定到Phenix.Services.Client.Security.ExecuteAuthorization組件的窗體按鈕(相當于程序集類方法)可配置為與某些頂層部門進行關聯,ExecuteAuthorization組件就可以控制它們僅限于這些頂層部門下的用戶操作(灰亮或隱藏),本功能須升級配置庫(運行一次Host服務程序連接上數據庫即可),會自動新增PH_AssemblyClassMethod_Departm表:
CREATE TABLE PH_AssemblyClassMethod_Departm ( ? --程序集類方法-部門(如未指定所屬部門則不限制)
? AD_ID NUMERIC(15) NOT NULL,
? AD_AM_ID NUMERIC(15) NOT NULL, ? ? ? ? ? ? ? ?--所屬程序集類方法
? AD_DP_ID NUMERIC(15) NOT NULL, ? ? ? ? ? ? ? ?--所屬部門
? PRIMARY KEY(AD_ID),
? UNIQUE(AD_AM_ID, AD_RL_ID)
)
表內容的配置界面請自行開發(參考Phenix.Security.Windows.FormClassManage工程中對PH_AssemblyClassMethod_Role表的操作)
2017-07-26
1,Phenix.Core.IO命名空間內新增SerialPortFastReader、SerialPortDirectReader,封裝SerialPort用于讀取COM口設備傳來的數據,可同時偵聽多個COM口
2,新增后綴為“_NEWTIME”的Date類型的默認字段處理方法,如字段未按規則命名的可以顯式標記FieldAttribute的IsNewTimeColumn=true,相當于標記了IsFillSysdateColumn=true && IsWatermarkColumn=true
3,新增BusinessListBase類函數
? public IList<TBusiness> FilterSelf(Expression<Func<TBusiness, bool>> expression)
用于從隊列中(非刪除)過濾掉符合條件的業務對象
2017-08-18
1,修正業務對象被調用CancelEdit()、ApplyEdit()到EditLevel=0時應恢復到的正確狀態
2,修正BindingSource級聯Fetch刷新界面問題
3,新增后綴為“_ORIGINATOR”的VARCHAR2類型、“_ORIGINATETIME”的Date類型的默認字段處理方法,如字段未按規則命名的可以顯式標記FieldAttribute的IsOriginatorColumn=true、IsOriginateTimeColumn=true,相當于標記了IsInputerColumn=true && IsWatermarkColumn=true、IsFillSysdateColumn=true && IsWatermarkColumn=true
4,支持匿名用戶登錄,請運行Host為用戶表添加'Guest'記錄,匿名用戶僅能調用到服務端上Business或Entity類、Command或Service類的ClassAttribute屬性值OnAnonymity = true的功能
2017-09-15
1,修正登錄界面的修改密碼功能
2,Phenix.Core.Mapping.CriteriaHelper的:
? ? string JsonPack(object criteria)
? ? T JsonUnpack<T>(string sourceJson)
? ? object JsonUnpack(Type targetType, string sourceJson)
函數,優先打包/解包Phenix.Core.Mapping.CriteriaFieldAttribute標簽的字段,如沒有才打包/解包Phenix.Core.Mapping.PropertyAttribute(Serializable = true)標簽的屬性
2017-10-09
1,Bin.Top目錄下的Host服務程序,新增WebAPI端口8081,TransferMode = TransferMode.Streamed
2,Phenix.Extensions\Phenix.Web.Client.Ajax\jquery目錄下jquery.min.js版本從v1.11.3升級為v3.2.1
3,Phenix.Core.Data.ServiceBase、Phenix.Business.CommandBase基類,提供了在客戶端上傳/下載文件的函數:
? ? T UploadFiles(params string[] fileNames)
? ? void DownloadFile(string fileName)
對應的有執行在服務端的處理已傳入/待下載文件的函數:
? ? virtual void DoUploadFiles(IDictionary<string, Stream> fileStreams)
? ? virtual Stream DoDownloadFile()
如需同時持久化業務數據,可改為覆寫以下函數:
? ? virtual void DoUploadFiles(DbConnection connection, IDictionary<string, Stream> fileStreams)
? ? virtual void DoUploadFiles(DbTransaction transaction, IDictionary<string, Stream> fileStreams)
? ? virtual Stream DoDownloadFile(DbConnection connection)
? ? virtual Stream DoDownloadFile(DbTransaction transaction)
測試代碼見:
? ? Phenix.Test.使用指南.21.5.csproj
? ? Phenix.Test.使用指南.21.5.Business.csproj
4,Phenix.Web.Client.Ajax的phenix.js、Phenix.Web.Client的DataProxy類,提供了uploadFiles()、downloadFile()函數上傳/下載文件,需配套Bin.Top目錄下的WebAPI服務Host,喚起指定服務對象(繼承Phenix.Core.Data.ServiceBase、Phenix.Business.CommandBase基類),測試代碼見:
? ? Phenix.Test.使用指南.21.5.html
? ? Phenix.Test.使用指南.21.5.Business.csproj
5,補充《Phenix Framework Tools.使用指南.21.WebAPI服務》有關UploadFiles、DownloadFile功能的介紹段落
2017-10-27
1,Phenix.Extensions\Phenix.Web.Client.Ajax\jquery目錄下添加base64-binary.js,且路徑有調整
2,Phenix.Core.Data.ServiceBase、Phenix.Business.CommandBase基類,提供了在客戶端上傳/下載大文件的函數:
? ? T UploadBigFile(string fileName, Func<object, FileChunkInfo, bool> doProgress)
? ? void DownloadBigFile(string fileName, Func<object, FileChunkInfo, bool> doProgress)
對應的有執行在服務端的處理已傳入/待下載大文件的函數:
? ? virtual void DoUploadBigFile(FileChunkInfo fileChunkInfo)
? ? virtual FileChunkInfo DoDownloadBigFile(int chunkNumber)
如需同時持久化業務數據,可改為覆寫以下函數:
? ? virtual voidDoUploadBigFile(DbConnection connection, FileChunkInfo fileChunkInfo)
? ? virtual void DoUploadBigFile(DbTransaction transaction, FileChunkInfo fileChunkInfo)
? ? virtual FileChunkInfo DoDownloadBigFile(DbConnection connection, int chunkNumber)
? ? virtual FileChunkInfo DoDownloadBigFile(DbTransaction transaction, int chunkNumber)
測試代碼見:
? ? Phenix.Test.使用指南.21.5.csproj
? ? Phenix.Test.使用指南.21.5.Business.csproj
3,Phenix.Web.Client.Ajax的phenix.js、Phenix.Web.Client的DataProxy類,提供了uploadBigFile()、downloadBigFile()函數上傳/下載大文件,需配套Bin.Top目錄下的WebAPI服務Host,喚起指定服務對象(繼承Phenix.Core.Data.ServiceBase、Phenix.Business.CommandBase基類),測試代碼見:
? ? Phenix.Test.使用指南.21.5.html
? ? Phenix.Test.使用指南.21.5.Business.csproj
4,補充《Phenix Framework Tools.使用指南.21.WebAPI服務》有關UploadBigFile、DownloadBigFile功能的介紹段落
5,在Phenix.Extensions解決方案里添加Phenix.Security.Plugin.TranslationUserNumber工程,以演示如何控制權限驗證,將登錄時輸入的用戶名、手機號、郵箱等等之一信息轉換為登錄工號以通過權限驗證
2017-11-08
1,Phenix.Core.Data.DataHub新增服務函數,可從服務端批量獲取64位序號:
? ? public static long[] GetSequenceValues(int count)
2,支持數據庫日期字段的缺省值定義,如果有定義,新增業務對象時,會取系統當前時間,不過仍然需要顯式標記FieldAttribute的IsFillSysdateColumn、IsWatermarkColumn來控制持久化時是否需要用數據庫時間填充字段,或者也可以將NeedUpdate=false使得數據庫的缺省值功能生效
3,查詢類支持給字段打上FieldRuleAttribute、給字段和屬性打上ValidationAttribute,以控制其屬性的有效性校驗,而且可以與EditValidation組件配套使用,以影響界面交互效果
4,FieldAttribute的InBusinessRule屬性改為InValidation
5,更新《Phenix Framework Tools.使用指南.08.業務對象公共接口的數據驗證》
6,從WebAPI下載的數據,日期屬性的格式為:"yyyy'-'MM'-'dd' 'HH':'mm':'ss"
2017-11-19
Phenix.Core.Mapping.PropertyAttribute支持橋接屬性的構造函數,改為:
? ? /// <summary>
? ? /// 初始化
? ? /// </summary>
? ? /// <param name="bridgingPropertyName">指示該屬性橋接的屬性名</param>
? ? /// <param name="bridgingType">指示該屬性橋接嵌套的類</param>
? ? /// <param name="bridgingTypePropertyName">指示該屬性橋接嵌套的類屬性名</param>
? ? public PropertyAttribute(string bridgingPropertyName, Type bridgingType, string bridgingTypePropertyName)
相應的,AddIn工具的“橋接嵌套類屬性”功能有改動以配套它,請執行Phenix.Addin.Install.exe升級。如果現有應用中有用到本橋接方法,請編譯發現需升級的代碼行,在第一個參數前添加當前類里被橋接屬性的名稱
2017-11-22
如果登錄用戶有所屬部門,可利用其是否屬于哪個部門來控制是否允許其操作哪些服務對象(繼承Phenix.Core.Data.ServiceBase、Phenix.Business.CommandBase基類)的權限,本功能須升級配置庫(運行一次Host服務程序連接上數據庫即可),會自動新增PH_AssemblyClass_Department表:
CREATE TABLE PH_AssemblyClass_Department ( --程序集類-部門(如未指定所屬部門則不限制)
? AD_ID NUMERIC(15) NOT NULL,
? AD_AC_ID NUMERIC(15) NOT NULL, ? ? ? ? ? --所屬程序集類
? AD_DP_ID NUMERIC(15) NOT NULL, ? ? ? ? ? --所屬部門
? PRIMARY KEY(AD_ID),
? UNIQUE(AD_AC_ID, AD_DP_ID)
)
如果服務對象無需被權限控制則不必添加它,表記錄僅存儲有哪些服務可以被哪些部門的用戶操作的信息,配置界面請自行開發(參考Phenix.Security.Windows.FormClassManage工程中對PH_AssemblyClass_Role表的操作)
2017-11-25
添加說明書:
《Phenix Framework Tools.使用指南.25.持久層開發助手》
測試代碼見:
? Phenix.Test.使用指南.25.4.csproj
? ??
2017-11-28
統一引用Newtonsoft.Json的10.0.3版本
2017-12-12
權限選項EasyAuthorization配置信息,改為存放在PH_SystemInfo表SI_EasyAuthorization字段里,本功能須升級配置庫(運行一次Host服務程序連接上數據庫即可);因默認是寬松的授權(只要用戶擁有的角色之一不在禁用角色隊列里,就不被禁用),如需嚴格控制,請在Host服務程序的SystemInfo配置界面Security頁上取消這個項的勾選
2018-01-08
Phenix.Core.Data.DbCommandHelper添加了調用存儲過程的系列函數:
? void ExecuteStoredProc(string storedProcedure, params ParamValue[] parameters)
? void ExecuteStoredProc(DbConnection connection, string storedProcedure, params ParamValue[] parameters)
? void ExecuteStoredProc(DbTransaction transaction, string storedProcedure, params ParamValue[] parameters)
已規避某些版本Oracle客戶端(比如ODAC_x64)存儲過程調用后返回參數字符串會被截取一半的問題
2018-02-03
改寫說明書《Phenix Framework Tools.使用指南.12.業務結構對象模型》的12.6.2.6、12.6.2.7章節,解釋CompositionDetail/AggregationDetail的用法
2018-02-27
升級了Bin.Top目錄下的Host服務程序所引用的程序集版本,Host服務程序需運行在.NET Framework 4.6以上環境,統一引用Newtonsoft.Json.11.0.1版本
2018-03-24
修訂Addin工具中通過業務類構建的衍生類(比如xxxEasy.cs),它們的命名空間和存放目錄與其所屬業務類保持一致,升級請運行Phenix.Addin.Install.exe程序
2018-04-11
Phenix.Core.Net.NetConfig的ServicesAddress屬性可賦值為除了IP地址外允許后綴端口號(用":"分隔),也就是說登錄界面的“服務”輸入框可指定IP:Port
2018-05-03
解決Guest用戶有提示“登錄后靜止超過xxx分鐘”的問題,不對Guest用戶做控制
2018-06-12
在Bin.Top目錄下新增Phenix.Services.Host.WebCluster.exe程序,可部署在(瀏覽器/APP)客戶端與 WebAPI & WebSocket Host 服務集群之間,既能作為服務集群的負載均衡分撥器,也能作為代理服務(起到防火墻的作用)使得服務集群與數據庫都能被部署到局域網內不直接被外網訪問
2018-06-18
升級WebAPI服務,以滿足能通過“等保三級”評測認證的要求,具體見:
《Phenix Framework Tools.使用指南.21.WebAPI服務》
2018-07-25
增強Addin工具以支持Phenix.Business.BusinessPageBase<T>,升級請運行Phenix.Addin.Install.exe程序
2018-07-27
Phenix.Core.Security.UserIdentity靜態屬性LoginExpiresMinutes(見Host服務程序SystemInfo配置界面Security頁)改成SessionExpiresMinutes,為會話過期時間(分鐘),默認為0不做控制,不對Guest用戶做控制
2018-07-29
全面升級remoting/WCF協議下的服務訪問安全機制,與WebAPI服務保持一致
2018-08-06
WebAPI服務可支持匿名或登錄用戶訪問自定義ApiController,ApiController所在程序集以Plugin插件形式嵌入到服務端,具體見:
《Phenix Framework Tools.使用指南.21.WebAPI服務》"21.7公開訪問自定義ApiController"章節
測試代碼見:
? ? Phenix.Test.使用指南.21.7.csproj
? ? Phenix.Test.使用指南.21.7.Plugin.csproj
2018-08-20
增強Addin工具,可生成自定義ApiController框架代碼,升級請運行Phenix.Addin.Install.exe程序,具體見:
《Phenix Framework Tools.使用指南.21.WebAPI服務》"21.8用戶訪問自定義ApiController"章節
2018-08-28
修正因.NET32位和64位版本字符串哈希算法的不同而造成跨域傳哈希值比對不上的問題
2018-08-31
提供了簡易的消息收發功能,可向某工號用戶發送消息,支持接收方的推送/拉取模式,WabAPI的用法見:
《Phenix Framework Tools.使用指南.21.WebAPI服務》"21.9推送/拉取消息"章節
測試代碼見:
? ? Phenix.Test.使用指南.21.9.csproj
2018-09-02
WebAPI客戶端新增了CanXXX系列函數,提供控制UI交互權限的功能,具體見:
《Phenix Framework Tools.使用指南.21.WebAPI服務》"21.4權限控制"章節
測試代碼見:
? ? Phenix.Test.使用指南.21.5.csproj
2018-10-15
修正業務類在編輯對象時無法自動更新Inputer等屬性的問題
2018-11-28
FieldAttribute標簽InAuthorization設置為false時,關聯屬性的讀寫不受權限控制,不受界面BarManager、ReadWriteAuthorization組件控制
2018-12-11
業務(或集合)類提供分庫歸檔及查詢的功能,具體見:
《Phenix Framework Tools.使用指南.24.分庫歸檔及查詢》"21.4權限控制"章節
測試代碼見:
? ? Phenix.Test.使用指南.24.csproj
2018-12-16
Phenix.Services.Library的IAuthoriser接口函數Translation返回值改為UserIdentity,可同時轉譯用戶工號及獲取動態口令(函數實現中return new UserIdentity(登錄工號, 動態密碼);),具體見:
《Phenix Framework Tools.使用指南.21.WebAPI服務》"21.3.5轉譯用戶工號及獲取動態口令"章節
示例代碼見:
? ? Phenix.Security.Plugin.TranslationUserNumber.csproj
2018-12-20
Phenix.Services.Host.WebCluster程序,增加對SSL協議的支持,配置方法見SystemInfo配置功能窗體
2019-01-31
Phenix.Services.Library的IAuthoriser接口函數Translationd返回的動態口令,可與PH_User表里的靜態口令一起使用,同時響應不同的客戶端(比如PC用動態口令,APP用靜態口令,同時發起調用服務)
2019-02-21
修正在分布式服務環境下,當用戶修改完口令后首次調用服務時可能會返回口令驗證異常的缺陷
2019-04-05
1,升級Phenix.Addin.Install.exe(請以超級管理員身份運行),以支持Microsoft Visual Studio 2019(Phenix.Addin.VSPackage_2019.vsix)
2019-04-08
修正在挑選枚舉清單并提交時無法自動刪除被勾去的子表記錄的問題
測試代碼見:
? ? Phenix.Test.使用指南.12.10.3
2019-06-14
1,服務端Thread.CurrentThread.CurrentCulture與登錄用戶客戶端的值保持一致,以支持客戶端的多語言環境
2,EnumCaptionAttribute新增EnCaption屬性,當客戶端環境為英文時Caption屬性返回的是EnCaption屬性值
2019-06-24
將登錄界面功能模塊LogOnDialog從Phenix.Services.Client.Security命名空間復制到Phenix.Windows程序集的Phenix.Windows.Security命名空間,可重構以適應系統個性化開發
?
?轉載請注明出處,謝謝。
?
總結
以上是生活随笔為你收集整理的Phenix.NET for WebAPI WF CSLA,企业级、分布式、符合领域建模的OOP软件快速开发平台的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python画饼状图解决字体重叠问题
- 下一篇: Aspose.Words for .NE