首页 > 其他分享 >1月14日总结

1月14日总结

时间:2024-01-15 22:11:37浏览次数:42  
标签:总结 Task HandleAsync IEventHandler event IEvent public 14

果用到动态代理,大家可能会有几种选择,排到前列的是Autofac+Castle、AspectCore和DoraInterception,
我将从我当时研究的经历,以及我遇到的场景,为大家展示下
聊一聊我为什么要费时费力的整合Microsoft.Extensions.DependencyInjection和Castle.Core
当时遇到的场景

直接上源码

public interface IEventHandler
{
Task HandleAsync(IEvent @event);

  bool CanHandle(IEvent @event);

}

public interface IEventHandler : IEventHandler
where T : class, IEvent
{
Task HandleAsync(T @event);

  bool IEventHandler.CanHandle(IEvent @event) => @event.GetType() == typeof(T);//语言特性:默认实现 2024-1-15 10:23:10

  Task<bool> IEventHandler.HandleAsync(IEvent @event) => CanHandle((T)@event) //语言特性:默认实现 2024-1-15 10:23:10
      ? HandleAsync((T)@event)
      : Task.FromResult(false);

}

public interface IEvent
{
public long Id { get; set; }
public DateTime OccurredOn { get; set; }
}

如上所示的接口定义了一个事件处理接口,其中HandleAsync方法是事件处理的入口,CanHandle方法用于判断事件是否可以处理,在程序解耦、异步、削峰填谷等场景中,如上的接口可以有很多的应用,也可以扩展到内存级别、RabbitMQ、Redis、Kafka、RocketMQ等中间件的适配的事件处理器,以提供更强大的性能和更丰富的应用场景。所以说这是一个比较通用的场景。
我们将为该处理器提供一个检查幂等的拦截器( Idempotent)
AspectCore

标签:总结,Task,HandleAsync,IEventHandler,event,IEvent,public,14
From: https://www.cnblogs.com/lmyy/p/17966499

相关文章

  • 微信小程序测试点,9大方面全方位总结
    微信小程序无需下载安装,用户在微信扫一扫或搜索即可使用,小程序版本类型可分为:开发版、体验版、正式版。开发版、体验版无需审核,只需要给微信号权限,经过扫小程序的二维码就能访问,正式版本需要经过微信审核才可使用。下面从9个方面,总结下微信小程序的测试点:1、功能:与Web和App......
  • MySQL常规(总结)
    1.exist和in的区别1.1select*fromA whereidin(selectidfromB)in 先查询子表,再查询主表,不管子查询是否有数据,但是in只执行一次,查出B表中的所有id字段并缓存起来,检查A表的id是否与B表中的id相等,直到遍历完A表所有记录,所以当子查询数据较大时不适合使用in,因为它会将子......
  • 14_Java基础-运算符3:逻辑运算符+位
    逻辑运算符&&(与)逻辑与运算,两个变量都为真,结果为true||(或)逻辑或运算,两个变量有一个为真,结果为true!(非)如果是真,则变为假,如果是假则变为真短路运算第一个数为错,后面不执行位运算符&(和)|(或)^(异或)~(取反)位运算,不要轻易用,容易出错,效率极高<<:左移:x2》》:右移:/2......
  • 题解「JOI 2014 Final」IOI 馒头
    传送门。题意有\(n\)个物品,\(m\)个背包。第\(i\)个物品的价值是\(P_i\),第\(j\)个背包可以装\(C_i\)个物品,但会消耗\(E_i\)的价值。背包不能重复买,问最多可以获得多少价值。分析首先一个简单的贪心,我们在购买背包后塞入物品,一定时从大往小塞,也就是说,我们可以先对......
  • 如何做好一个信息系统项目经理,一个项目经理的个人体会和经验总结(一)
    作为一个信息系统项目经理,最要紧的就是要明白什么是因地制宜、因势利导,只有最合适的,没有什么叫对的,什么叫错的;最忌讳的就是完美主义倾向,凡事都要寻找标准答案和最优答案,既耽误了项目进度,也迷茫了自己。以下是本人一些做信息系统项目的个人体会和经验总结,写出来供大家指点,在讨论过......
  • 聚类算法学习总结
    1.1聚类的定义聚类(Clustering)是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。也即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。1.2聚类和分类的区别......
  • 全视通2023年度总结大会 | 风雨不改凌云志,长空无崖任搏击
    时间记录坚实的脚步,岁月镌刻奋斗的历程,沉淀来路方可擘画长远。2023年,全视通在智慧医康养领域大放异彩,全视通人奋力争先,取得了显著的成就。1月13日,我们以“风雨不改凌云志,长空无崖任搏击”为主题,在珠海总部报告厅召开了2023年度工作总结大会。珠海总部的员工以及各地的驻外员工跨越......
  • 只要3步,教你搞定网工领导满意的年终总结
    你们好,我是老杨。2024年的总结你们都写完了吗?早的大厂都已经收了一波总结了,等着大年三十之前再搞个年终述职,这一年就算是齐活了。老生常谈,但每年又不得不谈的总结,咱们今天就聊聊这个。不管你是初入职场第一次接触,还是老油条浑水摸鱼,80%的人写年终总结的时候,都会下意识有这种感慨:“......
  • Redis 做缓存常见的几个问题总结
     1.数据一致性我们知道,Redis主要是用来做缓存使用,只要使用到缓存,无论是本地内存做缓存还是使用Redis做缓存,那么就会存在数据同步的问题。一般情况下,我们都是先读缓存数据,缓存数据有,则立即返回结果;如果没有数据,则从数据库读数据,并且把读到的数据同步到缓存里,提供下次读请......
  • 这个插件厉害了!助你一键生成网页、视频总结!
    大家好,我是Java陈序员。如今是信息时代,想必大家经常上网冲浪!互联网的信息纷乱繁杂,各种广告、标题党等,大大的影响了我们获取信息的效率!那么有没有一款工具可以帮助我们快速高效的总结网页信息呢?答案是有的,今天给大家介绍一个浏览器插件,基于AI实现总结网页、视频等资源信息。......