Asp.Net Core+Dapper开发直播平台!

现在直播大热,从游戏直播到直播带货,这几年都是最热门的了。教育直播、视频会议、云点播等各种基于直播构建的业务模式,让众多企业也都开始配备自己的直播平台。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 框架!

性能之王,Dapper

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

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

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

6

Dapper语法简单,快速入手。

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

Dapper Plus

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

事务和工作单元

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

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

SQL监控

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

纸上得来终觉浅,绝知此事要躬行,一篇文章没法介绍到项目的方方面面,这里为大家开设一波实战直播课,实操解读Asp.Net Core+Dapper直播平台,感兴趣的小伙伴儿请扫码领取免费入场券,今晚20:00不见不散!

该系列课程包含且不限于以下内容:

1  Dapper实战到扩展封装,包括上文中的例子

2  Asp.Net Core+Dapper+数据读写分离方案+数据库调优

3  介绍腾讯云服务器直播点播对接等

此外,本系列课程是基于VS2019+.NET Core3.1环境开发,这里有为大家准备好软件包,以及一套Asp.Net Core入门实战课程合集,还有项目中会用的MongoDB、Redis等学习教程,欢迎大家加助教小姐姐的二维码获取配套资料

安装包及全部学习资料

扫码自取

领取人数较多,添加以下号码也可免费领取哦!

微信号:zhaoxiPenny

国内首屈一指的.Net学习社区

你加入了吗?

完整配套的学习资料

最新最热的技术文章

核心知识点面试真题

社区内优质岗位直推

全部免费奉送给大家

赶快扫码加入社区吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Magicodes.IE 在100万数据量下导入导出性能测试

原文作者:HueiFeng前言目前Magicodes.IE更新到了2.2.3,感谢大家的支持,同时建议大家在使用过程中如果遇到一些问题或者说需要一些额外的功能可以直接提issues,当然更建议大家提PR。‍近期更新2020.05.24 【Nuget】版本更新到2.2.2…

[JavaWeb-HTML]HTML文本标签

文本标签&#xff1a;和文本有关的标签 * 注释&#xff1a;<!-- 注释内容 -->* <h1> to <h6>&#xff1a;标题标签* h1~h6:字体大小逐渐递减* <p>&#xff1a;段落标签* <br>&#xff1a;换行标签* <hr>&#xff1a;展示一条水平线* 属性&…

我的『MVP.Blazor』快速创建与部署

‍最近一直在录Blog.Core相关的操作视频&#xff0c;也没有研究过什么新的东西&#xff0c;公司也各种项目迭代&#xff0c;特别是从Fwk迁移到NetCore&#xff0c;真的是不是一个容易的事&#xff0c;闲的时候&#xff0c;为了歇歇脑子&#xff0c;就抽出时间简单看了看又有哪些…

.NET IDE Rider公布2020.2路线图

跨平台 .NET IDE Rider 近日公布了 2020.2 的路线图&#xff0c;介绍了目前正在开发的一些特性&#xff0c;并表示其中一些可能在接下来的版本中出现。主要包括&#xff1a;Windows 上的 .NET Core 后端&#xff1a;Rider 2020.1 已在 macOS 和 Linux 上的 .NET Core 上运行 Re…

字符串太占内存了,我想了各种奇思淫巧对它进行压缩

一&#xff1a;背景1. 讲故事在我们的一个全内存项目中&#xff0c;需要将一家大品牌店铺小千万的trade灌入到内存中&#xff0c;大家知道trade中一般会有订单来源,省市区 &#xff0c;当把这些字段灌进去后&#xff0c;你会发现他们特别侵蚀内存&#xff0c;因为都是字符串类型…

[JavaWeb-HTML]HTML标签_表格标签

表格标签&#xff1a; * table&#xff1a;定义表格* width&#xff1a;宽度* border&#xff1a;边框* cellpadding&#xff1a;定义内容和单元格的距离* cellspacing&#xff1a;定义单元格之间的距离。如果指定为0&#xff0c;则单元格的线会合为一条、* bgcolor&#xff1a…

玩转二叉树 (25 分) 知中序遍历和前序遍历,求做个镜面反转后的层序遍历

题目&#xff1a; 给定一棵二叉树的中序遍历和前序遍历&#xff0c;请你先将树做个镜面反转&#xff0c;再输出反转后的层序遍历的序列。所谓镜面反转&#xff0c;是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式&#xff1a; 输入第一行给…

使用dotnet Cli向nuget发布包

