前言

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

April.Util

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

然后我们先缕下之前我做基础工程时候需要用到的通用型类库(当然后续会一直跟进补充)。

  • 通用配置 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选择属性,切换到打包界面。

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

本地使用

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



之后,我们就可以获取我们自己的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开始,一点点的领出来,组件化的来开发,相信往后会越来越好,如果有哪些地方不合适,也希望能有大佬给出指点,一人摸索过河,也请见谅

net core WebApi——公用库April.Util公开及发布的更多相关文章

  1. net core WebApi——April.Util更新之权限

    目录 前言 权限 中间层 小结 前言 在之前已经提到过,公用类库Util已经开源,目的一是为了简化开发的工作量,毕竟有些常规的功能类库重复率还是挺高的,二是为了一起探讨学习软件开发,用的人越多问题也就 ...

  2. April.Util更新之权限

    目录 前言 权限 中间层 小结 前言 在之前已经提到过,公用类库Util已经开源,目的一是为了简化开发的工作量,毕竟有些常规的功能类库重复率还是挺高的,二是为了一起探讨学习软件开发,用的人越多问题也就 ...

  3. iis部署 .net core webapi

    iis部署 .net core webapi 1.修改应用程序池: IIS 发布站点,这里就不介绍 IIS 安装等.这里要修改的是应用程序池,选择“无托管代码”: 2.下载安装.net core托管捆 ...

  4. net core Webapi基础工程搭建(六)——数据库操作_Part 1

    目录 前言 SqlSugar Service层 BaseService(基类) 小结 前言 后端开发最常打交道的就是数据库了(静态网站靠边),上一篇net core Webapi基础工程搭建(五)-- ...

  5. net core Webapi基础工程搭建(一)——开发工具及环境

    目录 开发工具 版本 后端框架 开发工具 Visual Studio 2019,既然要折腾那就体验最新版的开发工具有什么特殊的地方,之前个人开发使用的是2017. 下载地址:https://visua ...

  6. net core WebApi——文件分片上传与跨域请求处理

    目录 前言 开始 测试 跨域 小结 @ 前言 在之前整理完一套简单的后台基础工程后,因为业务需要鼓捣了文件上传跟下载,整理完后就迫不及待的想分享出来,希望有用到文件相关操作的朋友可以得到些帮助. 开始 ...

  7. net core WebApi——缓存神器Redis

    目录 前言 Redis 使用 RedisUtil 测试 小结 @ 前言 中秋过完不知不觉都已经快两周没动这个工程了,最近业务需要总算开始搞后台云服务了,果断直接net core搞起,在做的中间遇到了不 ...

  8. Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库

    前面为JSTL中的常用EL函数,后面的为具体演示实例! JSTL简介: JSTL(Java Standard Tag Library) –Java标准标签库. SUN公司制定的一套标准标签库的规范. ...

  9. ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

    引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...

随机推荐

  1. 对vue nextTick深入理解-vue性能优化、DOM更新时机、事件循环机制

    一.定义[nextTick.事件循环] nextTick的由来: 由于VUE的数据驱动视图更新,是异步的,即修改数据的当下,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图 ...

  2. Spring IOC(2)----如何注册bean定义

    前面说到IOC容器在刷新之前的一些初始化工作,现在来看看在refresh()方法中,是怎样来加载注册我们自己的bean定义的. refresh()方法中有很多功能,从注释中就可以看出来 我们本次重点关 ...

  3. 模拟实现JSON.stringiry 的格式化输出

    前言 这是一道笔试题,要求模拟实现JSON.stringiry 的格式化输出,按照层级缩进,输出易读格式,即完成以下方法 JSON.stringify(jsObj, null, 4); // 缩进4个 ...

  4. 面试题解析|ACL权限控制机制

    ACL(Access Control List)访问控制列表 包括三个方面: 一.权限模式(Scheme) 1.IP:从 IP 地址粒度进行权限控制 2.Digest:最常用,用类似于 usernam ...

  5. Angular: If ngModel is used within a form tag, either the name attribute must be set or the form control must be defined as ‘standalone’ in ngModelOptions.

    在Angular中,动态生成的Html控件,如果没有name属性并且在ts中要操作Model的内容.就会引发如题的错误. 解决方案两个: 加上name的属性 设置ngModelOptions   [n ...

  6. Swoole4-swoole创建Mysql连接池

    一 .什么是mysql连接池 场景:每秒同时有1000个并发,但是这个mysql同时只能处理400个连接,mysql会宕机. 解决方案:连接池,这个连接池建立了200个和mysql的连接,这1000个 ...

  7. .NetCore WebApi —— Swagger版本控制

    目录: .NetCore WebApi——Swagger简单配置 .NetCore WebApi——基于JWT的简单身份认证与授权(Swagger) .NetCore WebApi —— Swagge ...

  8. linux netlink通信机制简介

    一.什么是Netlink通信机制  Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口. Netlink 是一种特殊的 s ...

  9. CONVERT用法指南,时间字段截取方法

    语法: CONVERT(VARCHAR(7),<字段名称>,121) 时间转字符:select CONVERT(VARCHAR(7),dyxq,121),* from TBYPKC03-- ...

  10. git操作指令,以及常规git代码操作

    安装git后操作指令如下:可以查阅git安装使用操作指南详情git安装使用操作图示详情.note 线上可参考指南:http://www.bootcss.com/p/git-guide/   所有操作在 ...