7天重构一个直播平台,可直播带货可游戏直播可视频会议!

现在直播大热,从游戏直播到直播带货,这几年都是最热门的了。教育直播、视频会议、云点播等各种基于直播构建的业务模式,让众多企业也都开始配备自己的直播平台。14 年在公司带队做了个游戏直播平台,疫情期间在家重构了下项目,以 Asp.Net Core+Dapper+腾讯云构建了个可用的直播平台,这里给大家分享下。

毋庸置疑,Asp.Net Core

 

去年 12 月 3 号发布的.NET Core3.1 拥有着超高人气,有太多理由推动我们去选择它,理由如下:

1
高性能,前几天 TechEmpower 第 19 轮编程语言框架性能排行榜已经是主流 Web 框架第一。
2
.Net Core 无所不能,尤其是今年 11 月份要发布的.NET5 会直接打通 7 大方向。
3
.NET Core 开源跨平台,batter late than never,积极看好。
4
部署灵活,对云原生,容器化支持很好,是现代化敏捷开发首选!

 

这里还附一个 Stackoverflow 2020 年度开发者调查结果,ASP.NET Core 登顶最受喜爱的 Web 框架!

7 天重构一个直播平台,可直播带货可游戏直播可视频会议!

性能之王,Dapper

 

这次重构选择了 Dapper,站在 O/RM 鄙视链顶端的框架。

7 天重构一个直播平台,可直播带货可游戏直播可视频会议!
O/RM 鄙视链:使用 EntityFramework 的看不起 NHibernate 的笨拙,使用 EF Core 的鄙视 EF 未跨平台,使用 SqlSugar 的鄙视 EF Core 的重量级,使用 Dapper 的鄙视 SqlSugar 的流行度。

 

Dapper 是一款轻量级 O/RM 框架,在速度方面拥有微型 ORM 之王的称号。本次重构选择 Dapper 是因为其具备以下特点:

 

1

Dapper 是一个轻量级 ORM 类,代码就是一个 SQLMapper.cs 文件,编译后才 40k 的 dll。

2

Dapper 快,其速度接近 IDataReader,取列表的数据超过 DataTable

3

Dapper 支持 Mysql,sqlLite,SQLServer,Oracle 等一系列数据库。

4

Dapper 支持一对多,多对多,并且没侵入性,想用就用。

5

Dapper 是通过 Emit 反射 IDateReader 的队列,来快速得到和产生对象。

6

Dapper 语法简单,快速入手。

 

7 天重构一个直播平台,可直播带货可游戏直播可视频会议!

上图是性能对比,除了原生的 DataReader,Dapper 就是性能之王!Dapper 的基础使用很简单,这里给大家罗列几个项目中使用频繁的进阶功能案例。

Dapper Plus

 

其实就是批量操作优化,基于 SqlBulk 实现,需要 SqlServer2008+,包括 Bulk Insert,Bulk Update,Bulk Delete,Bulk Merge。

 

7 天重构一个直播平台,可直播带货可游戏直播可视频会议!

 

事务和工作单元

 

Dapper 的事务使用本身不难,就是常规开启事务-提交事务-回退事务,不过写起来就不那么优雅了。在项目中封装了一个 UnitOfWork 的工作单元,AOP 模式工作的。类似这样标记下,就能轻松自动实现事务了。

 

7 天重构一个直播平台,可直播带货可游戏直播可视频会议!

其封装是基于 Autofac 容器和 其 DynamicProxy 来实现的,核心代码如下

7 天重构一个直播平台,可直播带货可游戏直播可视频会议!

SQL 监控

 

Dapper 的 SQL 监控也是基于 MiniProfiler 做的,只需要导入 MiniProfiler.AspNetCore,扩展到 ActionFilter 即可。

 

7 天重构一个直播平台,可直播带货可游戏直播可视频会议!

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...