1. 程式人生 > >ASP.NET Aries 開源開發框架:開發指南(一)

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的明天會更好,為了這份更好,貢獻自己目前為止的最優作品。