前言:作為一名95后的程序猿,已經寫了一年多的代碼了,為了提升自己的技術水平,所以決定嘗試編寫一個快速開發框架開源出來,一來提升自己的技術水平,二來助力.NET Core生態發展
寫這個框架主要是為了幫助減少一些基礎的CURD的操作,解放碼農,留出更多的時間去改BUG,免的被祭天,框架的目標人群為中小項目,大項目不適用。
項目簡介
框架名稱:Tassdar 我用星際爭霸中,星靈的最高指揮官Tassdar的名字來命名了這個框架(星際中二粉)。
框架需求:.NET Core 2.2以上SDK ,Mysql5.7
git地址:https://gitee.com/Tasssdar/Tassdar.git
框架結構:
框架中的代碼我都加了注釋,這里僅簡單介紹一下結構
框架一共分為4層
Core層:
Core層提供了日常需要用的一些基礎幫助類,用於方便數據的處理
FreamWork層:
FreamWork層封裝了整個框架的核心代碼,EF的上下文,快速數據處理接口等都在這個類庫中,本框架中Mysql的驅動沒有使用官方驅動,因為官方驅動不支持LINQ的Any,如果使用者有需要可以替換Nuget中的包
Service層
Service層用來讓使用者放置新增的接口和邏輯等,EF的CodeFirst設計類放在在這層
Logger層
Logger層是對日志操作的一個封裝類庫,可以讓打出來的日志閱讀性極佳
使用方法
1.創建數據庫
在本地的mysql數據庫中創建一個數據庫
2.進入框架在Service創建一個實體類,讓它繼承EntityBase,Table特性中是你給表起的名字,mysql默認小寫
讓實體繼承EntityBase是為了讓EF掃描實體的時候掃描進去,如果沒有繼承就不回被掃描進去,邏輯在EFContext里,可以自行看源碼
3.進行數據庫的遷移
在Servier層的Logic文件夾下找到DbGen,把剛才新增的實體放到這個類下,使用者記得把這里的鏈接字符串換成你自己的
執行遷移指令,注意,遷移指令必須在Service層的根目錄下執行
dotnet ef migrations add 隨便打個名
dotnet ef database update 同步到數據庫
執行完后會發現數據庫中的表已經創建完成
4.邏輯層配置
在Service層下分別建立改實體的業務邏輯接口和業務邏輯實現類
這里的Api文件夾中的接口是為了把邏輯層和Web層使用的接口進行拆分,正常順序是需要在Controller中外露的接口放在Api文件夾下的接口中,其余的放在Interface下,然后讓IUser繼承IUserApi,覺得費事的同學可以不寫,直接全部寫到IUser里
然后讓IUser接口繼承ILogicBase,讓UserLogic繼承LogicBase和IUser
IValidate接口是數據校驗接口,繼承該接口后在數據持久化時會進行數據的校驗,繼承該接口后會實現Validate方法,把驗證邏輯寫到方法中,例如,我們要求用戶名不允許重復
5.Web層配置
我們創建一個Controller讓它繼承自ApiControllerBase,和IUserApi,這時IUserApi的作用就顯現出來了,我們直接實現IUserApi就省的再去打那一堆的Action了,如果沒有寫IUserApi可以免去這一步,
在控制器的上面帶上Route參數標明你的路由,ApiControllerBase中封裝了一些基礎的數據操作,可以讓你直接操作一些簡單的數據,但是要記得在使用前在構造函數中對_baseLogic進行賦值
6.啟動項目
項目中配置了Swagger,啟動前請先在Web項目右鍵:屬性:生成把XML文檔打上對勾
啟動項目后訪問/swagger,就可以愉快的玩耍了
可以看一下數據校驗接口的效果,當我兩次添加同為名叫小明的用戶時,顯示出我們在驗證方法中輸出的信息
好了,就簡單介紹到這里,第一次開源沒什么經驗哈哈哈哈哈,歡迎各位大佬指正,但是不喜勿噴,愛用不用哈哈哈哈哈哈哈,源碼上我都打了注釋,很容易看的。
能寫出這個框架首先要感謝我的授業恩師宋老師的教誨,其次就是在技術上指導了我很多的Kevin
如果框架的反饋率不錯的話,我會考慮進行下一步的升級,比如提供異步支持之類的等等
謝謝各位的支持。