在以前鼓捣过一次基础工程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开始,一点点的领出来,组件化的来开发,相信日后会愈来愈好,若是有哪些地方不合适,也但愿能有大佬给出指点,一人摸索过河,也请见谅。