Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 537|回复: 0

C# web通信解决方案

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-6-26 13:05:19 | 显示全部楼层 |阅读模式

    1.Socket 

    2.Socket and websocket(HTML5)

    3.SignalR

    一,简介

    Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架。它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重新发送请求或使用轮询技术来获取消息。

    可访问其官方网站:https://github.com/SignalR/ 获取更多资讯。

     

    二,实现机制

    SignalR 的实现机制与 .NET WCF 或 Remoting 是相似的,都是使用远程代理来实现。在具体使用上,有两种不同目的的接口:PersistentConnection 和 Hubs,其中 PersistentConnection 是实现了长时间的 Javascript 轮询(类似于 Comet),Hub 是用来解决实时信息交换问题,它是利用 Javascript 动态载入执行方法实现的。SignalR 将整个连接,信息交换过程封装得非常漂亮,客户端与服务器端全部使用 JSON 来交换数据。

     

    ASP.NET signalr对ASP.NET开发者来说是一个新的程序库,它能让我们更加容易便捷地开发实时通信功能;

    signalr允许客户端和服务器之间双向通信。服务器可以将内容推送到已连接的客户端。

    signalr支持Web Sockets,遇到其他兼容旧的浏览器signalr会用其他技术支持"双向通信"(不要较真)。

    signalr包括这些API:连接管理(例如,连接和断开连接的事件)、对连接分组、和访问功能授权。

     

    signalr可以用来添加任何形式的“实时通信”功能到您的ASP.NET应用程序。聊天是经常被用来作为一个应用例子,当然你可以做更多的事情。

    用户常常通过刷新网页来查看新数据,或者页面支持长轮询来检索新的数据,使用signalr机制中支持这个方式,但它更智能更强大友好。

    SignalR同时支持新类型的网络应用情况:需要高频度从服务端更新的情况(如实时游戏、看看这个ShootR game.)

    SignalR提供了更加便捷简单的API,

     

    signalr会自动地使用websocket通信(只要条件允许),条件不满足的时候也会自动使用其他旧的传输方式。当然你可以直接让你的程序直接使用WebSocket.

    使用signalr意味着原先你需要自己花精力做的工作不需要再自己做了,因为它已经为你做了。最重要的是,它会持续更新跟进WebSocket技术,所以你不用担心

    协议变化这类事情.

      signalr是对客户端和服务器之间通信方式的一个抽象。一个signalr启动时使用HTTP连接,然后当环境允许就会直接提升到WebSocket连接。
    WebSocket是SignalR的理想通信方式,因为WebSocket使服务器的内存得到最有效的利用,同时WebSocket具有最低的延迟,并拥有最底层特征(如客户端和服务器之间的全双工通信),但WebSocket也有最严格的要求:WebSocket需要服务器使用Windows Server 2012或Windows 8,和.NET框架4.5。如果不能满足这些要求,signalr将尝试使用其他通讯方式进行连接。

     

    下面的列表展示了SignalR决定使用具体哪种通信方式

    1. 如果浏览器<=Internet Explorer 8,用长轮询的方式
    2. 如果配置中指定了使用jsonp,则会使用长轮询的方式
    3. 如何需要创建跨域连接,将会如使用WebSocket,如果一下条件满足的话(否则用长轮询)
      1. 客户端支持WebSocket
      2. 服务端支持WebSocket
      3. 客户端支持Cross-Origin Resource Sharing,这个大家自己百度

     

    建立一个通讯方式需要一定的时间和客户机/服务器资源。如果客户机的功能是已知的,那么通信方式在客户端连接开始的时候就可以指定。下面的代码片段演示了使用AJAX长轮询方式来启动一个连接,将如果我们知道该客户端不支持其他的协议的话:

    connection.start({ transport: 'longPolling' });

    你可以指定一个替补方式,如果你想让客户端按照顺序尝试通讯方式的话.下面的代码片段展示了尝试使用WebSocket,如果失败直接使用长轮询。

    connection.start({ transport: ['webSockets','longPolling'] });

    指定将字符串常量定义如下:

    • webSockets

    • foreverFrame

    • serverSentEvents

    • longPolling

    SignalR API包括两种模型(用于客户端和服务端的通信):持久连接模型(Persistent Connections)和集线器(Hubs)模型

      一个连接代表一个简单的终结点(相当于单个收件人、被分组的、广播消息 而言)

    持久连接API(在.NET代码中以PersistentConnection呈现),它使得开发人员便捷使用SignalR暴露的底层通讯协议

    连接通信模型,对习惯于使用类似WCF的同学们比较熟悉.

      集线器模型是一个建立于连接API的高级管道.SignalR处理夸机器便捷的调度问题易如反掌,它使得客户端调用服务端的方法简单得犹如调用本地方法一样.反之亦然.

    使用Hubs模型,或许对那些使用过.net remoting的人来讲就很容易理解了.使用Hub还可以让你对强类型参数方法、model绑定成为易事.

     

     SignalR服务端组件可以被部署在一下的服务端和客户端操作系统中.注意使用WebSockets时,SignalR需要Windows Server 2012 或者Windows 8,

    (WebSocket能够在Windows Azure Web Sites上使用,只要站点的.NET framework 版本达到4.5,且WebSocket能在站点的配置页面使用)

    • Windows Server 2012
    • Windows Server 2008 r2
    • Windows 8
    • Windows 7
    • Windows Azure

     当SignalR部署在IIS中,需要下面的版本支持。注意如果使用在我们自己的操作系统上,如开发所用的环境(Windows 8 or Windows 7),所有版本的IIS和Cassini不应该被使用,因为这里有一个10同时并发的限制,因为连接是短暂、频繁重新建立的、且不会立即被dispose,所以很快就会达到限制。IIS Express可以被使用在一般的操作系统上。

      同时注意SignalR使用WebSocket时,IIS 8 或者 IIS 8 Express是你需要的,服务器必须用Windows 8, Windows Server 2012, 或者更高,同时WebSocket必须在IIS中可用。你可以去之类看看如何开启IIS的WebSocket功能:IIS 8.0 WebSocket Protocol Support

    • IIS 8 或者IIS 8 Express.
    • IIS 7 和 7.5. 需要支持 extensionless URLs .
    • IIS 必须跑在集成模式下; 经典模式是不行的.
    • 我们的系统程序必须跑在完全信任的模式下.

     SignalR能够在很多客户端平台下运行,本节描述了客户端浏览器、桌面应用程序、Silverlight应用程序及手机设备在使用SignalR的需求。

    1.浏览器

      SignalR支持许多中种类的浏览器,尤其是最近浏览器的两个版本。

    在浏览器中使用signalr的应用程序必须使用jQuery的版本>=1.6.4.

    signalr可在以下浏览器中使用:

      •  IE:8, 9, 10, and 11.现代桌面版和手机版也支持
      • Mozilla Firefox:所有版本,请允许我这么说
      • Google Chrome: 所有版本,请允许我这么说
      • Safari:所有版本,请允许我这么说
      • Opera: 所有版本,只支持WINDOWS版本
      • Android 浏览器





        • 浏览器协议需求
          通讯协议 Internet 
          Explorer
          Chrome
          (Windows or iOS)
          Firefox Safari 
          (OSX or iOS)
          Android
          WebSockets 10+ current - 1 current - 1 current - 1 N/A
          Server-Sent Events N/A current - 1 current - 1 current - 1 N/A
          ForeverFrame 8+ N/A N/A N/A 4.1
          Long Polling 8+ current - 1 current - 1 current - 1 4.1

           

          2.桌面应用程序和Silverlight程序

            注意:有人在做supersocket,所以我们可以让它运行得更强大,一下是官方给出的图

          桌面应用程序和Silverlight程序通讯协议需求
          通讯协议 .NET application Silverlight
          Web Sockets Windows 8+ and .NET 4.5+ N/A
          Forever Frame N/A N/A
          Server-Sent Events .NET 4+ 5+
          Long Polling .NET 4+ 5+

          3.Windows Store和Windows Phone应用程序

            如上,我们可以借助第三方做事情

          Windows Store  和Windows Phone      通讯协议需求
          Transport Windows Store/ 
          .NET
          Windows Store/ 
          JavaScript
          Windows Phone/
          IE
          Windows Phone/
          .NET
          WebSockets N/A Win8+ 8+ N/A
          Forever Frame N/A Win8+ 7.5+ N/A
          Server-Sent Events Win8+ N/A N/A 8+
          Long Polling Win8+ Win8+ 7.5+ 8+






          参考地址:http://www.cnblogs.com/humble/p/3856357.html
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-21 04:18 , Processed in 0.065380 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表