`
阅读更多

 

SignalR 是一个面向 ASP.NET 开发人员的库,可简化将实时 web 功能添加到应用程序的过程。 实时 web 功能是让服务器代码将内容推送到连接的客户端立即可用,而不是让服务器等待客户端请求新数据的能力。

SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话通过永久连接进行,允许客户端向服务器发送多个消息,并允许服务器做出相应答复,值得注意的是,还允许服务器向客户端发送异步消息。是一个完全基于客户及服务器端解决方案,它是以JS作为客户端和ASP.NET作为服务端来创建这类的应用。

传统HTTP采用的是大家熟知的“拉模式”,即客户端发出的每次请求,服务端都是被动处理。此场景下客户端是老大,很显然只有一方主动,操作与处理起来就没那么完美。为了能让服务端也能主动,html5的出现让这种变得可能,大家知道html5中有两种主动模式。第一种叫做websockect,WebSockets是Html5提供的新的API,可以在Web网页与服务器端间建立Socket连接,它是基于tcp模式的双工通讯。还有一种叫做SSE,也就是客户端来订阅服务器的一种事件模型。在html5出来之前,如果要做到服务器主动,我们只能采用变相的longpool和iframe流勉强实现。这就相当于要实现服务端的主动就有了4种方案。SignalR的出现是我们每位开发者的福音。它对上面四种方案进行了高度的封装,也就是说signalR会在这四种技术中根据浏览器和服务器设置采取最优的一种模式。

Web消息交互技术

对于.NET开发者的福音,.NET平台为我们提供了一种简洁高效智能的实时信息交互技术->SignalR,它集成了上述数种技术,并能根据配置自动或手动选择其最佳应用。

服务器主动4种模式

 

  • SignalR可用于将任何类型的"实时"web 功能添加到 ASP.NET 应用程序。 比如最常用的即时消息、聊天。 只要用户刷新 web 页面以查看新数据或页面实现长轮询若要检索新数据,可以考虑对它使用 SignalR。 包括仪表板和监视应用程序,协作应用程序 (如同时进行编辑的文档),作业的进度更新到并实时窗体。

  • SignalR还可以用于需要高频率从服务器中更新的全新类型weB应用程序,例如在线聊天、实时游戏、天气、股票信息更新等实时应用程序。

  • SignalR 提供一个简单的 API,用于创建从服务器端.NET 代码中调用 JavaScript 函数在客户端浏览器 (和其他客户端平台) 的服务器到客户端的远程过程调用 (RPC)。 SignalR 还包括连接管理的 API (例如,连接和断开连接事件),并对连接进行分组。

SignalR通讯示例图

  • SignalR自动处理连接管理,并允许您同时将消息广播到所有连接的客户端,如聊天室。 还可以将消息发送到特定的客户端。 客户端和服务器之间的连接是持久性的。

  • SignalR与常用的Web浏览器上请求-响应模式不同,它支持"服务器推送"功能,可以调用远程过程调用 (RPC)。

  • SignalR应用程序可以横向扩展到数千个客户端使用服务总线、 SQL Server 或Redis。

最重要的是SignalR 是开放源代码,有兴趣的朋友可以研究SignalR

 

前面对SignalR已经有了一个非常全面而清晰的认识,对于SignalR 和 WebSocket关系,我们需要看下什么是WebSocket?

WebSocket是HTML5提供的一种在单个 TCP 连接上进行全双工通讯的协议,目前chrome、Firefox、Opera、Safari等主流版本均支持,Internet Explorer从10开始支持。另外因为WebSocket 提供浏览器一个原生的 socket实现,所以直接解決了 Comet 架构很容易出错的问题,而在整個架构的复杂度上也比传统的实现简单得多。

WebSocket本质上是一个基于TCP的持久化协议,相对于HTTP这种非持久的协议来说,它能够更好的节省服务器资源和带宽,并且真正实现实时通信。其优点在前面我们已经做了对比,最大的缺点就是对旧版本浏览器不支持。至此SignalR的出现,完美的解决了种浏览器的问题,SignalR不仅可以实现WebSocket的所有功能,还对旧版本浏览器做了支持。SignalR可自动或手动选择使用WebSocket传输还是其他替代方式传输,以实现实时Web技术。

SignalR简化了构建实时应用的过程,它包括了一个Asp .Net服务器端库和一个Js端库,集成了数种常见的消息传输方式,如long polling,WebSocket,并提供相应的Api供开发人员选择如何调用,帮助其可以简单快速地实现客户端与服务器端相互间的实时通信。

当环境条件合适时,SignalR将WebSocket作为底层传输方式的优先实现,当然,它也能很高效地回退到其他技术。同时,SignalR提供了非常良好的Api以供远程调用(RPC) 浏览器中的js代码。

当WebSockets可用时(即浏览器支持Html5)SignalR使用WebSockets,当浏览器不支持时WebSockets时,SignalR将使用其它技术来保证达到相同效果。
浏览器和客户端之间想要进行WebSocket通信的话,从一开始的握手阶段,就要从HTTP协议升级为WebSocket协议,这是服务器根据WebSocket发送的请求包决定的。

 


一路走来数个年头,感谢RDIFramework.NET框架的支持者与使用者,大家可以通过下面的地址了解详情。

RDIFramework.NET官方网站:http://www.rdiframework.net/

RDIFramework.NET官方博客:http://blog.rdiframework.net/

同时需要说明的,以后的所有技术文章以官方网站为准,欢迎大家收藏!

RDIFramework.NET框架由海南国思软件科技有限公司专业团队长期打造、一直在更新、一直在升级,请放心使用!

欢迎关注RDIFramework.net框架官方公众微信(微信号:guosisoft),及时了解最新动态。

扫描二维码立即关注

微信号:guosisoft

0
0
分享到:
评论

相关推荐

    JAVA002打飞机游戏设计(程序+论文).zip

    Java项目课程设计,包含源码+数据库+论文

    基于Java的视频会议系统(程序+论文).zip

    Java项目课程设计,包含源码+数据库+论文

    (源码)基于Raspberry Pi Pico的智能自主两轮机器人小车系统.zip

    # 基于Raspberry Pi Pico的智能自主两轮机器人小车系统 ## 项目简介 本项目围绕智能自主两轮机器人小车展开,借助Raspberry Pi Pico微控制器、多种传感器以及PID(比例 积分 微分)控制器,达成高效导航、障碍物规避和条形码识别等功能。目标是打造一款能在预设轨道行驶、巧妙避开障碍物并通过红外传感器识别条形码的机器人小车。 ## 项目的主要特性和功能 1. 基本运动控制借助电机传感器,实现小车在上下左右等多个方向的简单移动。 2. 速度精准调控运用PID控制器和编码器,对小车速度进行有效调节与控制。 3. 导航与路径规划可将迷宫转化为可打印地图,并依据生成的地图找出最短路径。 4. 障碍物检测利用超声波传感器测定与障碍物的最小和最大距离,进而避开障碍物。 5. 特殊信息识别通过红外传感器实现线路跟踪和条形码检测。 6. 方位获取借助磁传感器获取罗盘方位值。 7. 数据优化采用滤波技术提升传感器数据的准确性和精度。

    图书馆管理系统项目源码.zip

    Java项目web的课程设计,包含源码+数据库+论文

    基于springboot的医院后台管理系统的设计与实现(完整Java源码+数据库sql文件+项目文档+Java项目编程实战+编程练手好项目).zip

    信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的医院后台管理系统实现了病房管理、病例管理、处方管理、字典管理、公告信息管理、患者管理、药品管理、医生管理、预约医生管理、住院管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让医院后台管理系统更能从理念走到现实,确确实实的

    (源码)基于Go语言和Vue3的New Bing演示站点.zip

    # 基于Go语言和Vue3的New Bing演示站点 ## 项目简介 本项目是基于Go语言和Vue3开发的微软New Bing演示站点,能让用户拥有和New Bing一致的UI体验,支持ChatGPT提示词,在国内也能使用,基本兼容微软Bing AI的所有功能,用户无需登录即可进行畅聊。 ## 项目的主要特性和功能 1. 服务器选择灵活Bing官方聊天服务器不可用时,可通过ModHeader添加请求头或本地部署中转服务聊天服务器可在设置中切换,默认的Cloudflare Workers有请求数限制,推荐自行部署。 2. 国内可用部署服务器需直连www.bing.com不重定向CN,支持配置socks连接。 3. 支持提示词库支持现有开源ChatGPT提示词库。 4. 高级功能体验需要画图等高级功能时,登录微软账号设置用户Cookie即可体验。 5. 问题解决方式多样遇到问题可依次尝试点击左下角按钮、刷新页面、清理浏览器缓存及Cookie。

    (源码)基于React框架的水印插件系统.zip

    # 基于React框架的水印插件系统 ## 项目简介 这是一个基于React框架的水印插件系统,旨在提供一种方便、灵活的方式来为你的React应用添加水印功能。通过该插件,你可以轻松地为网页内容添加自定义的水印,包括主文本、副文本以及一系列可配置的水印样式。 ## 项目的主要特性和功能 1. 灵活的水印文本配置支持主文本和副文本,满足多种需求。 2. 丰富的水印样式选项提供多种样式配置,如颜色、旋转角度、字体大小、字体粗细、字体族等,以满足不同场景下的水印需求。 3. 易于集成通过npm安装后,可以方便地引入并使用水印组件。 4. 适配性强支持React的编译环境,确保在各种环境下都能正常工作。 ## 安装使用步骤 1. 安装插件 首先,通过npm安装该水印插件 bash npm install tntdreactwatermark save 2. 引入并使用插件

    (源码)基于React18和Vite框架的乐哥后台管理系统.zip

    # 基于React18和Vite框架的乐哥后台管理系统 ## 项目简介 本项目是一个基于React18和Vite框架的后台管理系统,主要使用了Ant Design组件库,同时配置了React路由和Vite插件进行样式按需加载。项目采用TypeScript语言进行开发,旨在提供一个简洁、高效且可扩展的后台管理系统解决方案。 ## 项目的主要特性和功能 React18支持项目使用了React 18版本,并使用了新的createRoot API替代了ReactDOM.render,确保项目能够充分利用React 18的新特性。 Vite框架使用Vite作为项目构建工具,提供了快速的开发环境和优化的构建流程。 Ant Design组件库项目中使用了Ant Design组件库,提供了丰富的UI组件和工具,如按钮、表格、布局等。 React路由配置了React路由,实现了页面之间的导航和路由管理。

    [其他类别]jsp+servlet+javaBean实现MVC_jspmvc.zip

    Java项目课程设计,包含源码+数据库+论文

    (源码)基于Python的机器学习实战项目.zip

    # 基于Python的机器学习实战项目 ## 项目简介 这是一个基于Python的机器学习实战项目,涵盖了多种机器学习算法的实现,包括KNN、决策树、朴素贝叶斯、逻辑回归、SVM、集成学习(如AdaBoost)以及线性回归和局部加权线性回归等。每个算法都有对应的Python代码实现,并提供了数据加载、模型训练和预测等基本功能。项目目标是让学习者通过实际代码练习,深入理解并掌握各种机器学习算法的原理和应用。 ## 项目的主要特性和功能 1. KNN(K最近邻)实现KNN分类算法,可用于分类任务,如文本分类、图像识别等。 2. 决策树实现基于ID3算法的决策树分类器,可用于处理分类问题。 3. 朴素贝叶斯实现朴素贝叶斯分类器,用于文本分类任务。 4. 逻辑回归实现逻辑回归模型,用于二分类问题。 5. SVM(支持向量机)实现SVM分类器,可用于多分类问题。 6. 集成学习实现AdaBoost算法,通过组合多个弱学习器创建一个强学习器。

    (源码)基于C++框架的语音转文本系统.zip

    # 基于C++框架的语音转文本系统 ## 项目简介 本项目是一个高性能的语音转文本系统,基于OpenAI的Whisper自动语音识别(ASR)模型实现。项目采用纯CC++实现,无外部依赖,支持多种平台,包括Mac OS、iOS、Android、Linux、Windows等。系统能够在CPU上运行,具有低内存使用和高性能的特点。 ## 项目的主要特性和功能 1. 高性能推理基于OpenAI的Whisper模型,支持多种平台,包括Mac OS、iOS、Android、Linux、Windows等。 2. 无依赖实现纯CC++实现,无外部依赖,支持Apple Silicon的优化(Arm Neon和Accelerate框架)。 3. 低内存使用采用Flash Attention和Flash Forward技术,减少内存占用。

    基于多视角可视化的Android恶意软件检测技术LensDroid研究与实现

    内容概要:本文介绍了一种名为LensDroid的新颖技术,它利用深度学习(DL)和软件可视化相结合的方法来检测Android恶意软件。LensDroid通过从三个互补视角——行为敏感度、操作环境和支持环境——对应用程序进行可视化,从而自动捕捉并聚合不直接关联的高级特征,揭示隐藏的恶意行为。具体而言,LensDroid采用抽象API调用图、指令序列矩阵以及二进制转换图像三种方式分别表示这三个视角,并设计了一个融合模型将不同视角提取到的特征向量逐步从局部到全局地融合起来。实验结果显示,在超过51K个真实世界应用的数据集上,LensDroid的表现优于五种基线方法,特别是在应对零日攻击方面表现尤为突出。 适合人群:安全研究人员、移动应用开发者、网络安全专家。 使用场景及目标:适用于需要高效准确识别新型和已知Android恶意程序的安全评估工具或平台;旨在提高现有恶意软件检测系统的性能,特别是对于复杂多变的现代恶意软件。 其他说明:文中还讨论了LensDroid的设计细节和技术挑战,如视图选择、特征提取参数调整等,并对未来改进方向进行了展望。此外,作者们强调了跨学科合作的重要性,指出可以通过引

    河北村界(村级行政界线)矢量数据

    村级行政界线数据 数据格式:矢量格式(.shp) 时间范围:每个省份年份不同,基本为2020年到2022年 数据坐标:CGCS2000/WGS1984 备注:由于村级行政界线小部分每年会有调整,所以该数据有部分地区不是最新界线。

    ESP32-BOM-土壤湿度套件物料清单(2025026)V1.1.rar

    ESP32_BOM_土壤湿度套件物料清单(2025026)V1.1.rar

    JAVA音像店租赁管理系统的设计与实现(源代码+论文).zip

    Java项目课程设计,包含源码+数据库+论文

    2025年陕西省(公交路线及站点shp矢量数据,WGS1984).zip

    2025年陕西省(公交路线及站点shp矢量数据,WGS1984).zip

    2025年海南省(公交路线及站点shp矢量数据,WGS1984).zip

    2025年海南省(公交路线及站点shp矢量数据,WGS1984).zip

    simulink-introduction-compressed.pdf 牛津大学课件

    simulink_introduction-compressed.pdf 牛津大学课件

    (源码)基于M5Stack的环境数据记录与云上传系统.zip

    # 基于M5Stack的环境数据记录与云上传系统 ## 项目简介 本项目是一个基于M5Stack平台的环境数据记录与云上传系统,主要用于采集环境数据(如温湿度等),并将这些数据通过WiFi上传至云端(如Slack)。项目结合了M5Stack硬件平台、AdafruitSensor库、DHT12传感器以及Slack的Webhook功能,实现了环境数据的实时监控与远程通知。 ## 主要特性和功能 1. 环境数据记录使用ENVLOG模块记录环境数据,支持温湿度等传感器数据的采集。 2. WiFi连接与NTP同步通过WiFi连接到网络,并自动同步NTP服务器时间。 3. 数据上传至Slack通过Slack的Webhook功能,将采集到的环境数据实时上传至Slack频道。 4. SD卡配置通过SD卡中的配置文件(如wifi.csv和slackhook.txt)进行WiFi和Slack Webhook的配置。 ## 安装使用步骤

    MySQL数据库项目入门与实战基础教程

    在当今数字化时代,数据存储与管理是软件开发中不可或缺的一部分。MySQL作为一款流行的开源关系型数据库管理系统,以其高性能、可靠性和易用性被广泛应用于各种项目中。本教程将带你从零开始,逐步掌握如何构建一个基于MySQL的数据库项目,无论是用于个人学习还是商业应用,都能为你提供坚实的基础。

Global site tag (gtag.js) - Google Analytics