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
联系
.

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Oracle数据库中 dbms_output.put_line 不显示的问题解决方案

    @Json.Xu 在学习Oracle的过程中学到匿名语句块在执行过程中发现控制台打印输出DBMS_OUTPUT.PUT_LINE(vename||’过节费’||vmsg);的时候并不显示。一下是我的数据库代码declare vename varchar2(20); vsal_comm emp.sal%type; vcomm emp.comm%type; …

    2021年11月30日
  • javaScript的基本语法结构「建议收藏」

    javaScript的基本语法结构「建议收藏」javaScript的基本语法结构一、javascript程序带的文本二、javascript中的注释三、字面量四、标识符和保留字标识符保留字五:可选的分号一、javascript程序带的文本vascript区分大小写。这就意味着他的关键字,变量,函数名和其他标识符必须始终保持一致的大小写格式二、javascript中的注释//这是单行注释/*这也是注释*///而这是另一个注释/**这是多行注释*每行开头的*字符不是必要的,只是为了美观*/三、字面量字面量(litera

  • Linux从0到1:安装Linux操作系统(超级详细版)「建议收藏」

    Linux从0到1:安装Linux操作系统(超级详细版)「建议收藏」分享一下安装Linxu操作系统的流程安装虚拟机首先自己进行Vmwareworkstation的安装,打开此软件进行以下步骤。在VMware中新建虚拟机下一步,选择自定义安装虚拟机兼容性,默认下一步安装来源,选择稍后安装操作系统操作系统类型,选择Linuxcentos64自定义虚拟机名称,和文件夹位置(建议D:\VM\Centos7-1-64…

  • eclipse自动补全设置_eclipse补全设置

    eclipse自动补全设置_eclipse补全设置Eclipse版本问题描述自动补全显示顺序不尽人意,如下:输入equals使用自动补全后,显然并不是我们希望使用的方法。解决方法1进入Windows选项卡下的Perferences,搜索ContentAssist,找到Java选项卡下的ContentAssist,选择Advanced选项卡。将其中内容配置为(即,将上下两部分的JavaProposals(Task-Focused)取消勾选,将JavaProposals勾选);之后就可以开心的使用自动补全啦!解决方法2这是

    2022年10月15日
  • telnet 命令参数及其应用方式[通俗易懂]

    telnet 命令参数及其应用方式[通俗易懂]1.了解telnet命令的语法和参数;2.掌握telnet的常见应用方法。

  • idea打包操作_idea package打包

    idea打包操作_idea package打包前言:IDEA导出war包的方式与MyEclipse有一点不同,使笔者在使用的时候有点困惑,在网上查阅相关资料的时候,发现都讲解得都不是非常的清晰,于是有了这篇随笔的诞生。话不多说,直接进入正题。1.进入项目的ProjectStructure界面,进行如下4步操作。2.通过上述4步操作后,进入如下界面。 注:1.修改war包的名称(根据实际情况);2.如果出现WEB-INF文件夹则删除,否则不做…

发表回复

您的电子邮箱地址不会被公开。

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