长话短说&#xff0c; 今天分享如何在nuget.org创建并发布.NET Standard package。前置安装勾选.NET Core开发套件的Visual Studio; 安装dotnet Cli从VS2017开始&#xff0c;dotnet Cli已经自动在.NET开发套件中被安装&#xff1b;使用SDK-style format&#xff08;SDK属性&…

STL中vector建立最大堆和最小堆

1.堆的概念&#xff1a; 堆是一种非线性结构&#xff0c;可以把堆看作一个数组&#xff0c;也可以被看作一个完全二叉树&#xff0c;通俗来讲堆其实就是利用完全二叉树的结构来维护的一维数组按照堆的特点可以把堆分为大顶堆和小顶堆 大顶堆&#xff1a;每个结点的值都大于或…

结合 AOP 轻松处理事件发布处理日志

结合 AOP 轻松处理事件发布处理日志Intro前段时间&#xff0c;实现了 EventBus 以及 EventQueue 基于 Event 的事件处理&#xff0c;但是没有做日志&#xff08;EventLog&#xff09;相关的部分&#xff0c;原本想增加两个接口&#xff0c; 处理事件发布日志和事件处理日志&…

基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(三)

系列文章使用 abp cli 搭建项目给项目瘦身&#xff0c;让它跑起来完善与美化&#xff0c;Swagger登场数据访问和代码优先自定义仓储之增删改查统一规范API&#xff0c;包装返回模型再说Swagger&#xff0c;分组、描述、小绿锁接入GitHub&#xff0c;用JWT保护你的API异常处理和…

完全卸载软件及电脑软件残留

当我在控制面板的卸载软件里没有发现我要删软件的软件时&#xff0c;只找到了软件的部分安装目录删除&#xff0c;就会发生残留问题&#xff0c;导致软件依旧可以运行。 经过这么多次后&#xff0c;我就找到了我自认为的最优解。首先运行这个软件&#xff1b;之后打开windows任…

真的是计划赶不上变化吗?

「做事容易半途而废&#xff0c;缺乏毅力」&#xff0c;我想100个人里面有99个是这样。更加好玩的是&#xff0c;这99个人里面可能还有不少会劝说别人要坚持……所以&#xff0c;其实我们每个人心里都清楚&#xff0c;一件事情不会“自动完成”&#xff0c;只有靠自己坚持做下去…

关于解决Path被大改,无法直接编辑恢复的问题

为了给eclipse改版&#xff0c;不用更改API&#xff0c;我动了环境变量&#xff0c;因为我的环境变量名称是path&#xff0c;所以当给tomcatTomCAT安装以及使用详细解释配置环境时&#xff0c;我直接新建的Path&#xff0c;把原来的path覆盖掉了&#xff0c;而且在注册表里无法…

Sql Server之旅——第十二站 对锁的初步认识

作为一个开发人员&#xff0c;锁机制也是我们程序员必须掌握的东西&#xff0c;很久之前在学习锁的时候&#xff0c;都是教科书上怎么说&#xff0c;然后我怎么背&#xff0c;缺少一个工具让我们眼见为实。。。如果这样的话&#xff0c;学习一个东西就很容易忘记。。。因为这些…

算法基础

目录枚举例题应用&#xff1a;模拟技巧递归$分治递归分治算法贪心常见题型与动态规划的区别例题&#xff1a;应用排序选择排序冒泡排序插入排序计数排序基数排序二分最大值最小化STL 的二分查找三分法最大化平均值&#xff08;01分数规划&#xff09;枚举 枚举&#xff08;英语…

ABP框架 v2.9发布!

ABP框架和ABP商业版2.9已经发布,这是3.0之前的最后一个版本! 这篇文章将涵盖本次发布中的新增内容.ABP框架2.9有哪些新增内容&#xff1f;你可以中GitHub的发行说明中看到所有的变更.这篇文章将只包括重要特征/变更.预编译Razor Pages在之前的版本, 预构建的页面(应用模块)和视…

最终选型 Blazor.Server:又快又稳!

书接上文&#xff0c;昨天我们快速的走了一遍wasm的开发流程&#xff08;我的『MVP.Blazor』快速创建与部署&#xff09;&#xff0c;总体来说还是很不错的&#xff0c;无论是从技术上&#xff0c;还是从开发上&#xff0c;重点是用C#来开启前端时代&#xff0c;可以开发SPA单页…

博客系统知多少:揭秘那些不为人知的学问(三)

点击上方关注“汪宇杰博客”上篇《博客系统知多少&#xff1a;揭秘那些不为人知的学问&#xff08;二&#xff09;》介绍了博客的基本功能设计要点&#xff0c;本篇介绍博客的协议或标准。1.“博客”的前世今生2.我的博客故事3.谁是博客的受众&#xff1f;4. 博客基本功能设计要…