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]