RO38 –比较RemObjects SDK 通道

本文汇总了RemObjects SDK提供的通道:
  • 最通用的通道
    • 1) HTTP 通道:使用www超文本传输协议的灵活,网络无关的通信.
    • 2) Super TCP 通道: 在客户端服务端灵活通用的双向传输.
    • 3) Super HTTP 通道- new in 'Vinci'
  • 常用的通道Frequently used channels
    • 4) 以前的TCP通道: 通过TCP实现轻量级通信.
    • 5) Email 通道(Delphi): 与存在的Email组织异步通讯.
    • 6) Local 通道:直接应用程序内部通信.
    • 7) DLL 通道(Delphi): DLL中执行服务端逻辑,并通过标准的RemObjects SDK接口调用机制调用.
  • 很少使用的通道
    • 8) UDP and Broadcast 通道(Delphi): 轻量数据包通信.
    • 9) Named Pipe 通道:不使用TCP/IP的局域网内部的通信.
    • 10) WinMessage 通信(Delphi): 本机中的内部过程通信.
1) HTTP 通道
最常用的通道可能是基于超文本传输协议的. HTTP 协议, 组成www的基础,Internet中最常用的协议之一,RemObjects SDK中使用可以提供各种好处:
  • 由于HTTP的广泛使用,这种协议可以在轻松用于受限的网络环境,如有防火墙或使用代理将客户端与Internet隔离. 如果终端用户可以通过浏览器访问网络,基于HTTP通道的客户端也非常可能运行.
  • 服务端地址使用标准的URL标识,这样用户可以轻松明确的处理地址.
  • 如果希望,HTTP通道可以提供人们能直接读取的服务端信息和开放的服务信息,并可以通过web浏览器查看.
总之,HTTP是当你位于扩展站点而无法控制网络时最好的协议,可以使你的客户端轻松的在各种类型的网络中工作.
两种版本(Delphi .NET)中都提供了HTTP客户端和服务端通道的几种实现,至于那种最好这取决于用户的偏爱和体会.所有的HTTP客户端都可以连接到HTTP服务端,反之亦然.
值得一说的是基于WinINET的客户端通道(Delphi .NET)可以使用IE浏览器的设置,包括使用代理和自动拨号规则,然而IndyInternet数据包通道将使用实现于原始TCP之上的HTTP.
对于Delphi,BPDX服务通道提供了最好的性能和灵活性,但是这比轻量的Indy服务通道需要更多的资源.
客户端通道组件:
  • IpHttpClientChannel (.NET)
  • WinInetHttpClientChannel (.NET)
  • TROIndyHttpChannel (Delphi)
  • TROWinInetHTTPChannel (Delphi)
  • TROSynapseHTTPChannel (Delphi)
服务端通道组件:
  • IpHttpServerChannel (.NET)
  • HttpSysServerChannel (.NET)- new in 'Vinci' (see note)
  • WebProcessor (ASP.NET)
  • TROIndyHTTPServer (Delphi)
  • TROBPDXHttpServer (Delphi)
  • TROWebBrokerServer (Delphi)
注意: HttpSysServerChannel 使用从IIS共享的微软HTTP内核,这样允许standalone服务从IIS web服务中分派一个端口.
2) Super TCP 通道
Super TCP通道组件提供实用灵活的通信通道,使用永久连接实现真正的异步通讯和服务回调.
在原始的TCP连接之上改进的客户自定义协议,这个通道允许使用传统通道类型所没有的高级特性:
  • 保持实时连接,通过灵活的PING/PONG系统发现断开的连接(如由于网络繁忙)并无缝修复.
  • 结合服务端和客户端通信,可以使服务端向客户端主动的发送事件或异步响应,而不用去轮询,减少了网络流量提高了回调的效率.
  • 允许使用单通道同时发送多个请求.
这个通道广泛的用于需要事件和服务回调的情形,而且有防火墙和代理服务时也不要求使用基于HTTP的通道.
客户端通道组件:
  • SuperTcpClientChannel (.NET)
  • TROSuperTcpChannel (Delphi)
服务端通道组件:
  • SuperTcpServerChannel (.NET)
  • TROSuperTcpServer (Delphi)
3) Super HTTP 通道- new in 'Vinci'
这个通道如Super TCP通道一样提供了双向通信,但是它基于HTTP,从而可以穿透防火墙和精确的代理. 它比Super TCP通道的代价稍高一些,因为要在服务端使用两条连接.
客户端通道组件:
  • IpSuperHttpClientChannel (.NET)
  • WinInetSuperHttpClientChannel (.NET)
  • TROIndySuperHttpChannel (Delphi)
  • TROSynapseSuperHttpChannel (Delphi)
