前言

前一篇讲到了中间层的使用,可能不是那么AOP,今天主要来说下一个轻量级的AOP第三方类库AspectoCore

简单介绍下这个类库,AspectCore Project 是适用于 net core 平台的轻量级 Aop(Aspect-oriented programming) 解决方案,它更好的遵循 net core 的模块化开发理念,使用AspectCore可以更容易构建低耦合、易扩展的Web应用程序。

引入

首先,我们在Util层直接引入相关的类库。



然后我们还是先在Startup注册下,将ConfigureServices方法从void更改为IServiceProvider,目的就是,这个管道给别人了,不再由默认的来了。

	public IServiceProvider ConfigureServices(IServiceCollection services)
{
//...之前的
services.AddAspectCoreContainer();
return services.BuildAspectInjectorProvider();
}

自定义属性

写完之后,我们就可以来试试这个玩意儿怎么玩了,不多说,Util来个文件夹Attributes,然后新建一个类AprilLogAttribute,继承AbstractInterceptorAttribute

    public class AprilLogAttribute : AbstractInterceptorAttribute
{
public async override Task Invoke(AspectContext context, AspectDelegate next)
{
LogUtil.Debug("AprilLogAttribute begin");
await next(context);
LogUtil.Debug("AprilLogAttribute end");
}
}

没啥具体的使用注解,就是加个前后注释的作用。然后我们在之前的Student这个接口中加上一个测试方法。

    public interface IStudentService : IBaseService<StudentEntity>
{
[AprilLog]
void Test();
}

StudentService我们来实现这个方法。

    public class StudentService : BaseService<StudentEntity>, IStudentService
{
public void Test()
{
LogUtil.Debug("StudentService Test");
}
}

测试

全部搞定之后,我们继续Values开刀,注释掉之前的代码之后,只留一个Test方法。

        [HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
_service.Test();
return new string[] { "value1", "value2" };
}

别忘了运行前在application.json里面加上接口白名单。

{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"CommonSettings": {
"FilePath": "/uploads/files/"
},
"DefaultSqlConnectionString": {
"MySql": "server=127.0.0.1;userid=root;password=root;database=test;"
},
"AllowUrl": "/api/Values" //这个如果没有那一直是返回未登录
}



运行没问题,我们来看下日志记录。



另外也补充下这个记录的问题,如果需要监视接口调用的情况,我们可以加上断点看下这个context,这个对象里面本身已经包含了我们调用了哪个接口的哪个方法等等信息,这里只举个简单的例子,我们可以知道我们调用的接口及方法,包括实现及方法,然后可以记录下是谁访问,哪个接口,执行时间等等。

小结

写到这里,net core webapi的基础工程基本上已经完工了,通过这些记录我本身又对之前的工程进行了小量的改动,每次的一版写完都有一个新的感受,可能当时写一版的时候没有想太多,一遍一遍的过完之后发现有些地方可以优化,并且优化的效果也是挺明显,后续如果有新的功能实现或者业务需要的时候,也会同步更新的这个示例工程。

