现在直播大热,从游戏直播到直播带货,这几年都是最热门的了。教育直播、视频会议、云点播等各种基于直播构建的业务模式,让众多企业也都开始配备自己的直播平台。14 年在公司带队做了个游戏直播平台,疫情期间在家重构了下项目,以 Asp.Net Core+Dapper+腾讯云构建了个可用的直播平台,这里给大家分享下。
去年 12 月 3 号发布的.NET Core3.1 拥有着超高人气,有太多理由推动我们去选择它,理由如下:
这里还附一个 Stackoverflow 2020 年度开发者调查结果,ASP.NET Core 登顶最受喜爱的 Web 框架!
这次重构选择了 Dapper,站在 O/RM 鄙视链顶端的框架。
Dapper 是一款轻量级 O/RM 框架,在速度方面拥有微型 ORM 之王的称号。本次重构选择 Dapper 是因为其具备以下特点:
Dapper 是一个轻量级 ORM 类,代码就是一个 SQLMapper.cs 文件,编译后才 40k 的 dll。
Dapper 快,其速度接近 IDataReader,取列表的数据超过 DataTable
Dapper 支持 Mysql,sqlLite,SQLServer,Oracle 等一系列数据库。
Dapper 支持一对多,多对多,并且没侵入性,想用就用。
Dapper 是通过 Emit 反射 IDateReader 的队列,来快速得到和产生对象。
Dapper 语法简单,快速入手。
上图是性能对比,除了原生的 DataReader,Dapper 就是性能之王!Dapper 的基础使用很简单,这里给大家罗列几个项目中使用频繁的进阶功能案例。
其实就是批量操作优化,基于 SqlBulk 实现,需要 SqlServer2008+,包括 Bulk Insert,Bulk Update,Bulk Delete,Bulk Merge。
Dapper 的事务使用本身不难,就是常规开启事务-提交事务-回退事务,不过写起来就不那么优雅了。在项目中封装了一个 UnitOfWork 的工作单元,AOP 模式工作的。类似这样标记下,就能轻松自动实现事务了。
其封装是基于 Autofac 容器和 其 DynamicProxy 来实现的,核心代码如下
Dapper 的 SQL 监控也是基于 MiniProfiler 做的,只需要导入 MiniProfiler.AspNetCore,扩展到 ActionFilter 即可。