服务端通道组件:
  • IpSuperHttpServerChannel (.NET)
  • HttpSysSuperHttpServerChannel (.NET)
  • SuperHttpWebProcessor (ASP.NET)
  • TROIpSuperHttpServer (Delphi)
4) 过期的 TCP 通道
TCP,一种传输控制协议,是两种基于底层的使用TCP/IP网络堆栈的Internet通讯基本协议之一,在客户端和服务端通过连接提供数据传输.然而TCP也为更复杂的传输协议(HTTP,POP3)提供支持,TCP通道使用原始的TCP提供轻量协议,在传输消息中没有添加任何附加信息.
当网络流量小并且没有使用防火墙时TCP通道是最好的选择.这时TCP通道可以提供方法调用的最好执行效率.
Delphi,BPDX服务通道提供了最好的效率和高灵活行,但是要比轻量Indy服务通道需要更多的资源.
客户端通道组件:
  • IpTcpClientChannel (.NET)
  • TROIndyTcpChannel (Delphi)
服务端通道组件:
  • IpTcpServerChannel (.NET)
  • TROIndyTcpServer (Delphi)
  • TROBPDXTcpServer (Delphi)
5) Email 通道 (Delphi)
Email通道使用标准的Email和存在的POP3SMTP服务执行异步通讯,向服务端发送请求并接收响应.
客户端通道指定Email地址,并使用这个地址向服务端发送处理请求.服务端从POP3信箱中接收到邮件,处理请求,最后也使用Email的形式向客户端返回处理结果. 客户端通道通过轮询其POP3信箱接收响应.
这个通道适用于长时间执行(可能会超过单个客户端Session的有效时间OutTime)的请求. 由于请求和响应在POP3信箱中是持续的,客户端发送请求后退出,而接收响应可能要在几小时或几天以后.同样,请求发送到服务端可能不会马上执行-服务端启动后将从其邮件箱中提取并处理邮件.
客户端通道组件:
  • TROEmailChannel (Delphi)
服务端通道组件:
  • TROEmailServer (Delphi)
6) Local 通道
Local通道允许RemObjects SDK.NETDelphi应用程序中基于单机通讯; 使你可以轻松重用集成的客户端和服务端应用程序,或建立单层应用程序稍后可以简单的修改通道类型移为他用.
关于第一方面将应用程序逻辑分为客户端和服务器然后又要在同一个执行文件中使用看起来可能没什么用处,这个通道在如下两种情形时很有帮助, 特别是当结合Data Abstract数据库多层架构:
  • 在保留扩充性的前提下实现一个单层应用程序,在需要的时候可以很容易的升级为三层解决方案.
  • 将多层应用重用与单层环境-如出售单用户版本的产品,提供一个桌面版的客户机/服务器数据库前端.
在这两个案例或相似的情况下,Local通道可以简单的将客户端和服务端组合在一个应用程序中,但是仍然保留了逻辑上的多层次分离.
客户端通道组件:
  • LocalClientChannel (.NET)
  • TROLocalChannel (Delphi)
服务端通道组件:
  • LocalServerChannel (.NET)
  • TROLocalServer (Delphi)
7) DLL 通道 (Delphi)
DLL通道允许你在DLL内部执行服务逻辑,其使用标准的RemObjects SDK 调用机制. 通道自动为你的客户端过程加载DLL,并像远程服务一样将服务端方法开放出来.
为什么要使用这个通道请查看上面的Local通道小节.
客户端通道组件:
  • TRODLLChannel (Delphi)
服务端通道组件:
  • TROLocalServer (Delphi)
8) UDP Broadcast 通道 (Delphi)
除了TCP, UDP是另外一个Internet TCP/IP网络组织的基本传输协议.TCP相比,UDP没有基于连接传输数据的概念,而是在网络中发送单独的数据包-可寻址数据包.
UDP也提供了没有错误修正和保证的传递方式,所以通过UDP发送的数据包可能会并没有达到目的地而丢失,或发生错误而简单的放弃.同时UPD通过自动截取而不提供大数据包的传递.总之,UDPTCP相比更快更有效率.
你可能想在需要高频率高效率传递小数据包事使用基于UDP的通道,而且不用去考虑网络错误调整和包恢复(TCP提供的特性).这只能用于局域网的情形,网络组织可靠并且发生丢包的情况非常少.
Broadcast通道与UDP通道变化而来,允许你向本地网络中所有可用的服务端使用UDP广播发送请求. 这在通知或搜索可用服务端时非常有用.
这两种通道可以用于异步模式;对于广播的情形,你的服务端将调用ROSendNoResponse 防止任何响应形式发送(以便于大量的接收方可以取消消息通知),直到你的客户端将准备好接收多个响应.
客户端通道组件:
  • TROIndyUdpChannel (Delphi)
  • TROBroadcastChannel (Delphi)
