在以前鼓搗過一次基礎工程April.WebApi後,就考慮把經常使用的類庫打包作成一個公共類庫,這樣既方便維護也方便後續作快速開發使用,倉庫地址:April.Util_github,April.Util_gitee,後續會繼續推出基於Util的基礎工程(包含權限相關)以及若是代碼生成器以爲能夠了也會推出,先mark不錯過。git
首先,咱們建立一個類庫工程,固然新建以後就是刪掉默認的類,我這裏的版本是netstandard 2.0。
github
而後咱們先縷下以前我作基礎工程時候須要用到的通用型類庫(固然後續會一直跟進補充)。緩存
咱們所須要引入的NuGet包,儘量的節省新工程須要引入的類庫,這樣統一類庫環境,方便多工程簡單部署問題,固然也能夠只引入dll文件,本身在工程中引入須要的環境類庫,引入類庫列表。app
固然其中可能大多在WebApi工程中已經存在或是須要引用,這裏存在重複引入的可能,因此須要關注版本問題,可是目前是會根據新版本的穩定版來統一版本問題。dom
代碼可直接從倉庫拉取,地址也在開頭給出,生成工程以後咱們能夠獲得一個dll文件,就如我前面所說,你能夠引入dll文件而後在本身工程打入須要的環境包,也能夠發佈一個NuGet包,直接引入April.Util。ide
首先,右鍵Util選擇屬性,切換到打包界面。
組件化
以後咱們來發布當前類庫工程,發佈的過程這裏就再也不多說了,以後咱們根據路徑來找到咱們發佈的類庫。
ui
若是隻是本地本身用的話,也不想發佈爲公開,能夠經過配置NuGet包的地址來獲取咱們本身的NuGet包。
google
以後,咱們就能夠獲取咱們本身的NuGet了。
加密
固然你能夠選擇發佈到NuGet倉庫,登陸NuGet官網,若是沒有帳號須要註冊個google帳號。
登陸以後,在咱們頭像下選擇上傳包。
選擇文件,拉到最下面(固然你能夠一路看看相關的參數),而後最終的Submit,以後咱們就能夠看到已經上傳成功,可是檢索須要等待個把小時,上傳的包應該是無法刪除,因此這點兒須要注意。
在代碼倉庫中我連帶有個Simple的WebApi,裏面引入了Util,包括一些其餘的常規使用方法,特別注意下入口文件Startup,固然這個工程後續也是會不斷的完善的,至於更新的力度以及代碼規範度,emm,我的的力量仍是有限,但願也能有更多的人能夠一塊兒探討。
Startup
public Startup(IConfiguration configuration) { Configuration = configuration; AprilConfig.Configuration = configuration; LogUtil.InitLog(); RedisUtil.InitRedis(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { AprilConfig.ServiceProvider = app.ApplicationServices; }
/// <summary> /// 示例獲取 /// </summary> /// <returns></returns> [HttpGet] [AprilLog] public ResponseDataEntity Get() { var rng = new Random(); var data = Enumerable.Range(1, 2).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(index), TemperatureC = rng.Next(-20, 55), Summary = Summaries[rng.Next(Summaries.Length)], Timestamp = (int)DateUtil.ConvertToUnixTimestamp(DateTime.Now.AddDays(index)) }) .ToList(); return ResponseUtil.Success("", data); } /// <summary> /// 驗證碼 /// </summary> /// <param name="type">是否畫線</param> /// <returns></returns> [HttpGet] [Route("Code")] public FileContentResult Code(int type) { string code = CodeUtil.GetSingleObj().CreateVerifyCode(CodeUtil.VerifyCodeType.MixVerifyCode, 6); //LogUtil.Info($"生成6位驗證碼:{code}"); bool isAddLines = false; if (type == 1) { isAddLines = true; } var bitmap = CodeUtil.GetSingleObj().CreateBitmapByImgVerifyCode(code, 100, 40, isAddLines); code = EncryptUtil.EncryptDES(code, AprilConfig.SecurityKey); CookieUtil.AddString("code", code, 5); MemoryStream stream = new MemoryStream(); bitmap.Save(stream, ImageFormat.Gif); return File(stream.ToArray(), "image/gif"); }
路漫漫,小半天的整理,可是前先後後的基礎工程的路淌了好幾版,從netframework到net core,想作一套通用的基礎工程以減小開發工做量,可是這種確實沒有十全十美的,根據業務來設計纔是最合適的,可是規範化這點兒不可缺失,就先從Util開始,一點點的領出來,組件化的來開發,相信日後會愈來愈好,若是有哪些地方不合適,也但願能有大佬給出指點,一人摸索過河,也請見諒。