请选择 进入手机版 | 继续访问电脑版

马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#问题入口 ASP.NET问题入口

【C#问题提交】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接毕业设计】 面试-葵花宝典下载

官方一群:

官方二群:

查看: 464|回复: 5

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

  [复制链接]
  • TA的每日心情
    开心
    前天 21:32
  • 签到天数: 1610 天

    [LV.Master]伴坛终老

    4251

    主题

    6177

    帖子

    11万

    积分

    管理员

    IBC编程社区-原道楠

    Rank: 9Rank: 9Rank: 9

    积分
    111382

    推广达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2019-11-8 09:55:09 | 显示全部楼层 |阅读模式

    马上加入IBC,查看更多教程

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x

    前言

    在之前鼓捣过一次底子工程April.WebApi后,就思量把常用的类库打包做成一个公共类库,如许既方便维护也方便后续做快速开辟使用,堆栈地点:April.Util_githubApril.Util_gitee,后续会继承推出基于Util的底子工程(包罗权限干系)以及假如代码天生器以为可以了也会推出,先mark不错过。

    April.Util

    起首,我们创建一个类库工程,固然新建之后就是删掉默认的类,我这里的版本是netstandard 2.0。

    095923k8edw8p4hwyyqh8z.png

    然后我们先缕下之前我做底子工程时间须要用到的通用型类库(固然后续会不绝跟进增补)。

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

    我们所须要引入的NuGet包,尽大概的节省新工程须要引入的类库,如许同一类库环境,方便多工程简单摆设题目,固然也可以只引入dll文件,自己在工程中引入须要的环境类库,引入类库列表。

    • 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工程中已经存在或是须要引用,这里存在重复引入的大概,以是须要关注版本题目,但是现在是会根据新版本的稳固版来同一版本题目。

    代码可直接从堆栈拉取,地点也在开头给出,天生工程之后我们可以得到一个dll文件,就如我前面所说,你可以引入dll文件然后在自己工程打入须要的环境包,也可以发布一个NuGet包,直接引入April.Util

    打包带走

    起首,右键Util选择属性,切换到打包界面。

    095924u3gprqpprxgxuebs.png

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

    095924p7bgg1sdd75fyfth.png

    本地使用

    假如只是本地自己用的话,也不想发布为公开,可以通过设置NuGet包的地点来获取我们自己的NuGet包。

    095924yajl1022ossa0iol.png

    095925ujjd2d9sx9zuluao.png

    之后,我们就可以获取我们自己的NuGet了。

    095925kdrsqdh0dt6q6wqd.png

    发布NuGet

    固然你可以选择发布到NuGet堆栈,登录NuGet官网,假如没有账号须要注册个google账号。

    登录之后,在我们头像下选择上传包。

    095926cykmzzou555uprxk.png

    选择文件,拉到最下面(固然你可以一起看看干系的参数),然后终极的Submit,之后我们就可以看到已经上传乐成,但是检索须要等候个把小时,上传的包应该是没法删除,以是这点儿须要注意

    095926dhbukrh822grhhhg.png

    示例

    在代码堆栈中我连带有个Simple的WebApi,内里引入了Util,包罗一些其他的通例使用方法,特别注意下入口文件Startup,固然这个工程后续也是会不绝的完满的,至于更新的力度以及代码规范度,emm,个人的气力照旧有限,渴望也能有更多的人可以一起探究。

    Startup

    1. <code> public Startup(IConfiguration configuration)
    2. {
    3. Configuration = configuration;
    4. AprilConfig.Configuration = configuration;
    5. LogUtil.InitLog();
    6. RedisUtil.InitRedis();
    7. }
    8. public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    9. {
    10. AprilConfig.ServiceProvider = app.ApplicationServices;
    11. }</code>
    复制代码

    095926c3sosufy8g7aoaus.png

    1. <code>/// <summary>
    2. /// 示例获取
    3. /// </summary>
    4. /// <returns></returns>
    5. [HttpGet]
    6. [AprilLog]
    7. public ResponseDataEntity Get()
    8. {
    9. var rng = new Random();
    10. var data = Enumerable.Range(1, 2).Select(index => new WeatherForecast
    11. {
    12. Date = DateTime.Now.AddDays(index),
    13. TemperatureC = rng.Next(-20, 55),
    14. Summary = Summaries[rng.Next(Summaries.Length)],
    15. Timestamp = (int)DateUtil.ConvertToUnixTimestamp(DateTime.Now.AddDays(index))
    16. })
    17. .ToList();
    18. return ResponseUtil.Success("", data);
    19. }
    20. /// <summary>
    21. /// 验证码
    22. /// </summary>
    23. /// <param name="type">是否画线</param>
    24. /// <returns></returns>
    25. [HttpGet]
    26. [Route("Code")]
    27. public FileContentResult Code(int type)
    28. {
    29. string code = CodeUtil.GetSingleObj().CreateVerifyCode(CodeUtil.VerifyCodeType.MixVerifyCode, 6);
    30. //LogUtil.Info($"天生6位验证码:{code}");
    31. bool isAddLines = false;
    32. if (type == 1)
    33. {
    34. isAddLines = true;
    35. }
    36. var bitmap = CodeUtil.GetSingleObj().CreateBitmapByImgVerifyCode(code, 100, 40, isAddLines);
    37. code = EncryptUtil.EncryptDES(code, AprilConfig.SecurityKey);
    38. CookieUtil.AddString("code", code, 5);
    39. MemoryStream stream = new MemoryStream();
    40. bitmap.Save(stream, ImageFormat.Gif);
    41. return File(stream.ToArray(), "image/gif");
    42. }</code>
    复制代码

    小结

    路漫漫,小半天的整理,但是前前后后的底子工程的路淌了好几版,从netframework到net core,想做一套通用的底子工程以淘汰开辟工作量,但是这种确实没有完美无缺的,根据业务来设计才是最符合的,但是规范化这点儿不可缺失,就先从Util开始,一点点的领出来,组件化的来开辟,信任以后会越来越好,假如有哪些地方不符合,也渴望能有大佬给出指点,一人探索过河,也请包涵

    C#论坛 www.ibcibc.com IBC编程社区
    C#
    C#论坛
    IBC编程社区
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则