ibcadmin 发表于 2019-11-8 09:55:09

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

<h3 id="前言">前言</h3>
<p>在之前鼓捣过一次底子工程<strong>April.WebApi</strong>后,就思量把常用的类库打包做成一个公共类库,如许既方便维护也方便后续做快速开辟使用,堆栈地点:<a href="https://github.com/AprilBlank/April.Util.Public">April.Util_github</a>,<a href="https://gitee.com/AprilBlank/April.Util.Public">April.Util_gitee</a>,后续会继承推出基于Util的底子工程(包罗权限干系)以及假如代码天生器以为可以了也会推出,先mark不错过。</p>
<h3 id="april.util">April.Util</h3>
<p>起首,我们创建一个类库工程,固然新建之后就是删掉默认的类,我这里的版本是netstandard 2.0。<br />
</p>
<p>然后我们先缕下之前我做底子工程时间须要用到的通用型类库(固然后续会不绝跟进增补)。</p>
<ul>
<li>通用设置 <strong>AprilConfig,AprilEnums</strong></li>
<li>缓存干系 <strong>CacheUtil,CookieUtil,SessionUtil,RedisUtil</strong></li>
<li>日志干系 <strong>LogUtil</strong></li>
<li>路径哀求干系 <strong>UriUtil</strong></li>
<li>回调干系 <strong>ResponseUtil</strong></li>
<li>时间处置惩罚干系 <strong>DateUtil</strong></li>
<li>验证码干系 <strong>CodeUtil</strong></li>
<li>管理员干系 <strong>TokenUtil</strong> 整理中</li>
<li>加密干系 <strong>EncrypUtil</strong></li>
<li>Aop干系 <strong>AprilLogAttribute</strong></li>
<li>其他扩展类</li>
<li><em>未完待续</em></li>
</ul>
<p>我们所须要引入的NuGet包,尽大概的节省新工程须要引入的类库,如许同一类库环境,方便多工程简单摆设题目,固然也可以只引入dll文件,自己在工程中引入须要的环境类库,引入类库列表。</p>
<ul>
<li>log4net</li>
<li>Microsoft.AspNetCore.Http.Abstractions</li>
<li>Microsoft.AspNetCore.Http.Extensions</li>
<li>Microsoft.AspNetCore.Mvc.Abstractions</li>
<li>Microsoft.AspNetCore.Session</li>
<li>Microsoft.Extensions.Caching.Memory</li>
<li>Microsoft.Extensions.Configuration</li>
<li>Newtonsoft.Json</li>
<li>QRCoder</li>
<li>StackExchange.Redis</li>
<li>System.Drawing.Common</li>
<li><em>未完待续</em></li>
</ul>
<p>固然此中大概大多在WebApi工程中已经存在或是须要引用,这里存在重复引入的大概,以是须要关注版本题目,但是现在是会根据新版本的稳固版来同一版本题目。</p>
<p>代码可直接从堆栈拉取,地点也在开头给出,天生工程之后我们可以得到一个dll文件,就如我前面所说,你可以引入dll文件然后在自己工程打入须要的环境包,也可以发布一个NuGet包,直接引入<strong>April.Util</strong>。</p>
<h3 id="打包带走">打包带走</h3>
<p>起首,右键Util选择属性,切换到打包界面。<br />
</p>
<p>之后我们来发布当前类库工程,发布的过程这里就不再多说了,之后我们根据路径来找到我们发布的类库。<br />
</p>
<h4 id="本地使用">本地使用</h4>
<p>假如只是本地自己用的话,也不想发布为公开,可以通过设置NuGet包的地点来获取我们自己的NuGet包。<br />
<br />
</p>
<p>之后,我们就可以获取我们自己的NuGet了。<br />
</p>
<h4 id="发布nuget">发布NuGet</h4>
<p>固然你可以选择发布到NuGet堆栈,登录<a href="https://www.nuget.org/users/account/LogOn?returnUrl=%2F">NuGet官网</a>,假如没有账号须要注册个google账号。</p>
<p>登录之后,在我们头像下选择上传包。<br />
</p>
<p>选择文件,拉到最下面(固然你可以一起看看干系的参数),然后终极的Submit,之后我们就可以看到已经上传乐成,但是检索须要等候个把小时,<strong>上传的包应该是没法删除,以是这点儿须要注意</strong>。<br />
</p>
<h3 id="示例">示例</h3>
<p>在代码堆栈中我连带有个Simple的WebApi,内里引入了Util,包罗一些其他的通例使用方法,特别注意下入口文件<strong>Startup</strong>,固然这个工程后续也是会不绝的完满的,至于更新的力度以及代码规范度,emm,个人的气力照旧有限,渴望也能有更多的人可以一起探究。</p>
<p><strong>Startup</strong></p>
<code>      public Startup(IConfiguration configuration)
      {
            Configuration = configuration;

            AprilConfig.Configuration = configuration;
            LogUtil.InitLog();

            RedisUtil.InitRedis();
      }
      
      public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
      {
            AprilConfig.ServiceProvider = app.ApplicationServices;
            
      }</code>
<p></p>
<code>/// <summary>
      /// 示例获取
      /// </summary>
      /// <returns></returns>
      
      
      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,
                Timestamp = (int)DateUtil.ConvertToUnixTimestamp(DateTime.Now.AddDays(index))
            })
            .ToList();
            return ResponseUtil.Success("", data);
      }

      /// <summary>
      /// 验证码
      /// </summary>
      /// <param name="type">是否画线</param>
      /// <returns></returns>
      
      
      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");
      }</code>
<h3 id="小结">小结</h3>
<p>路漫漫,小半天的整理,但是前前后后的底子工程的路淌了好几版,从netframework到net core,想做一套通用的底子工程以淘汰开辟工作量,但是这种确实没有完美无缺的,根据业务来设计才是最符合的,但是规范化这点儿不可缺失,就先从Util开始,一点点的领出来,组件化的来开辟,信任以后会越来越好,<strong>假如有哪些地方不符合,也渴望能有大佬给出指点,一人探索过河,也请包涵</strong>。</p>
页: [1]
查看完整版本: net core WebApi——公用库April.Util公开及发布