RO38 –比较RemObjects SDK 通道「建议收藏」

RO38 –比较RemObjects SDK 通道「建议收藏」 RO38–比较RemObjectsSDK通道                                  本文汇总了RemObjectsSDK提供的通道:最通用的通道1)HTTP通道:使用www超文本传输协议的灵活,网络无关的通信.2)SuperTCP通道:在客户端服务端灵活通用的双向传输

大家好,又见面了,我是你们的朋友全栈君。 

RO38 –
比较
RemObjects SDK
通道                                   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
浏览器的设置
,
包括使用代理和自动拨号规则
,
然而
Indy

Internet
数据包通道将使用实现于原始
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
和存在的
POP3

SMTP
服务执行异步通讯
,
向服务端发送请求并接收响应
.
客户端通道指定
Email
地址
,
并使用这个地址向服务端发送处理请求
.
服务端从
POP3
信箱中接收到邮件
,
处理请求
,
最后也使用
Email
的形式向客户端返回处理结果
.
客户端通道通过轮询其
POP3
信箱接收响应
.
这个通道适用于长时间执行
(
可能会超过单个客户端
Session
的有效时间
OutTime)
的请求
.
由于请求和响应在
POP3
信箱中是持续的
,
客户端发送请求后退出
,
而接收响应可能要在几小时或几天以后
.
同样
,
请求发送到服务端可能不会马上执行

服务端启动后将从其邮件箱中提取并处理邮件
.
客户端通道组件
:
  • TROEmailChannel (Delphi)
服务端通道组件
:
  • TROEmailServer (Delphi)
 
6) Local
通道
Local
通道允许
RemObjects SDK

.NET

Delphi
应用程序中基于单机通讯
;
使你可以轻松重用集成的客户端和服务端应用程序
,
或建立单层应用程序稍后可以简单的修改通道类型移为他用
.
关于第一方面将应用程序逻辑分为客户端和服务器然后又要在同一个执行文件中使用看起来可能没什么用处
,
这个通道在如下两种情形时很有帮助
,
特别是当结合
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
通过自动截取而不提供大数据包的传递
.
总之
,UDP

TCP
相比更快更有效率
.
你可能想在需要高频率高效率传递小数据包事使用基于
UDP
的通道
,
而且不用去考虑网络错误调整和包恢复
(

TCP
提供的特性
).
这只能用于局域网的情形
,
网络组织可靠并且发生丢包的情况非常少
.
Broadcast
通道与
UDP
通道变化而来
,
允许你向本地网络中所有可用的服务端使用
UDP
广播发送请求
.
这在通知或搜索可用服务端时非常有用
.
这两种通道可以用于异步模式
;
对于广播的情形
,
你的服务端将调用
ROSendNoResponse
防止任何响应形式发送
(
以便于大量的接收方可以取消消息通知
),
直到你的客户端将准备好接收多个响应
.
客户端通道组件
:
  • TROIndyUdpChannel (Delphi)
  • TROBroadcastChannel (Delphi)
服务端通道组件
:
  • TROIndyUdpServer (Delphi)
  • TROBroadcastServer (Delphi)
9) Named Pipe
通道
这个通道使用
Windows
的命名管道特性在客户端和服务端通讯
.
推荐使用命名管道在单机的不同进程直接通讯
,
尤其是在不同用户环境下运行
.
这很有用
,
例如对服务的控制
.
请订阅平台
SDK

MSDN
文档查看更多命名管道信息
.
提示
:
牢记一个要点
: 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)
轮询来实现客户端和服务端通讯
.
请订阅平台
SDK

MSDN
文档查看这个概念的更多信息
.
客户端通道组件
:
  • TROWinMessageChannel (Delphi)
服务端通道组件
:
  • TROWinMessageServer (Delphi)
 
结论
本文比较了各种通道然后使用他们
,
如果你在使用时有什么问题请发送
Email support@remobjects.com
联系
.

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159817.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • golang ipc 通信_golang 2.0

    golang ipc 通信_golang 2.0NTP(NetworkTimeProtocol,网络时间协议)是由RFC1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP报文进行传输,使用的UDP端口号为123。使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。对于运行NTP的本地系统,既可以接收来自其他时钟…

    2022年10月12日
    0
  • 激光slam认知_激光slam的优缺点

    激光slam认知_激光slam的优缺点slam介绍什么是slam?SLAM(simultaneouslocalizationandmapping),也称为CML(ConcurrentMappingandLocalization),即时定位与地图构建,或并发建图与定位。问题可以描述为:将一个机器人放入未知环境中的未知位置,是否有办法让机器人一边逐步描绘出此环境完全的地图所谓完全的地图(aconsistent…

    2022年8月23日
    5
  • QMovie的使用

    QMovie的使用QMovie是一个可以存放动态视频的类今天第一次使用,记录一下一般是配合QLabel使用的,可以用来存放GIF动态图 m_background=newQLabel(this);m_background->setGeometry(0,0,MENU_WINDOW_WIDTH,MENU_WINDOW_HEIGHT);QMovie*backgroundMovie=newQMovie(“:/images/menu/MenuBackground.gif”,QByteArra

    2022年6月16日
    58
  • NHibernate详解

    NHibernate详解什么是NHibernate:       NHibernate是一个基于.Net的针对关系型数据库的对象持久化类库。Nhibernate来源于非常优秀的基于Java的Hibernate关系型持久化工具。NHibernate从数据库底层来持久化你的.Net对象到关系型数据库。NHibernate为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,N

    2022年7月26日
    4
  • java校验json格式_json格式校验

    java校验json格式_json格式校验C语言json格式校验最近用到json格式数据传输信息,在C语言中使用cjson解析json字符串,若json格式不正确,会使整个进程直接挂掉。想到能否在解析前先进行格式校验,通过后再解析,查找资料,网上有现成源码,网址:http://www.json.org/JSON_checker/主要用到两个文件JSON_checker.c和JSON_checker.h,具体用法可以参考main.c。这里参考了博客:C语言如何检测json格式的数据合法性中的用法,并加以改进。在官网中提供了json检查的测试文

    2025年8月1日
    0
  • Python+opencv调用摄像头获取视频保存到本地并应用到YOLO中保存视频检测后的结果

    Python+opencv调用摄像头获取视频保存到本地并应用到YOLO中保存视频检测后的结果文章目录前言读写视频流获取摄像头:写入视频:完整的调用摄像头并保存视频代码应用到YOLO中总结前言之前的文章介绍了如何调用摄像头间隔拍照并保存图片(文章链接:Python+OpenCV调用摄像头固定间隔时间拍照并保存到本地同时应用到YOLO中检测目标),这篇文章再介绍一下如何调用摄像头并保存视频。读写视频流获取摄像头:capture=cv2.VideoCapture(0)ref,frame=capture.read()前文介绍过,cv2.VideoCapture()获取摄像头

    2022年6月22日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号