大家好,又见面了,我是你们的朋友全栈君。
比较
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): 本机中的内部过程通信.
通道
. 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
服务中分派一个端口
.
通道
通道组件提供实用灵活的通信通道
,
使用永久连接实现真正的异步通讯和服务回调
.
TCP
连接之上改进的客户自定义协议
,
这个通道允许使用传统通道类型所没有的高级特性
:
- 保持实时连接,通过灵活的PING/PONG系统发现断开的连接(如由于网络繁忙)并无缝修复.
- 结合服务端和客户端通信,可以使服务端向客户端主动的发送事件或异步响应,而不用去轮询,减少了网络流量提高了回调的效率.
- 允许使用单通道同时发送多个请求.
,
而且有防火墙和代理服务时也不要求使用基于
HTTP
的通道
.
:
- SuperTcpClientChannel (.NET)
- TROSuperTcpChannel (Delphi)
:
- SuperTcpServerChannel (.NET)
- TROSuperTcpServer (Delphi)
通道
– 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)
过期的
TCP
通道
一种传输控制协议
,
是两种基于底层的使用
TCP/IP
网络堆栈的
Internet
通讯基本协议之一
,
在客户端和服务端通过连接提供数据传输
.
然而
TCP
也为更复杂的传输协议
(
如
HTTP,POP3
等
)
提供支持
,TCP
通道使用原始的
TCP
提供轻量协议
,
在传输消息中没有添加任何附加信息
.
TCP
通道是最好的选择
.
这时
TCP
通道可以提供方法调用的最好执行效率
.
Delphi
中
,BPDX
服务通道提供了最好的效率和高灵活行
,
但是要比轻量
Indy
服务通道需要更多的资源
.
:
- IpTcpClientChannel (.NET)
- TROIndyTcpChannel (Delphi)
:
- IpTcpServerChannel (.NET)
- TROIndyTcpServer (Delphi)
- TROBPDXTcpServer (Delphi)
通道
(Delphi)
通道使用标准的
和存在的
POP3
及
SMTP
服务执行异步通讯
,
向服务端发送请求并接收响应
.
地址
,
并使用这个地址向服务端发送处理请求
.
服务端从
POP3
信箱中接收到邮件
,
处理请求
,
最后也使用
的形式向客户端返回处理结果
.
客户端通道通过轮询其
POP3
信箱接收响应
.
(
可能会超过单个客户端
Session
的有效时间
OutTime)
的请求
.
由于请求和响应在
POP3
信箱中是持续的
,
客户端发送请求后退出
,
而接收响应可能要在几小时或几天以后
.
同样
,
请求发送到服务端可能不会马上执行
–
服务端启动后将从其邮件箱中提取并处理邮件
.
:
- TROEmailChannel (Delphi)
:
- TROEmailServer (Delphi)
通道
通道允许
RemObjects SDK
在
.NET
或
Delphi
应用程序中基于单机通讯
;
使你可以轻松重用集成的客户端和服务端应用程序
,
或建立单层应用程序稍后可以简单的修改通道类型移为他用
.
,
这个通道在如下两种情形时很有帮助
,
特别是当结合
Data Abstract
数据库多层架构
:
- 在保留扩充性的前提下实现一个单层应用程序,在需要的时候可以很容易的升级为三层解决方案.
- 将多层应用重用与单层环境–如出售单用户版本的产品,或提供一个桌面版的客户机/服务器数据库前端.
,Local
通道可以简单的将客户端和服务端组合在一个应用程序中
,
但是仍然保留了逻辑上的多层次分离
.
:
- LocalClientChannel (.NET)
- TROLocalChannel (Delphi)
:
- LocalServerChannel (.NET)
- TROLocalServer (Delphi)
通道
(Delphi)
通道允许你在
DLL
内部执行服务逻辑
,
其使用标准的
RemObjects SDK
调用机制
.
通道自动为你的客户端过程加载
DLL,
并像远程服务一样将服务端方法开放出来
.
Local
通道小节
.
:
- TRODLLChannel (Delphi)
:
- TROLocalServer (Delphi)
和
Broadcast
通道
(Delphi)
TCP, UDP
是另外一个
Internet TCP/IP
网络组织的基本传输协议
.
与
TCP
相比
,UDP
没有基于连接传输数据的概念
,
而是在网络中发送单独的数据包
–
可寻址数据包
.
也提供了没有错误修正和保证的传递方式
,
所以通过
UDP
发送的数据包可能会并没有达到目的地而丢失
,
或发生错误而简单的放弃
.
同时
UPD
通过自动截取而不提供大数据包的传递
.
总之
,UDP
与
TCP
相比更快更有效率
.
UDP
的通道
,
而且不用去考虑网络错误调整和包恢复
(
如
TCP
提供的特性
).
这只能用于局域网的情形
,
网络组织可靠并且发生丢包的情况非常少
.
通道与
UDP
通道变化而来
,
允许你向本地网络中所有可用的服务端使用
UDP
广播发送请求
.
这在通知或搜索可用服务端时非常有用
.
;
对于广播的情形
,
你的服务端将调用
ROSendNoResponse
防止任何响应形式发送
(
以便于大量的接收方可以取消消息通知
),
直到你的客户端将准备好接收多个响应
.
:
- TROIndyUdpChannel (Delphi)
- TROBroadcastChannel (Delphi)
:
- TROIndyUdpServer (Delphi)
- TROBroadcastServer (Delphi)
通道
Windows
的命名管道特性在客户端和服务端通讯
.
推荐使用命名管道在单机的不同进程直接通讯
,
尤其是在不同用户环境下运行
.
这很有用
,
例如对服务的控制
.
SDK
或
MSDN
文档查看更多命名管道信息
.
:
牢记一个要点
: Windows
设置了同时连接到一个命名管道的客户端数量
-Home
版为
5
个
,Pro
版为
10
个
.
如果要运行一个网络服务
TCP/IP
是最好的选择
.
:
- NamedPipeClientChannel (.NET) – new in ‘Vinci’
- TRONamedPipeChannel (Delphi)
:
- NamedPipeServerChannel (.NET) – new in ‘Vinci’
- TRONamedPipeServer (Delphi)
通道
(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账号...