net core WebApi——公用库April.Util公开及发布

前言

在以前鼓捣过一次基础工程April.WebApi后,就考虑把经常使用的类库打包作成一个公共类库,这样既方便维护也方便后续作快速开发使用,仓库地址:April.Util_githubApril.Util_gitee,后续会继续推出基于Util的基础工程(包含权限相关)以及若是代码生成器以为能够了也会推出,先mark不错过。git

April.Util

首先,咱们建立一个类库工程,固然新建以后就是删掉默认的类,我这里的版本是netstandard 2.0。
建立github

而后咱们先缕下以前我作基础工程时候须要用到的通用型类库(固然后续会一直跟进补充)。缓存

  • 通用配置 AprilConfig,AprilEnums
  • 缓存相关 CacheUtil,CookieUtil,SessionUtil,RedisUtil
  • 日志相关 LogUtil
  • 路径请求相关 UriUtil
  • 回调相关 ResponseUtil
  • 时间处理相关 DateUtil
  • 验证码相关 CodeUtil
  • 管理员相关 TokenUtil 整理中
  • 加密相关 EncrypUtil
  • Aop相关 AprilLogAttribute
  • 其余扩展类
  • 未完待续

咱们所须要引入的NuGet包,尽量的节省新工程须要引入的类库,这样统一类库环境,方便多工程简单部署问题,固然也能够只引入dll文件,本身在工程中引入须要的环境类库,引入类库列表。app

  • log4net
  • Microsoft.AspNetCore.Http.Abstractions
  • Microsoft.AspNetCore.Http.Extensions
  • Microsoft.AspNetCore.Mvc.Abstractions
  • Microsoft.AspNetCore.Session
  • Microsoft.Extensions.Caching.Memory
  • Microsoft.Extensions.Configuration
  • Newtonsoft.Json
  • QRCoder
  • StackExchange.Redis
  • System.Drawing.Common
  • 未完待续

固然其中可能大多在WebApi工程中已经存在或是须要引用,这里存在重复引入的可能,因此须要关注版本问题,可是目前是会根据新版本的稳定版来统一版本问题。dom

代码可直接从仓库拉取,地址也在开头给出,生成工程以后咱们能够获得一个dll文件,就如我前面所说,你能够引入dll文件而后在本身工程打入须要的环境包,也能够发布一个NuGet包,直接引入April.Utilide

打包带走

首先,右键Util选择属性,切换到打包界面。
打包组件化

以后咱们来发布当前类库工程,发布的过程这里就再也不多说了,以后咱们根据路径来找到咱们发布的类库。
发布ui

本地使用

若是只是本地本身用的话,也不想发布为公开,能够经过配置NuGet包的地址来获取咱们本身的NuGet包。
配置
配置google

以后,咱们就能够获取咱们本身的NuGet了。
获取加密

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

相关文章
相关标签/搜索