ASP.NET Aries 開源開發框架:開發指南(一)
前言:
上週開源了Aries開發框架後,好多朋友都Download了原始碼,在執行過程裡,有一些共性的問題會問到。
所以本篇打算寫一下簡單的開發指南,照顧一下不是太看的懂原始碼的同學,同時也會講解一下框架原理。
關於框架:
首先,這是一套開發框架,它類同於WebForm、MVC、.NET Core。
相比webform,mvc,.NET Core 它簡化了後端很多東西,它也加強了前端一些功能,預設整合的功能和介面,使得框架更傾向某種場景的開發。
在.NET的世界裡,開發框架的選擇,不應該只有微軟系列,還可以有第三方系列。
框架執行指南:
1:Download 原始碼:
2:建立資料庫:
原始碼下載後其中一個資料夾:Aries.DataBase
可以選擇Mssql或Mysql資料夾下的:資料表指令碼(執行建立表),資料指令碼(執行建立資料)。
3:配置Web.config:
配置框架初始資料庫連結後,執行F5,如果點選登陸提示“please check web.config's httpmoudle!”。
login.html中的內容:
需要把關於httpmodule中關於Aries.Core的配置的註釋開啟(或關閉)
然後執行,就可以了。
框架開發指南:
1:關於資料庫:
開發:
框架有初始的資料庫:其中有一個:Sys_UserInfo 這個表是可以修改擴充套件使用者資訊的。
然後你有兩種選擇:
A:在原有的資料庫裡建表,開展業務(這時只有一個數據庫)。
B:建立新的資料庫,開展業務(這時有N個數據庫,需要在Web.config新增對應的資料庫連結語句,只有一個注意,Key的命名為:資料庫名稱Conn)。
比如你有一個數據庫名叫:MyDB,那麼你就新增一條<add name="MyDBConn" connectionString="..." />
設計原理:
關於資料庫設計這一塊,是支援多資料庫,同時跨各種資料庫型別的,可以各種混搭,只要不存在表名相同,在使用過程中就不用管它屬於哪個資料庫。
設計原來是這樣的:蒐集資料庫連結(以Conn結尾的)=》搜尋所有資料庫表及對應的資料庫。所以反之根據表名就可以找到對應的庫。
如果遇到不同資料庫有相同的表名:則需要在前端使用時用:資料庫名.表名。(因為按查詢規則只會找到第一個出現的表名對應的庫)
2:關於增刪改查匯入匯出:
開發:
1:如果你是單表:通過配置選單就可以搞定了。
2:如果你要呈現的是複雜的多表聯合,你有兩種選擇:
A:在資料庫裡建立檢視,然後把它當單表一樣通過配置選單就可以搞定了。
B:將檢視語句,通過檔案形式放在App_Data目錄下的SQLCode目錄下(按指定格式)即可,然後配置選單就可以搞定了。
關於配置表頭:列頭裡右鍵出來的(有人不知道哪出來)。
配置表頭裡集成了很多常見功能,動動手就可以看出效果了,如把搜尋項打勾,就會出來搜尋條件框。
檢視語句放在檔案的,通過點選檢視指令碼時,可以線上編輯。
3:關於格式化:
A:資料庫裡存檔的是0,1,2這種數字,呈現是中文翻譯,所以有配置表,在配置表裡增加配置項後,在格式化裡填寫#配置鍵 就可以了。
B:如果有些資料是動態的,單獨有表存放的,就需要寫SQL語句放在App_Data\SQLCode目錄下的Sql_Combobox.sql檔案裡(按約定格式),然後把名字配上去。
C:這些弄好的名字,除了格式化,還可以使用在下拉框:configkey取的是配置表的,objName取的是資料庫語句的。
<input configkey="性別“.../>
<input objName="C_SYS_Role" .../>
這樣就會自動格式好下拉框。
設計原理:
對於這一塊的東西,前端發起的各種請求:ajax.html?sys_method=xxxx&sys_objname=xxxx 到最後都會定位到Core專案裡的AjaxBase.cs處理(這裡集成了核心的操作)
對於ajax.html這個檔案是不存在的,只是一個虛擬地址,作為標識判斷條件而已,在Core專案裡UrlRewrite裡相關的判斷條件。
一個頁面:通常會發起四個請求:
GetInitConfig:返回ui(子應用程式部署時的目錄),actionkeys(當前頁面的功能許可權),mid(選單ID)。
GetKeyValueConfig:返回配置表的資料(後臺會有快取),用於翻譯和繫結下拉框。
GetHeader:返回列頭資訊(第一次不存在時,會讀資料庫的元資料,建立生成)
GetList:返回表的資料。
如果介面有對於自定義語句的的下拉資料繫結,則會多一個請求:
GetCombobox是動態發起請求,獲取自定義SQL語句的資料,然後繫結下拉框資料。
4:關於請求的處理流程:
1:一個Ajax請求從頁發起後:AR.Utility.Ajax.Post之後,所有的請求地址都是ajax.html。
2:然後到了UrlRewirte.cs,判斷是ajax.html,就呼叫InvokeLogic
3:然後到了Aries.Logic專案裡Handler資料夾下的類,具體呼叫哪個類,處理流程如下:
A:如果有類名和檔名同名,就呼叫類名.cs
B:如果不存在A,則看有沒和html所在資料夾名同名的,如果有,就呼叫資料夾名.cs(就像SysAdmin系統管理的請求都在SysAdminHandler處理)
C:如果B也不存在,則呼叫DefaultHandler.cs
所有的Handler入口,都繼承自AjaxBase。
結束:
本篇先介紹到這裡,其它內容,另外再寫文分享,謝謝各位支援點讚的朋友,還有各位給我打賞讓我買水喝的朋友。
作為.NET戰線上的十年的一名老戰士,衷心希望.NET的明天會更好,為了這份更好,貢獻自己目前為止的最優作品。