Signalr是以Group.Connect为核心来进行推送,比如,给某个组.某个连接来推送,但实际场景中,核心应该是某个组.某个人:然而一个人可以对应多个连接(浏览器多个tab页):本节就来介绍下自行管理人.组.连接这些关系 由于signalr连接的时候不那么方便附带header和cookie(因为推送独立成一个子系统了),实际实现中采用以url query的形式附带上token,然后服务器端自定义解析token得到用户信息: ## 服务器端实现 - ConfigureServices中添加服…
JWT(json web token)是一种基于json的身份验证机制,流程如下: 通过登录,来获取Token,再在之后每次请求的Header中追加Authorization为Token的凭据,服务端验证通过即可能获取想要访问的资源.关于JWT的技术,可参考网络上文章,这里不作详细说明, 这篇博文,主要说明在asp.net core 2.0中,基于jwt的web api的权限设置,即在asp.net core中怎么用JWT,再次就是不同用户或角色因为权限问题,即使援用Token,也不能访问不该访…
## 介绍 ASP.NET Core SignalR 是一个开源代码库,它简化了向应用添加实时 Web 功能的过程. 实时 Web 功能使服务器端代码能够即时将内容推送到客户端. SignalR 的适用对象: - 需要来自服务器的高频率更新的应用. 例如:游戏.社交网络.投票.拍卖.地图和 GPS 应用. - 仪表板和监视应用. 示例包括公司仪表板.销售状态即时更新或行程警示. - 协作应用. 协作应用的示例包括白板应用和团队会议软件. - 需要通知的应用. 社交网络.电子邮件.聊天.游戏.行程…
在实际的系统中,可能需要多台机器部署;然而,Signalr的连接信息是跟站点走的,举个例子 推送系统部署了A.B两个服务器,张三访问A服务器,李四访问B服务器,当张三通过A服务器向李四推送的时候,A服务器上是找不到李四的连接信息的,自然也就推送不过了,这个时候就需要有一个统一协调的玩意,signalr支持多种,Azure.Redis等,本节以Redis作为底板,介绍如何在Signalr中使用Redis作为底板来支持横向扩展. ## 引入Redis - 先引入NuGet包 Microsoft.As…
## 业务需求 1. 人-项目关系 一个人可以属于多个项目,一个项目可以有多个人加入,通知的时候,可以通知项目内的所有人,也可以通知部分人或者某个责任人. 2. 登录互斥 同一个人不允许登录两次(不同浏览器或者不同电脑登),后面登录的会将前面登录的人挤下线. 3. 聊天 可以私聊.也可以创建群聊.上线通知(多个连接的情况) 4. 文件下载 用户在界面上选择了多个文件,然后选择批量打包下载,后端后台线程进行压缩.压缩完成后通过signalr通知该用户(的某个连接,比如当前用户开了多个tab页,应该…
墙裂推荐了,免费,通俗易懂,唯一可惜的就是不是我录的,更可惜的是人家录制完了快半年了我还没看完... 版权归原作者所有,建议新手还是边看边实践吧,要不然过完一遍发现自己啥也没学会,不要眼高手低 [视频教程]ASP.NET Core 3.0 入门 - 18. 部署(完结) [视频教程]ASP.NET Core 3.0 入门 - 17. gRPC [视频教程]ASP.NET Core 3.0 入门 - 16. gRPC - Protocol Buffer [视频教程]ASP.NET Core 3.0…
由于signalr作为一个单独的推送系统,跟业务系统是分离开的,所以此处模拟一个业务系统,新建一个.net core app项目 ## 模拟实现一个登录功能 我们的登录很简单,当进入系统,如果检测到用户未登录则跳转到登录页面,用户只需要输入用户名点击登录即算登录成功 - 配置ConfigServices方法 [查看代码](https://github.com/xiexingen/CTS.Signalr/blob/master/CTS.Signalr.Client/Startup.cs#L41-L…
## 个人心得 写博客真的比写代码累,膜拜那些坚持写博客的大佬! 有时候零散的片段比较多,没写之前感觉有千千万万要写的东西,实际写的时候发现, 好像这个没啥说的,然后就帖了个图,或者一笔带过了 ## 待改进&交流 - 使用消息队列替换目前的api调用形式,同时消息队列支持定义推送优先级 - 使用polly来重试失败的调用 - 将连接中传递的userId改成token - 多个客户端同时关闭,IsLast不准确 - 服务器端需要有定时任务去清除redis中的无效数据(看造化) 更多内容请通过快速导…
# 一.前言 上次讲SignalR还是在<[在ASP.NET Core下使用SignalR技术](http://dotnet.ren/2017/02/21/%E5%9C%A8ASP-NET-Core%E4%B8%8B%E4%BD%BF%E7%94%A8SignalR%E6%8A%80%E6%9C%AF/)>文章中提到,ASP.NET Core 1.x.x 版本发布中并没有包含SignalR技术和开发计划中.时间过得很快,MS已经发布了.NET Core 2.0 Preview 2 预览版,距离…
一.前言 上次讲SignalR还是在<在ASP.NET Core下使用SignalR技术>文章中提到,ASP.NET Core 1.x.x 版本发布中并没有包含SignalR技术和开发计划中.时间过得很快,MS已经发布了.NET Core 2.0 Preview 2 预览版,距离正式版已经不远了,上文中也提到过在ASP.NET Core 2.0中的SignalR将做为重要的组件与MVC等框架一起发布.它的开发团队也兑现了承诺,使用TypeScript对它的javascript客户端进行重写,服…
在博客园也很多年了,一直未曾分享过什么东西,也没有写过博客,但自己也是汲取着博客园的知识成长的: 这两天想着不能这么无私,最近.NET CORE貌似挺流行的,闲来无事也自己搞了个asp.net core signalr 博客园里面也有人在.net core 2.0下面集成了signalr,但是是集成在同一个项目里面的,但是大家都知道我们很多的项目都是分离的: 而且signalr涉及到连接数和内存资源的占用问题,如果都集成在一个项目里面当访问量多大的时候容易造成网站访问缓慢,具体原因就不多说了 所…
asp.net core 2.0 webapi集成signalr   在博客园也很多年了,一直未曾分享过什么东西,也没有写过博客,但自己也是汲取着博客园的知识成长的: 这两天想着不能这么无私,最近.NET CORE貌似挺流行的,闲来无事也自己搞了个asp.net core signalr 博客园里面也有人在.net core 2.0下面集成了signalr,但是是集成在同一个项目里面的,但是大家都知道我们很多的项目都是分离的: 而且signalr涉及到连接数和内存资源的占用问题,如果都集成在一个…
本文内容为转载,重新排版以供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - Chapter 43 WebHooks and SignalR ----------------------------------------------------------------------- What’s In This Chapter? Overview of SignalR Creating a SignalR hu…
经历了很久,.net core 2.0 终于发布了! 之前一直用的core 1.1,升级了2.0后发现认证的机制(Auth)发生了比较大的变化,在1.1中认证配置是在Configure中完成,而在2.0中,认证配置则是在ConfigureServices中完成,刚好对调了一下. 话不多说,直接看代码 1.ConfigureServices中的认证配置 var audienceConfig = Configuration.GetSection("Audience"); var symme…
并发编程概述   前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工作内容的变化,一些问题,它的解决方案已经让我避不开并发编程这一块知识点了.为了一劳永逸,此系列与并发编程有关的系列文章诞生,希望对各有有所帮助.   基础术语 同步(synchronization):关于协调线程或进程之间的活动,并确保被多个线程或进程访问的数据一直有效,同步允许线程和进程一致地操作…
因为将signalr作为单独的站点,此处需要建立两个项目,一个专门用于signalr作为推送项目,一个客户端(实际的业务项目) ## 基础知识速览 ### Clients对象属性 | 属性 | 描述 | :--- | :--- | All | 在所有连接的客户端上调用方法 | Caller | 在调用集线器方法的客户端上调用方法 | Others | 除当前连接外的所有连接 ### Clients对象方法 | 方法 | 描述 | :--- | :--- | AllExcept | 在所有连接的客…
## 强类型的优缺点 - 优点 强类型的Hub可以避免魔法函数名,相比弱类型更容易维护和发现问题,直接上代码 - 缺点 特么的得多些好几行代码 ## 代码 ### 接口定义 ``` C# /// /// 服务端接口 /// public interface IServerNotifyHub { } /// /// 客户端使用的接口 /// public interface IClientNotifyHub { // 这里我们定义一个统一的客户端通知方法 Task OnNotify(object…
## MessagePack基础介绍 Signalr默认使用的是json形式传递数据,但是signalr提供了灵活的扩展,支持MessagePack形式序列化数据,以增加性能降低网络传输的效果,极大的提高响应速度. 先看一个MessagePack自定义序列化的例子,以一个自定义的实体对象为例,可以使用MessagepackObject标记为序列化的对象,同时定义使用属性名作为key(区分大小写),同时可以定义忽略某个属性等.以及自定义key等 ``` C# [MessagePackObject(…
Hub的管理 重写OnConnectedAsync 从连接信息中获取UserId.Groups,ConnectId,并实现这三者的关系,存放于redis中 代码请查看 using CTS.Signalr.Server.Cores; using CTS.Signalr.Server.Dtos; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.SignalR; using Microsoft.Extension…
目录 说明 一.定义角色.API.用户 二.添加自定义事件 三.注入授权服务和中间件 三.如何设置API的授权 四.添加登录颁发 Token 五.部分说明 六.验证 说明 ASP.NET Core 3.0 一个 jwt 的轻量角色/用户.单个API控制的授权认证库 最近得空,重新做一个角色授权库,而之前做了一个角色授权库,是利用微软的默认接口做的,查阅了很多文档,因为理解不够,所以最终做出了有问题. 之前的旧版本 https://github.com/whuanle/CZGL.Auth/tree…
简介 本教程采用WHY-WHAT-HOW黄金圈思维模式编写,黄金圈法则强调的是从WHY为什么学,到WHAT学到什么,再到HOW如何学.从模糊到清晰的学习模式.大家的时间都很宝贵,我们做事前先想清楚为什么要做,学完能达到什么样的目标,然后我们再考虑要达到这个目的,通过什么样的方法来实现. 尝试一些事,遭遇失败后从中学习,比什么事都不做更好.-马克.佐克伯 为什么要学? 对于开发人员来说,调试API接口和生成API文档是一件极其头疼的事情.我们在百忙之中,还不得不为前端开发人员编写接口文档,来描述系…
由于一些 JS 组件要求 JSON 格式是 PascalCase 格式,新版本 ASP.NET Core 3.0 中默认移除了 Newtonsoft.Json ,使用了微软自己实现的 System.Text.Json 来代替,可以修改继续使用 Newtonsoft.Json 来设置 PascalCase 格式属性名. Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson //返回 PascalCase 问题 //services.AddM…
序言 本文将分别介绍 Authentication(认证) 和 Authorization(授权). 并以简单的例子在 ASP.NET Core 6.0 的 WebAPI 中分别实现这两个功能. 相关名词 Authentication 和 Authorization 长得很像,傻傻分不清楚. Authentication(认证):标识用户的身份,一般发生在登录的时候. Authorization(授权):授予用户权限,指定用户能访问哪些资源:授权的前提是知道这个用户是谁,所以授权必须在认证之后.…
期待已久的.NET Core 3.0即将发布! .NET Core 3.0在.NET Conf上发布.大约还有9个多小时后,.NET Conf开始启动. 为期3天的大概日程安排如下: 第1天-9月23日 9:00-10:00 Microsoft Studios播出的主题演讲10:00-17:00从Microsoft Studios广播的会话17:00-18:00虚拟与会者聚会!与我们的合作伙伴在Twitter上互动并赢取奖品. 第2天-9月24日 9:00-17:00从Microsoft Stu…
[转].NET Core前后端分离快速开发框架(Core.3.0+AntdVue) 目录 引言 简介 环境搭建 开发环境要求 基础数据库构建 数据库设计规范 运行 使用教程 全局配置 快速开发 管理员登录 系统用户管理 系统角色管理 权限管理 接口秘钥管理 系统日志 单库事务 跨库事务 读写分离分库分表 常见疑问 如何进行联表查询 如何切换数据库类型 如何使用多个数据库 引言 时间真快,转眼今年又要过去了.回想今年,依次开源发布了Colder.Fx.Net.AdminLTE(254Star).C…
还没正式登场就死了?不能怪我标题党,是大神Scott在他博客上这么说的,我只是翻译了一下. 在1月20号最新的ASP.NET Community Standup视频中,微软aspnet开发组的大帅哥 大面·爱德华兹(Damian Edwards)聊了聊在未来版本RC2将要进行的重命名工作. 然而由于我听力太渣,只能听个大概,好在Scott Hanselman在博客中发表了一篇文章把这个事情解释了一下. 我粗暴翻译了一下,给大家看看,难免有错,还望指正. 博客英文原文地址:ASP.NET 5 is…
ASP.NET Core 1.0中的管道-中间件模式 SP.NET Core 1.0借鉴了Katana项目的管道设计(Pipeline).日志记录.用户认证.MVC等模块都以中间件(Middleware)的方式注册在管道中.显而易见这样的设计非常松耦合并且非常灵活,你可以自己定义任意功能的Middleware注册在管道中.这一设计非常适用于“请求-响应”这样的场景——消息从管道头流入最后反向流出. 在本文中暂且为这种模式起名叫做“管道-中间件(Pipeline-Middleware)”模式吧.…
前言 目前 EF Core 的最新版本为 2.0.0-priview1-final,所以本篇文章主要是针对此版本的一些说明. 注意:如果你要在Visual Studio 中使用 .NET Core 2.0 , 你需要至少 Visual Studio 2017 15.3 预览版本. 安装或升级到 EF Core 2.0 你可以通过以下命令来安装或者升级你目前的 .NET Core 版本. // 安装 PM> install-package Microsoft.EntityFrameworkCore…
一.前言  最近一两个星期,加班,然后回去后弄自己的博客,把自己的电脑从 Windows 10 改到 Ubuntu 18.10 又弄回 Windows 10,原本计划的学习 Vue 中生命周期的相关知识目前也没有任何的进展,嗯,罪过罪过.看了眼时间,11月也快要结束了,准备补上一篇如何将我们的 .NET Core 2.0 版本的程序升级到 .NET Core 2.1 版本,好歹也算多学了一点.  在上一篇的博客中(ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路)…
  .NET Core 3.0 Preview 3已经推出,它包含了一系列关于ASP.NET Core的新的更新. 下面是该预览版的更新列表: Razor组件改进: 单项目模板 新的Razer扩展 Endpoint路由集成 预呈现 Razor类库中的Razor组件 改进事件处理 Forms & validation 运行时编译 Worker服务模板 gRPC模板 Angular模板已更新为Angular 7 SPA认证 SignalR与Endpoint路由集成 SignalR Java客户端支持…