net core Webapi基础工程搭建(七)——小试AOP及常规测试_Part 2的更多相关文章

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

    目录 前言 开始 使用 小结 前言 昨天是写着写着发现,时间不早了,已经养成了晚上下班抽时间看看能写点儿啥的习惯(貌似),今天实在是不想让昨天没做完的事情影响,所以又坐下,沉下心(周末了),开始把数据 ...

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

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

  3. net core Webapi基础工程搭建(五)——缓存机制

    目录 前言 Cache Session Cookie 小结 补充 前言 作为WebApi接口工程,性能效率是必不可少的,每次的访问请求,数据库读取,业务逻辑处理都或多或少耗费时间,偶尔再来个各种花式f ...

  4. net core Webapi基础工程搭建(二)——创建工程

    目录 前言 创建工程 工程文件概述(个人理解) 运行 小结 前言 前面介绍了开发工具及net core版本,后端工程的框架结构开发工具及环境,因为是基础工程,所以没考虑太复杂的框架,如果有架构师请勿喷 ...

  5. net core Webapi基础工程搭建(七)——小试AOP及常规测试_Part 1

    目录 前言 拦截器 异常拦截器 测试结果 身份验证拦截器 测试 小结 补充 2019-07-31 前言 一天天不知道怎么过的,但确实挺忙,事赶事不带停那种,让我感觉跟在流水线干活一样,忙活的事差不多了 ...

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

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

  7. net core Webapi基础工程搭建(四)——日志功能log4net

    目录 前言 log4net 依然是,NuGet引用第三方类库 整合LogUtil 小结 前言 一个完整的项目工程离不开日志文件的记录,而记录文件的方法也有很多,可以自己通过Stream去实现文件的读写 ...

  8. net core Webapi基础工程搭建(三)——在线接口文档Swagger

    目录 前言 Swagger NuGet引用第三方类库 别急,还有 没错,注释 小结 前言 前后分离的好处,就是后端埋头做业务逻辑功能,不需要过多考虑用户体验,只专注于数据.性能开发,对于前端需要的数据 ...

  9. 第十九节:Asp.Net Core WebApi基础总结和请求方式

    一. 基础总结 1.Restful服务改造 Core下的WebApi默认也是Restful格式服务,即通过请求方式(Get,post,put,delete)来区分请求哪个方法,请求的URL中不需要写方 ...

随机推荐

  1. py+selenium 老是定位不到文本内容【已解决】

    问题:定位不到文本内容,路径也正确,该加frame也有加,等待时间也够长 测试: 上图看不出差异,但是测试1就定位得到,测试2就定位不到,为什么? 看下图就知道了 区别就在于,测试2后面多了个空格!! ...

  2. java调用新浪接口根据Ip查询所属地区

    import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import ...

  3. Linux基础学习整理

    linux学习记录 下载地址 centos 下载地址: 网易镜像:http://mirrors.163.com/centos/6/isos/ 搜狐镜像:http://mirrors.sohu.com/ ...

  4. sklearn使用技巧

    sklearn使用技巧 sklearn上面对自己api的解释已经做的淋漓尽致,但对于只需要短时间入手的同学来说,还是比较复杂的,下面将会列举sklearn的使用技巧. 预处理 主要在sklearn.p ...

  5. 机器学习-EM算法

    最大期望算法 EM算法的正式提出来自美国数学家Arthur Dempster.Nan Laird和Donald Rubin,其在1977年发表的研究对先前出现的作为特例的EM算法进行了总结并给出了标准 ...

  6. git commit规范化实践

    最近从svn转到git进行代码版本控制,今天了解了git commit规范化的一些知识后,写此文章记录下配置过程. 环境 编辑器使用的是vscode,项目框架是vue3.0 规范化工具 规范化git ...

  7. windows server 2008 R2中建立ftp站点

    在windows server 2008 R2中建立ftp站点,要遵循以下步骤: (1) 开启IIS中的ftp服务: (2) 在IIS中建立ftp站点. 具体过程如下: (1) 开启IIS中的ftp服 ...

  8. Hadoop 系列(二)—— 集群资源管理器 YARN

    一.hadoop yarn 简介 Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.0 引入的集群资源管理系统.用户可以将各种服务框架部 ...

  9. lvs+keepalived 高可用及负载均衡

    一.环境准备 VIP:10.18.43.30 dr1:10.18.43.10 dr2:10.18.43.20 web1:10.18.43.13 web2:10.18.43.14 结构图 (一).预处理 ...

  10. 前端笔记之微信小程序(二){{}}插值和MVVM模式&数据双向绑定&指令&API

    一.双花括号{{}}插值和MVVM模式 1.1 体会{{}}插值 index.wxml的标签不是html的那些标签,这里的view就是div. {{}}这样的插值写法,叫做mustache语法.mus ...