服务端通道组件:
  • TROIndyUdpServer (Delphi)
  • TROBroadcastServer (Delphi)
9) Named Pipe 通道
这个通道使用Windows的命名管道特性在客户端和服务端通讯.推荐使用命名管道在单机的不同进程直接通讯,尤其是在不同用户环境下运行.这很有用,例如对服务的控制.
请订阅平台SDKMSDN文档查看更多命名管道信息.
提示: 牢记一个要点: Windows设置了同时连接到一个命名管道的客户端数量-Home版为5,Pro版为10. 如果要运行一个网络服务TCP/IP是最好的选择.
客户端通道组件:
  • NamedPipeClientChannel (.NET) - new in 'Vinci'
  • TRONamedPipeChannel (Delphi)
服务端通道组件:
  • NamedPipeServerChannel (.NET) - new in 'Vinci'
  • TRONamedPipeServer (Delphi)
10) WinMessage 通道 (Delphi)
这个通道使用Windows消息在客户端和服务端通讯.
这是在单机内部进程间通讯的一个简单方式,Windows消息有一些限制-不能在Windows服务(Exe文件对应)中与服务(Service)通讯, 使用Windows消息(MSMQ)轮询来实现客户端和服务端通讯. 请订阅平台SDKMSDN文档查看这个概念的更多信息.
客户端通道组件:
  • TROWinMessageChannel (Delphi)
服务端通道组件:
  • TROWinMessageServer (Delphi)  
结论
本文比较了各种通道然后使用他们,如果你在使用时有什么问题请发送Email support@remobjects.com联系.

转载于:https://www.cnblogs.com/MaxWoods/archive/2012/08/21/2648379.html

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

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

相关文章

java实现自动登录,并获取数据

为抓取 web的一些隐私数据,需要先登录,然后才能获取这些数据,用程序来实现,就需要实现自动登录,然后将登录信息保存在Cookie中,以便取得数据时,无须再次登录。以网易邮箱为例:所需ja…

如何给微软提反馈建议以及bug

1.相信各位在使用.net core的过程中多多少少遇到了bug和为解决的坑那么我们肿么联系微软反馈问题你 1.找到vs编辑器中的反馈按钮 2.点击进入网址 如果是vs的问题选择visual studio栏目,如果为编译问题或者其他问题请选择对应的栏目 然后写下你的问题和截图,尽量详…

[html] 如何使用H5唤起原生地图APP(百度、高德、腾讯地图等)

[html] 如何使用H5唤起原生地图APP&#xff08;百度、高德、腾讯地图等&#xff09; <iframe src"sinaweibo://qrcode"> 或 <a href"intent://scan/#Intent;schemezxing;packagecom.google.zxing.client.android;end"" >或使用现在的唤起…

PS3支持的显示标准介绍

PS3的视频输出分别有&#xff1a;① HDMI 1.3版本02年推出HDMI 1.0版本以来&#xff0c;HDMI规范已经升级数次:2004年5月HDMI升级到HDMI 1.1版本&#xff0c;接着为了更好的兼容PC系统&#xff0c;HDMI LLC在05年8月23日推出了HDMI的1.2版-----此次修订增加了若干条非常重要的改…

巧用.mdb后缀数据库做后门

我不否认n早前的那个把asp木马写到图片文件中不失为一种好的方法&#xff0c;其实不仅可以写到图片啦 写到mp3文件里写到doc文件里都是可以的啦 copy 文件名/参数 文件名/参数 生成文件名 这样的方法可以很灵活的运用来达到隐藏文件的目的&#xff0c;具体的参数就是/a以…

windwos docker安装k8s一直staring的解决方法

今天遇到了一个很奇怪的问题 docker中启动k8s一直卡在starting 然后就不动了&#xff0c;找了很多解决方法终于得到解决这里把解决流程写在这里 1.配置镜像加速器 首先登录阿里云&#xff0c;阿里云有一个免费的镜像加速服务&#xff0c;可以加快拉取docker容器的速度这里一定…

对未标记为可安全执行的脚本_三、??XSS跨站脚本攻击

跨站脚本攻击(Cross Site Scripting)&#xff0c;缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中Web里面的Script代码会被执行&#xff0c;从而达到恶意攻击用户的目的。理论上&#xff0c;所有可输入的地方没有对输入…

[html] 在主框架下引入的iframe,如果检测这个iframe是否能打开,如果打不开则跳到404页面

[html] 在主框架下引入的iframe&#xff0c;如果检测这个iframe是否能打开&#xff0c;如果打不开则跳到404页面 首先我们知道 iframe 只有 onload 事件&#xff0c;没有 onerror 事件&#xff0c;无论 iframe 能否正常加载都会正常触发 onload 事件。但是由于场景不同&#x…

【Java学习笔记】线程学习笔记

