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 联系 .
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值