首页 > 其他分享 >Silverlight4中用net.tcp双工方式进行通信

Silverlight4中用net.tcp双工方式进行通信

时间:2023-07-02 14:32:44浏览次数:36  
标签:Silverlight Silverlight4 HTTP 双工方式 端口 tcp TCP Net 监听


 

先简单说一下,为了更好地实现双向通信,.NET Framework在 3.0的时候引入了一个全新的通信协议Net.TCP并作为WCF的一部分。现在Net.TCP将包含在Silverlight 4中,相比于HTTP Polling Duplex,它极大地改进了吞吐量和连接的数量。
我们可以通过Silverlight 4绑定到HTTP Duplex Services上,因而应用可以不断轮询服务以进行更新,这模拟了双向通讯的工作方式。Silverlight 4则引入了一个更好的解决方案:Net.TCP Port Sharing Service。与HTTP不同,Net.TCP提供了本地的双向通信机制,极大地改进了应用的性能。打开的端口可以由多个应用共享,然而Silverlight只能访问介于4502-4534范围之间的端口。
根据微软WCF开发经理Tomasz Janczuk所述,相对于HTTP Duplex来说,Net.TCP在如下方面进行了重大的改进:

    * 吞吐量:对于UI线程来说提升了5.5倍,对于worker线程来说提升了870倍。
    * 最大的客户端数量:服务器可支持的连接客户端数量是之前的5-6倍。

该协议适用于对通信速度要求很高的Silverlight应用。但其一个严重缺陷是所使用的一系列端口通常会被防火墙阻止,因此它不适合于公网、外部应用,而适合于局域网。另一个问题是它不支持SSL,这样就会遇到安全问题,Janczuk说将在未来解决该问题。

 

特分享一下这个demo,希望对大家有帮助。

项目结构如下图所示:  WebChat.Service 是一个宿主程序,主要是用来向Silverlight提供服务和监听943与4502-4534这个范围的自定端口的。

Silverlight4中用net.tcp双工方式进行通信_socket

 

我们启动WebChat.Service宿主程序,进行监听商品,在命令提示符下打入netstat -na来查看我们监听的端口。

我监听的是943和4503这两个端口。

Silverlight4中用net.tcp双工方式进行通信_service_02

 

Silverlight使用net.tcp访问的时候要求请一个有策略文件,可以在程序里面这写也可以放到项目的根目录下。clientaccesspolicy.xml这个是必须的

如果您使用的是vs2010的话,可以在“在线模版”里面找到Silverlight TCP Socket Policy这个模版,新建就可以得到监听943端口的程序。哈哈!

Silverlight4中用net.tcp双工方式进行通信_silverlight_03

 

里面有两个cs文件,

SocketPolicy.cs

 

SocketPolicy.cs


标签:Silverlight,Silverlight4,HTTP,双工方式,端口,tcp,TCP,Net,监听
From: https://blog.51cto.com/u_16174476/6605258

相关文章

  • TCP TIME_WAIT 状态 及相关问题优化
    TCP是一种面向连接的可靠的传输协议,它在建立和释放连接时,需要经过一系列的握手和挥手过程。在这个过程中,会涉及到一些不同的状态,其中一个比较常见但又容易被误解的状态就是TIME_WAIT状态。本文将从以下几个方面介绍TIME_WAIT状态的原理和优化方法:TIME_WAIT状态是如何产生......
  • TCP协议的滑动窗口具体是怎样控制流量的?
    目录前言TCP协议概述滑动窗口的原理1发送方的滑动窗口:2接收方的滑动窗口:控制流量的机制1慢启动2拥塞避免3拥塞控制实例演示总结前言TCP协议是互联网中广泛使用的传输层协议之一,用于可靠地传输数据。其中,滑动窗口是TCP协议中用于控制流量和实现可靠传输的重要机制。本文将介......
  • Netty-TCP 01.编解码
    本文是使用Netty开发一个简单的TCP通讯(聊天)应用程序的第【1】部分,主要介绍编解码实现。定制协议一般来说,开发TCP通讯应用程序,定制通讯协议是不可避免的,这里以一种最简单的协议为例,假设一个TCP通讯数据包,包含三部分:[type][size][content]type:数据包类型(长度为一个字节,即1个by......
  • Netty-TCP 02.客户端
    本文是使用Netty开发一个简单的TCP通讯(聊天)应用程序的第【2】部分,主要介绍客户端的实现。模块划分TCP简单TCP通讯(聊天)应用程序客户端主要分为三个部分:心跳保活处理消息消费处理TCP连接实现心跳保活心跳保活是目的是告诉服务端客户端是在线的,当客户端空闲时,定时给服务端发......
  • Netty-TCP 03.服务端
    本文是使用Netty开发一个简单的TCP通讯(聊天)应用程序的第【3】部分,主要介绍服务端的实现。模块划分跟客户端类似,服务端也是主要分为三个部分:心跳检测处理消息消费处理TCP服务实现心跳检测服务端需要定时检测客户端是否在线(即是否发送心跳),如果没有,那么将客户端连接断开,同样......
  • Netty-TCP 04.发消息
    本文是使用Netty开发一个简单的TCP通讯(聊天)应用程序的第【4】部分,主要测试客户端和服务端的通讯。服务端下面是服务端测试代码:/***@authormichong*/publicclassTCPServer{publicstaticvoidmain(String[]args){TCPServerBootstrapbootstrap=ne......
  • C# ModbusRtu或者TCP协议上位机源码,包括存储,数据到SQL SERVER数据库,趋势曲线图,数据报
    C#ModbusRtu或者TCP协议上位机源码,包括存储,数据到SQLSERVER数据库,趋势曲线图,数据报表,实时和历史报警界面,有详细注释,需要哪个协议版本原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/655313350668.html......
  • TCP协议的握手与分手
    TCP的三次握手四次分手TCP协议建立连接总共需要进行三步主机A请求主机BB确认收到请求回复AA确认收到B的回复三次握手都是进行同一个端口(随机端口)SYN:请求同步ACK:确认同步#第一次握手,从主机A的60517端口发送到远程22端口,[SYN]请求60517→22[SYN]Seq=0Win=642......
  • EPSON机械手跟相机搭配走tcp ip协议,及跟plc通讯将手动操作部分映射到触摸屏
    EPSON机械手跟相机搭配走tcpip协议,及跟plc通讯将手动操作部分映射到触摸屏EPSON机械手与相机通过TCP/IP协议进行配对,并与PLC进行通信,以将手动操作部分映射到触摸屏。这样做的好处是可以实现更高效的自动化操作和监控。在这段话中涉及到的知识点和领域范围包括:EPSON机械手:机械手是......
  • TCP三次握手/四次挥手
    三次握手第一次握手:主机A发送位码为syn=1,随机产生seqnumber=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;第二次握手:主机B收到请求后要确认联机信息,向A发送acknumber=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;第三次握手:主机A收到......