閱讀本文請先閱讀如下兩篇文章
Netsharp總體設計
1.1 Netsharp終端形式
Netsharp基於.NET平台,支持的產品形態有三種:
- 北極熊(Polarbear,桌面模式,WPF實現)
- 熊貓(Panda,BS模式,純HTML)
- 先鋒(Pioneer,移動Web模式,基於Panda)
Netsharp是三種終端的全集,本文介紹的內容多以北極熊作為例子,因為北極熊功能最多、最強、最穩定。
三種形態都是前端,她們公用同一套后端,后端指的是業務服務器之后包括的功能。
1.2 Netsharp部署類型
Netsharp有五種部署類型,分別對應五種部署的場景:
類型 |
名稱 |
說明 |
Desktop |
桌面客戶端 |
僅僅包括界面層、實體、接口以及前后端公用的程序集 通過互聯網與服務器端交互 |
Server |
業務服務器端 |
作為業務服務器,對外通過互聯網公布服務接口 處理復雜的業務邏輯功能 可以做集群(暫不支持) |
Desktop_Server |
傳統的CS結構 |
桌面客戶端和業務服務器在同一個進程內,主要方便開發調試;單人操作的系統,或者並發要求不高的,可以使用此種模式。 |
WebFront |
WEB前端 |
Web前端服務器也是服務器,但是只負責處理界面的渲染等邏輯,不處理業務邏輯,業務邏輯通過調用業務服務器的接口來完成 Web前端服務器與業務服務器多在同一個局域網 Web前端服務器與業務服務器分開一般出於安全和性能的考慮 Web前端服務器與業務服務器分開更易於Web前端服務器做集群 WebFront模式需要管理多個Session,Desktop模式只需要管理一個Session |
WebFront_Server |
WEB前端+業務服務器 |
Web前端服務器與業務服務器在同一進程內 |
Netsharp的部署類型,可以通過bin/Netsharp.Light.exe進行設置,下圖是部署類型的設置方式:
1.3 Netsharp平台管理
本章節介紹Netsharp的六個核心概念,他是Netsharp基礎,這六個概念都有對應的工具支持,從工具角度上對平台的資源進行有效、清晰的管理。
這六個概念並不是Netsharp的全部內容,本節也不是介紹Netshrap的技術架構,而是介紹Netsharp平台是如何管理開發人員的成果的。
1.3.1 插件
插件框架是越來越流行的一種開發方式。插件做的比較好的常見於IDE,如Eclipse(基於OSGI標准)、Netbean、SharpDevelop。國內一款軟件(OSGI.NET)實現了.NET平台的OSGI標准,算是做得比較規范的。除此之外筆者沒有見過國內其他的比較正規的插件體系,大部分聲稱系統支持的所謂插件都是偽插件,從技術角度來說不過是工廠模式加根據配置反射創建對象而已。筆者認為插件系統有三個必須要素:
- 插件,一個插件有多個路徑;插件從物理上可脫離產品獨立存在
- 擴展點(Netsharp叫路徑),擴展點可以橫穿多個插件
- 插件項支持多種類型,如菜單、類型、圖標等。插件項類型本身也有擴展點。
Netsharp的插件設計參考了SharpDevelop,SharpDevelop是一個IDE工具,有些地方並不適應於企業軟件,Netsharp在SharpDevelop的基礎上進行了如下的改造和擴展:
- 支持數據庫配置,而非xml配置
- 路徑支持繼承和重寫
- 插件項支持權限控制
- 提供可視化界面編輯插件項
Netsharp提供了可視化工具對插件管理,管理工具支持兩種視角,插件視角和路徑視角:
1.3.2 實體模型
在企業軟件開發中,實體模型主要指的是實體的模型,模型一般通過UML圖的方式表現,比較直觀的表達問題域的靜態結構關系,這種圖是分析設計所關心的。而對於平台來說,關心的是做一個UML靜態類圖工具出來,更關心的是實體模型本身自描述的元數據信息,本文稱之為實體元數據。
平台有了實體元數據,業務開發的序幕就此拉開,這個過程可以時髦的稱之為“領域驅動”,不過跟常說的“領域驅動”稍有不同。基於實體元數據配合平台工具可以做的事情有:
- 生成數據庫對象,包括表結構、索引、主鍵、約束、外鍵等
- 實體類代碼
- 持久層的ORM映射元數據
- 自動生成接口、服務、業務類、界面控制器的類
- 自動生成報表、表單、列表、查詢的界面元數據
- 可以做字段權限控制、數據權限控制
- 可以做單據編碼規則
- 其他
關於Netsharp的實體設計,請參見管理軟件實體設計。
1.3.3 Netsharp資源
1.3.3.1 什么是資源
資源是Netsharp創造的概念,資源包括兩個方面,資源樹和資源類型,其中資源樹也可稱之為資源節點。
如何理解資源我們從考察如下兩個場景開始:
要素 |
商貿企業 |
軟件開發公司 |
角色 |
公司員工 |
軟件開發人員 |
工具 |
供應鏈管理系統(SCM) |
Netsharp |
數據類型 |
銷售訂單、發貨單、發票、出庫單等等 |
列表、表單、查詢、報表 |
數據舉例 |
3月1號銷售給客戶A總金額100W 3月1號給客戶A發貨 3月2號銷售給客戶B總金額120W |
3月1號開發銷售訂單列表,編輯列表元數據 3月1號開發銷售訂單表單,編輯表單元數據 3月2號開發銷售發票列表,編輯列表元數據 |
結論 |
SCM是工具,用來管理訂單、發貨單等數據 |
Netsharp是工具,用來管理列表、表單、報表的元數據。 |
上述兩個場景放在一起考察,他們的不同之處在於是不同的行業,干的不同的事情。相同的地方都是使用一個工具來管理自己工作中使用的數據。開發人員的數據就是工作區、列表、表單、報表等數據,Netsharp中把開發維護的這些數據叫資源。這些數據是有不同的類型,SCM的每種類型(銷售銷訂單、發貨單、銷售發票等)的數據叫單據;Netsharp中的每種類型(作區、列表、表單、報表等)叫資源類型。
1.3.3.2 資源是如何管理的
資源和插件是相互補充的,插件和資源都是平台的工具,區別在於,插件強調插件物理可插拔、路徑可擴展、插件項支持多種類型,但是其插件項的類型只能是攜帶信息比較少的類型,比如菜單。對於一些復雜的類型,比如工作區或者列表元數據,則需要強類型的結構來表達,這種情況插件表達則不太合適,資源就是解決這種問題的,而且資源還有自己的視角。Netsharp的平台工具中,大部分菜單都是使用資源進行管理的,可以說資源的概念比插件的概念要大。
Netsharp中有30種以上的資源類型,這些資源類型按照樹狀結構進行分類,資源的分類叫資源樹,樹上的每個節點叫資源節點。Netsharp中所有的資源類型的分類是統一的,即所有的資源分類都使用一個資源樹。資源節點在Netsharp中對應的實體是Netsharp.Core.ResourceNode。下圖是Netsharp的平台管理工具的面板,他可以通過工作區的主菜單”視圖/平台工具”打開,這些工具中大部分是以資源的方式來進行管理的。
以Netsharp部件工作區(PartWorkspace)為例,部件工作區是一種資源,他按照資源樹的方式進行管理,請參見下圖部件工作區的工具。
下圖是Netsharp的枚舉管理工具,枚舉是Netsharp的一種資源,他也按照資源樹的方式進行管理,請參見下圖:
1.3.3.3 資源是如何分類的
下圖是Netsharp資源節點的管理界面,所有的資源節點組成了一棵資源樹。
對於管理軟件來說,一般會進行如下分類
級次 |
一級 |
二級 |
三級 |
四級 |
五級 |
本文命名 |
產品線 |
子系統 |
模塊 |
領域對象 |
實體 |
ERP產品線 |
建築施工企業軟件產品 |
子系統一 |
- |
- |
- |
子系統二 |
- |
- |
- |
||
子系統三 |
- |
- |
- |
||
... |
- |
- |
- |
||
ERP產品 |
供應鏈 |
采購 |
采購訂單 |
采購訂單頭 |
|
|
采購訂單行 |
||||
|
結算明細 |
||||
進貨單 |
- |
||||
采購發票 |
- |
||||
... |
- |
||||
銷售 |
- |
- |
|||
庫存 |
- |
- |
|||
財務 |
現金 |
- |
- |
||
往來 |
- |
- |
|||
出納 |
- |
- |
|||
生產 |
- |
- |
- |
||
分銷零售 |
- |
- |
- |
||
.... |
- |
- |
- |
上圖為稍微復雜一些的系統分級結構,簡單的系統可能只有第三、四、五級。第五級別的實體為研發人員視圖。客戶和銷售人員不會有此概念,或者概念比較模糊,即他們不會把實體作為獨立的概念環境進行思維。在命名上會有歧義的是第三級和第四級,即模塊和領域對象。“領域對象”是本文的一種叫法,目前還沒有找到更好的進行第三級和第四級進行區分的命名。使用“領域對象”的初衷是領域指的是軟件給客戶(某一種崗位在某一個業務場景)提供完整業務的一種最小的場景,如錄入一張新的采購訂單,在這個場景中,用戶打開采購訂單界面,可以做很多與采購訂單編輯相關的事情。(這個名稱感覺也不是很好,因為用戶很難理解)模塊可以簡單的理解為是一個部門級別的應用,或者為一個需要多個崗位來完成的場景,比如采購管理。
在Netsharp的資源節點對應的實體是Netsharp.Core.ResourceNode,ResourceNode有個屬性ResourceType,ResourceType是一個枚舉,有三個可選值:分類、插件、單據。ResourceType是資源節點的必輸字段。下面詳細介紹這三種資源節點類型。
1.插件
和第三級模塊對應,當資源節點類型為插件是,必須在資源節點上設置對應的插件。因為平台的資源是通過資源樹管理的,當插件進行導出操作時候,平台會根據插件對應的資源節點把下屬的所有資源進行導出,插件的安裝、卸載也是這種邏輯。
2.單據
和第四級(領域對象)對應,當資源節點是一個領域對象時,如銷售訂單、采購入庫單等,資源節點類型選擇單據。當資源節點為單據時,必須設置資源節點的EntityId。EntityId是Netsharp中常用的概念,他表示一個領域對象,技術上對應領域對象(或者叫實體)的Type.FullName,也可以理解為實體模型的類全名,參見下圖:
領域對象是實體的特例,當一個資源節點和一個實體對應時,類型都可以選擇單據。
3.分類
當資源節點類型不為插件和單據時,都可以選擇分類。
1.3.4 工作台
Netsharp工作台就是最終用戶看到的產品的主界面,工作台有時也稱之為門戶。用戶可以自定義工作台的布局,下圖顯示了默認工作台的布局結構:
下面是這六個部分的概要描述
順序 |
名稱 |
說明 |
插件路徑 |
擴展說明 |
1 |
LOGO |
產品圖標 |
無 |
自動讀取應用程序配置的產品名稱 |
2 |
用戶信息區 |
|
Workbench/StatusBar/RightMenu |
|
3 |
MainMenu |
主菜單 |
Workbench/MainMenu |
Netsharp的原則是主菜單只現實系統級別的菜單(如系統選項、常用工具、視圖、幫助等),不顯示業務相關的菜單 |
4 |
Pad |
面板 |
Workbench/Pad |
目前平台提供了四個面板,導航欄、平台工具、業務模型、作業管理;在這個路徑下可以創建自定義的導航面板, |
5 |
Workspace |
工作區 |
無 |
工作區一般會通過面板和主菜單的出發打開,不在贅述。Netsharp支持擴展自定義的工作區。 |
6 |
StatusBar |
狀態欄 |
無 |
|
除了上面六個部分,還有不明顯體現在界面元素上的工作台初始化相關工作項,他們分別:
順序 |
名稱 |
說明 |
插件路徑 |
擴展說明 |
1 |
Autorun |
工作台初始化 |
Workbench/AutoRun/Client |
工作台啟動后,會讀取此路徑,自動執行此路徑配置的邏輯 |
2 |
Icon |
圖標 |
Netsharp/Icons |
自定義的圖標在這里初始化 |
3 |
Homepage |
起始頁 |
Workbench/Homepage/ZonePart |
Netsharp目前的起始頁是有多個Zone組成的,這里可以設置起始頁的Zone |
4 |
VersionCache |
版本緩存 |
無 |
為了提高性能,把Netsharp的元數據緩存在本地,當元數據改變時自動更新緩存的機制 |
5 |
|
|
|
|
6 |
|
|
|
|
1.3.5 部件工作區
上文已經介紹了工作區(Workspace)的的概念,本節介紹一種特殊的工作區叫部件工作區(PartWorkspace),無論您是Netsharp的最終用戶,還是開發人員,您時刻都會跟PartWorkspace有關。
本人認為軟件的界面是一種樹狀的邏輯結構,在設計模式中對應着組合模式(Composite),以Netsharp的工作台為例,工作台是頂級節點,工作台由工作台頁頭、Pad容器、工作區容器、主菜單、狀態欄等子組件組成,這幾個子級別又分別有自己的子級組件,如此類推就形成了一棵樹。樹的末級節點一般是Textbox、ComboBox等控件。所以一般基於元數據的界面描述都使用XML格式的語法,因為XML是樹狀結構的,比如HTML和XAMAL。
一般來說,開發人員封裝的界面組件,分成兩個種,一種是技術性質的控件,比如Outlookbar,日歷等;另一種是業務性質的控件,比如訂單表單,和單據控件,不同的研發團隊積累不一樣,封裝的角度也不同,如果封裝單據作為控件的話,是平台化的思路,抽象層次要高一些。Netsharp是平台所以會對單據進行封裝,但是Netsharp封裝的力度比單據要細一個級別,本文稱之為部件。一個工作區是由多個部件組成的,部件之間一般有父子關系。對於訂單的表單來說,其工作區一般由兩個部件組成:實體的表單部件(父)和實體明細列表部件(子)。對於訂單列表來說,界面可以有三個部件:訂單列表(父)、訂單表單(子)、訂單子表(子或者孫,父親為列表或者表單),子表部件和表單部件可以被重用,做出更多靈活的界面。部件對於做界面設計和二次開發都提供了比較好的角度,可以說是技術和業務上最理想的封裝粒度。
Netsharp提供了20種部件,用戶可以繼承擴展這些部件,也可以實現自己獨立的部件,Netsharp部件參考下圖:
序號 |
編碼 |
名稱 |
默認控制器 |
默認工具欄 |
說明 |
1 |
EntityList |
列表.主列表 |
Netsharp.Commerce.EntityListPart |
Netsharp/Commerce/EntityList/Toolbar |
|
2 |
Datagrid |
列表.只讀 |
Netsharp.Commerce.DatagridPart |
Netsharp/Commerce/Datagrid/Toolbar |
|
3 |
EntityDetail |
列表.單據列表 |
Netsharp.Commerce.EntityDetailPart |
Netsharp/Commerce/EntityDetail/Toolbar |
|
4 |
VoucherDetail |
列表.單據明細列表 |
Netsharp.Commerce.VoucherDetailPart |
Netsharp/Commerce/Voucher/DetailMenu |
|
5 |
Detail |
列表.細列表 |
Netsharp.Commerce.DetailPart |
Netsharp/Commerce/Voucher/DetailMenu |
|
6 |
DatagridSolution |
列表方案 |
Netsharp.Commerce.DatagridSoltionPart |
Netsharp/Commerce/QuerySolution/MainMenu |
|
7 |
ReportList |
列表.報表 |
Netsharp.Commerce.DatagridReportPart |
Netsharp/Commerce/Voucher/DatagridReportMenu |
|
8 |
VoucherForm |
表單.單據 |
Netsharp.Commerce.VoucherFormPart |
Netsharp/Commerce/Form/Navigation/Toolbar |
|
9 |
CustomerForm |
表單.可保存 |
Netsharp.Commerce.FormPart |
Netsharp/Commerce/Form/Edit/Toolbar |
|
10 |
FormPart |
表單.屬性 |
Netsharp.Commerce.FormPart |
Netsharp/Commerce/Form/Property/Toolbar |
|
11 |
ReferencePart |
表單.引用表單 |
Netsharp.Commerce.ReferencePart |
Netsharp/Commerce/Voucher/ReferenceMenu |
|
12 |
ReportStatistics |
報表.統計表 |
Netsharp.Grus.SummaryReportPart |
Netsharp/Commerce/Datagrid/Toolbar |
|
13 |
ReportRdlc |
報表.交叉表 |
Netsharp.Grus.RdlcReportPart |
Netsharp/Grus/RdlcReport/Toolbar |
|
14 |
ReportGrus |
報表.GRUS |
Netsharp.Grus.GrusPart |
|
|
15 |
ReportQueryFilter |
報表查詢條件 |
Netsharp.Commerce.RdlcQueryFilterPart |
Netsharp/Commerce/QueryFilter/MainMenu |
|
16 |
ReportSolution |
報表方案 |
Netsharp.Grus.ReportSolutionPart |
Netsharp/Grus/ReportSolution/Toolbar |
|
17 |
TreePart |
分類樹 |
Netsharp.Commerce.TreePart |
Netsharp/Commerce/CategoryTreePart/Toolbar |
|
18 |
QuerySolution |
查詢方案 |
Netsharp.Commerce.QuerySolutionPart |
Netsharp/Commerce/Solution/MainMenu |
|
19 |
QueryFilter |
查詢條件 |
Netsharp.Commerce.QueryFilterPart |
Netsharp/Commerce/QueryFilter/MainMenu |
|
20 |
Customer |
自定義 |
|
|
|
1.3.6 六駕馬車
Netsharp有六駕馬車的概念,這六駕馬車都基於插件使用,可以擁有非常強大的功能。六駕馬車是從技術角度對開發六種場景抽象,他們分別是:
編號 |
英文名 |
中文名 |
說明 |
場景 |
開發相關 |
1 |
Command |
命令 |
界面操作的一個觸發,常用的有Button、MenuItem、Toolbar的事件 |
系統點擊“退出”按鈕,執行Netsharp.Platform.ApplicationExitCommand |
界面層使用,一般和菜單、樹節點、工具欄項上配置 |
2 |
Trigger |
字段觸發器 |
某一個字段被修改之后,引起其他字段的計算 |
修改單價和數量時,自動計算金額 |
重寫實體的OnPropertyChanged方法 實現IPropertyTrigger接口 界面層Controller中的On**Changed方法 |
3 |
Validation |
字段驗證 |
數據合法性驗證 |
保存時的郵件驗證 |
實體屬性Set調用時捕獲的異常信息實現接口IPropertyValidation |
4 |
Condition |
字段條件 |
某個字段在某種場景下不可以編輯或者隱藏 |
審核后數量不能修改 |
重寫實體的Condition方法 實現接口IPropertyCondition 界面層Controller的**Condition方法 |
5 |
OperationCondition |
操作條件 |
操作按鈕在某個場景下不可用或者隱藏 |
審核后不能刪除 |
實現接口IOperationCondition 在插件中配置 |
6 |
Action |
(無) |
一個實體的操作分成多個步驟執行,每個步驟叫一個Action。 界面客戶端和服務端都可以使用Action |
客戶端和服務端都可以使用,參見下文 |
實現接口IAction 在插件中配置 服務端的路徑為服務類型全名+方法名 客戶端的路徑為控制器類型全名+方法名 |
本文是體系結構的介紹,關於每駕馬車在第三個系列Netsharp開發中都會有詳細的介紹,這里只說明一下Action在界面端和服務端的兩個種:
一、客戶端Action場景:
例如,在Netsharp平台的普通的一張表單界面上,用戶執行保存按鈕時,執行的是Controller的Save方法,按照順序執行的邏輯如下:
順序 |
功能 |
Action |
說明 |
1 |
調用前置方法OnSaving |
OwnerMethodAction |
|
2 |
調用前置事件Saving |
OwnerEventAction |
|
3 |
性能跟蹤開始 |
StopwatchStartAction |
|
4 |
顯示Loadingbar |
LoadingbarStartAction |
|
5 |
界面端錄入合法性校驗 |
FormpartSaveAssertAction |
|
6 |
調用保存服務 |
FormpartSaveAction |
|
7 |
調用保存后置事件Saved |
OwnerEventAction |
|
8 |
調用保存后置方法OnSaved |
OwnerMethodAction |
|
9 |
隱藏Loadingbar |
LoadingbarEndAction |
|
10 |
性能跟蹤停止 |
StopwatchEndAction |
|
二、服務端Action場景
例如,在訂單保存時服務方法中執行的邏輯,按照順序如下:
順序 |
功能 |
Action |
說明 |
1 |
信用控制 |
|
|
2 |
可用量控制 |
|
|
3 |
最低售價控制 |
|
|
4 |
訂單基本校驗 |
|
|
5 |
訂單持久化到數據庫 |
|
|
6 |
生成收款單 |
|
|
7 |
生成出庫單 |
|
|
8 |
生成加工單 |
|
|
9 |
記往來賬 |
|
|
10 |
記可用量帳 |
|
|
11 |
更新客戶信用 |
|
|
12 |
更新最低售價 |
|
|
1.4 Netsharp組件清單
分類 |
組件 |
功能特征 |
客戶可見 |
工具支持 |
4.0版本已支持 |
元數據管理方式 |
1 |
實體模型 |
可持久化 可序列化 實體支持三駕馬車 平台自定義數據類型 平台提供常見的若干父類(可持久化實體、業務實體、分類實體) 支持字段擴展 可視化實體設計 |
否 |
UML建模工具 |
是 |
插件 |
2 |
插件機制 |
參考SharpDevelop插件機制(改造成適合管理軟件的插件模式) 數據庫格式 路徑支持繼承 插件項支持重寫 支持插件項與功能權限綁定 |
否 |
插件編輯工具 插件瀏覽工具 安裝卸載工具 |
是 |
插件 |
3 |
持久層 |
多數據庫 級聯對象增刪改查 OQL查詢 並發控制 引用檢查 基於Ado.net的事務 分布式事務(暫不支持) 支持Sqlserver 部分支持Mysql 可擴展支持Oracle 可擴展支持其他數據庫 |
否 |
OQL查詢分析器 |
是 |
無 |
4 |
分布式 |
服務調用級別事務 多種訪問方式(HTTP\TCP) 高性能的序列化 客戶端動態代理 日志跟蹤 根據父類的實體默認提供服務實現如:EntityService、BusinessEntityService、VoucherService |
否 |
性能跟蹤查看其 |
是 |
無 |
5 |
工作台 |
支持自定義布局 默認布局支持Pad、Workspace、主菜單、狀態來自定義配置 支持產品名、公司版權、LOGO、版本等自定義設置 登錄界面支持自定義背景圖片 |
是 |
|
是 |
插件和配置文件 |
6 |
單點登錄 |
暫不支持 |
是 |
|
否 |
無 |
7 |
多國語言 |
基於數據庫配置 平台提供多語言工具 |
是 |
多語言維護工具 |
是 |
資源樹 |
8 |
並發 |
基於Ts的並發控制 根據系統選項確定是否並發控制 |
否 |
實體元數據上設置 |
是 |
實體模型 |
9 |
互斥 |
兩個業務場景不能同時發生 |
否 |
|
否 |
資源樹 |
10 |
表單 |
根據實體元數據快速生成表單 支持最終用戶的字段設置 支持常見的控件類型 數據的雙向綁定 字段顯示,必輸,可空,公式等設置 默認打印 |
是 |
表單管理工具 |
是 |
資源樹 |
11 |
列表 |
根據實體元數據快速生成列表 支持最終用戶的字段設置 支持常見的控件類型 數據的雙向綁定 支持分頁 支持懶加載 可設置字段:顯示,必輸,可空,排序,匯總等屬性 支持默認打印 |
是 |
列表管理工具 |
是 |
資源樹 |
12 |
查詢 |
根據實體元數據快速生成查詢 支持最終用戶的字段設置 支持常見的控件類型 多種查詢控件 自定義查詢方案 |
是 |
查詢工具 |
是 |
資源樹 |
13 |
打印 |
可視化打印模板設置 支持匯總表 支持交叉表 支持自定義報表 圖表(暫時不支持) |
是 |
報表設計器 報表工具 |
是 |
資源樹 |
14 |
權限控制 |
功能權限/字段權限 數據權限 權限約束/權限互斥 分級授權 |
是 |
操作管理工具 |
是 |
資源樹 |
15 |
編碼規則 |
支持流水號 支持編號包含普通文本 3. 支持編號包含當前實體字段 |
是 |
編碼規則設置工具 |
是 |
資源樹 |
16 |
AOP |
暫不支持 |
否 |
|
否 |
無 |
17 |
性能統計分析 |
自動 |
否 |
性能統計選項開關 性能分析器 |
是 |
無 |
18 |
自動化測試 |
暫不支持 |
否 |
|
否 |
無 |
19 |
腳本引擎 |
支持C#腳本功能 |
否 |
腳本測試工具 |
是 |
無 |
20 |
UI控件套件 |
使用Telerik控件庫 自定義若干控件 |
是 |
|
是 |
無 |
21 |
業務選項 |
基於插件的選項配置 默認提供多種數據類型的選項控件 |
是 |
插件工具 |
是 |
插件 |
22 |
向導 |
支持向導框架 |
是 |
|
是 |
無 |
23 |
組織機構 |
支持用戶/角色 支持多組織 支持總公司/子公司/部門/分類/項目/職務/崗位 |
是 |
|
是 |
無 |
24 |
界面三駕馬車 |
狀態控制 觸發器 編輯驗證 |
是 |
|
是 |
硬編碼 插件 界面元數據 |
25 |
工作流 |
|
是 |
|
否 |
資源樹 |
26 |
創建帳套 |
暫不支持 |
是 |
|
否 |
無 |
27 |
異常管理 |
異常框架 異常跟蹤 異常查看 |
否 |
異常列表查看 |
是 |
資源樹 |
28 |
枚舉 |
表單、列表、查詢對應的控件 自動生成枚舉代碼 |
是 |
枚舉管理工具 |
是 |
資源樹 |
29 |
參照 |
支持下拉列表 支持彈出參照 支持表單、列表、查詢動態創建默認參照 支持添加自定義的過濾條件 支持添加當前行的變量作為條件 支持C#腳本生成條件 |
是 |
參照管理工具 |
是 |
資源樹 |
30 |
預警/提醒/通知 |
|
是 |
插件工具配置 |
是 |
資源樹 |
31 |
作業 |
基於Quartz.NET 支持可視化的觸發器設置 可視化創建作業 支持作業日志跟蹤 |
否 |
作業管理工具 |
是 |
資源樹 |
32 |
日志組件 |
|
否 |
生成日志文件 |
是 |
無 |
33 |
客戶端自動升級 |
客戶端發現新版本時自動升級 |
|
|
|
無 |
34 |
數據庫腳本升級工具 |
低版本到高版本升級時,自動執行若干腳本 |
|
|
|
|
35 |
緩存 |
內存緩存 緩存服務器 單個對象緩存 SET緩存 |
|
|
|
|
36 |
Session管理 |
超時驗證 踢出管理 |
|
|
|
無 |
37 |
業務日志 |
單據增刪改查自動記錄日志 登錄等操作自動記錄日志 日志查看、跟蹤 |
|
|
|
無 |
38 |
導出SQL腳本 |
列表、表單支持導出當前數據位SQL腳本 支持導出當前數據及組合數據 支持根據ById導出 支持導出全表 支持任意SELECT語句的腳本導出 |
|
|
|
單據、列表的二次開發菜單 SQL查詢分析器 |
1.5 Netsharp發展路線圖
Netsharp路標規划分成五個階段,參見下圖,目前基本完成第二個階段,即平台產品化階段。
本文特別感謝東莞許勝平的建議和校對工作。