前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Auto.Core

Auto.Core

原创
作者头像
用户1546532
修改2023-07-13 17:59:31
1910
修改2023-07-13 17:59:31
举报
文章被收录于专栏:AutoCoreAutoCore

Auto.Core (基于AspectCore)

介绍

Auto.Core是基于 .Net Standard 2.1用于简化 ASP.NET Core开发,Auto.CoreAspectCore 的基础上进行功能开发,AspectCore 在性能上都比反射有2个数量级的优化,达到了和硬编码调用相同的数量级。

AspectCore 方法调用反射扩展

性能测试:(Reflection为.NET Core提供的反射调用,Reflector为AspectCore.Extension.Reflection调用,Native为硬编码调用

代码语言:txt
复制
 |             Method |        Mean |     Error |    StdDev |    StdErr |            Op/s |

 |------------------- |------------:|----------:|----------:|----------:|----------------:|

 |        Native\_Call |   1.0473 ns | 0.0064 ns | 0.0050 ns | 0.0015 ns |   954,874,046.8 |

 |    Reflection\_Call |  91.9543 ns | 0.3540 ns | 0.3311 ns | 0.0855 ns |    10,874,961.4 |

 |     Reflector\_Call |   7.1544 ns | 0.0628 ns | 0.0587 ns | 0.0152 ns |   139,774,408.3 |
快速开始
  1. 安装
  2. Package Manager
代码语言:C#
复制
Install-Package Auto.Core
代码语言:C#
复制
dotnet add package Auto.Core
  1. 配置 ServiceProviderFactory
代码语言:c#
复制
builder.Host.UseServiceProviderFactory(new AutoServiceProviderFactory());
  1. 注册AutoCore
代码语言:c#
复制
builder.Services.AddAutoCore(builder.Configuration);
  1. AutoOptions (选项)
代码语言:C#
复制
//appsettings.json

{

  "Redis": {

    "Host": "localhost",

    "Port": 6379,

    "Password": "zxc123..."

  }

}



//选项类:标记绑定

[AutoOptions(Node ="Redis")]

public class Redis

{

    public string Host { get; set; }

    public int Port { get; set; }

    public string Password { get; set; }

}



//构造函数注入

private readonly Redis \_redis;

public WeatherForecast(IOptionsSnapshot<Redis> options)

{

     \_redis = options.Value;

}
  1. AutoCache (缓存)
代码语言:c#
复制
//方法:标记缓存

[AutoCache]

public virtual async Task<IEnumerable<WeatherForecast>> Get(User user)

{

    var ss = Enumerable.Range(1, 5).Select(index => new WeatherForecast

    {

        Date = DateTime.Now.AddDays(index),

        TemperatureC = Random.Shared.Next(-20, 55),

        Summary = Summaries[Random.Shared.Next(Summaries.Length)]

    }).ToArray();



    return ss;

}
  1. AutoService(服务注册)
代码语言:c#
复制
//接口

public interface IUser

{

    void Get();

}



//实现:标记注册

[AutoService]

public class User : IUser

{

    public void Get()

    {

        Console.WriteLine(1);

    }

}



//构造函数注入

private readonly IUser \_user;

public WeatherForecastController(IUser user)

{

    \_user = user;

}
  1. 参数校验
代码语言:c#
复制
//参数校验:参数标记校验方法

public WeatherForecast([NotNull] string userName)

{

  string  un = userName;

}
AutoCache(缓存)
  1. redis缓存提供
代码语言:C#
复制
Install-Package Auto.Core.Redis
  1. 注册
代码语言:C#
复制
builder.Services.AddAutoRedis();
  1. appsettings.json
代码语言:json
复制
{

  "RedisOptions": {

    "Host": "127.0.0.1",

    "Port": 6379,

    "Database": 0

  }

}
AutoValidation(参数校验)
  1. 字符串最大长度 MaxLengthAttribute
  2. 字符串最小长度 MinLengthAttribute
  3. 字符串不能为空或Null NotNullOrEmptyAttribute
  4. 字符串不能为Null或空格 NotNullOrWhiteSpaceAttribute
  5. 对象不能为Null NotNullAttribute
  6. 范围 RangeAttribute
常见问题

功能无法正常使用

  1. 检查方法设置为 virtual
代码语言:C#
复制
[HttpPost(Name = "GetWeatherForecast")]

[AutoCache]

public virtual async Task<IEnumerable<WeatherForecast>> Get(User user)

{

    var ss = Enumerable.Range(1, 5).Select(index => new WeatherForecast

    {

                    Date = DateTime.Now.AddDays(index),

                    TemperatureC = Random.Shared.Next(-20, 55),

                    Summary = Summaries[Random.Shared.Next(Summaries.Length)]

        }).ToArray();



       return ss;

    }

}

注意:控制器中的方法需要注册为服务后才可以使用

代码语言:C#
复制
builder.Services.AddControllers().AddControllersAsServices();
  1. 检查是否注册AutoCore
代码语言:C#
复制
builder.Services.AddAutoCore(builder.Configuration);
  1. 检查是否配置ServiceProviderFactory
代码语言:C#
复制
builder.Host.UseServiceProviderFactory(new AutoServiceProviderFactory());

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Auto.Core (基于AspectCore)
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com