一、资源 http://blog.csdn.net/axman/article/details/431796 这个博客里有Java多线程、线程池的一系列&#xff0c;从基础开始就很清楚&#xff0c;牛人 二、重点 今天读到了基础篇(三)&#xff0c;跳过了后面的方法介绍&#xff0c;以后估计还得补上来的.... 做笔记...... 1…

TortoiseSVN2IDE.pas源代码

unit TortoiseSVN2IDE; {$R icons.res} interface uses ToolsAPI, SysUtils, Windows, Dialogs, Menus, Registry, ShellApi, Classes, Controls, Graphics, ImgList, ExtCtrls, ActnList,Forms;//增加了对Forms单元的引用 const SVN_PROJECT_EXPLORER 0; SVN_LOG 1…

.net 使用阿里云RocketMQ

1.首先我们来讲解一下消息队列的作用 比如说我们的订单系统&#xff0c;再客户订单生成了以后&#xff0c;可能会有 快递系统&#xff0c;通知系统&#xff0c;和打印系统需要用到当前订单的详细内容 所以这个时候常规的操作是在A里面通过代码调用B&#xff0c;C &#xff…

[html] 使用a标签的download属性下载文件会有跨域问题吗?如何解决?

[html] 使用a标签的download属性下载文件会有跨域问题吗&#xff1f;如何解决&#xff1f; 最近刚遇到这个问题&#xff0c;后台返回的图片链接&#xff0c;点击按钮批量下载&#xff0c;a标签的 download 属性只对同源文件有效&#xff0c; 所以我们这里先把图片 url 转为 bl…

tensorflow 目标分割_Tensorflow中的控制流和优化器

控制流只要对tensorflow有一点了解&#xff0c;都应该知道graph是tensorflow最基本的一个结构。Tensorflow的所有计算都是以图作为依据的。图的nodes表示一些基本的数学运算&#xff0c;比如加法&#xff0c;卷积&#xff0c;pool等。Node使用protoBuf来进行描述&#xff0c;包…

Reflector 已经out了,试试ILSpy

Reflector是.NET开发中必备的反编译工具。即使没有用在反编译领域&#xff0c;也常常用它来检查程序集的命名规范&#xff0c;命名空间是否合理&#xff0c;组织类型的方法是否需要改善。举例说明&#xff0c;它有一个可以查看程序集完整名称的功能&#xff0c;请看下图 这里的…

Go语言通过odbc驱动连接华为高斯数据库

1.下载odbc驱动 下载后安装psqlodbc_x64.msi 安装成功后可在odbc数据源中看到以下内容 2.测试odbc驱动 在用户dsn中选择添加 输入对应的连接内容点击test 如果显示以下内容则表示驱动正常可使用odbc连接高斯数据库 3.go 语言编写 其中依赖包需要使用命令安装 go get github.c…

MFC对话框打印预览异常问题解决

昨天在别人的电脑上成功运行了上次我写的打印预览程序&#xff0c;但是今天换了一台电脑就不能运行了&#xff0c;让我觉得非常奇怪。 提示的错误信息是“内存XXXX不能为read”&#xff0c;“mfc100d.dll”中有未经处理的异常。 奇怪的是&#xff0c;我加了try catch语句后依然…

[html] 请实现一个网站加载进度条

[html] 请实现一个网站加载进度条 import { memo } from react; import { useLifecycles } from react-use; import NProgress from nprogress; import nprogress/nprogress.css;const ProgressLine memo(() > {useLifecycles(() > {NProgress.start();},() > {NPro…

activiti高亮显示图片_【正点原子FPGA连载】第二十章SD卡读BMP图片HDMI显示实验领航者 ZYNQ 之嵌入式开发指南...

1&#xff09;实验平台&#xff1a;正点原子领航者ZYNQ开发板2&#xff09;平台购买地址&#xff1a;https://item.taobao.com/item.htm?&id6061601087613&#xff09;全套实验源码手册视频下载地址&#xff1a;http://www.openedv.com/docs/boards/fpga/zdyz_linhanz.htm…

.net Redis缓存优化提高加载速度和服务器性能(一)

距离上次服务器将图片转义至oss服务器提交加载速度已经有一段时日了 对于图片转移至oss服务器优化前后的结果可以查看我之前编写的文章点击查看 如今随着商户数的增多&#xff0c;数据的增多&#xff0c;服务器的性能再一次达到了顶峰&#xff0c;并且由于是点餐系统的缘故订…

DSA通讯协议

1.DSA-接口规范 DSA总线是一个异步&#xff0c;双向的&#xff0c;内部设计用于在一组两个微处理器之间的通信总线。 它有三个双向线&#xff1a; ● DATA -启动同步和数据传输 ● STB -数据选通&#xff08;当STB为低电平时数据是有效的&#xff09; ● ACK -启动同步&#xf…