XCOM

本文核心词:XCOM。

XCOM

创建XCOM共享空间,众人拾柴火焰高,让我们在此空间种子、浇水、开花、结果

iXcom技术白皮书

1. 前言… 1

2. iXcom简介… 2

3. iXcom的功能… 3

4. iXcom的特点… 4

5. 基本概念… 5

5.1. 应用… 5

5.2. 节点… 5

5.3. 电文… 6

5.4. 电文号… 7

5.4.1. 映射电文号… 7

5.5. 回线… 7

5.6. 主机名… 8

5.7. 主机代号… 8

5.8. 电文实时传输… 8

5.9. 电文可靠传输… 8

5.10. 静态连接… 9

5.11. 动态连接… 9

5.12. 队列… 10

5.12.1. 发送队列… 10

5.12.2. 接收队列… 11

5.13. 分组发送… 11

5.14. 分组接收… 11

6. 体系结构… 11

6.1. 系统核心… 12

6.1.1. 基础平台构件层… 12

6.1.2. 数据处理构件层… 13

6.2. 通信管理… 14

6.3. 应用适配器层… 15

1. 前言

本文档介绍宝信软件的中间件产品iXcom。iXcom属于消息通信中间件,它的主要功能是在应用程序间传递消息,这些消息可以在不同的通信协议(基于TCP/IP Socket)、不同的主机系统和不同的应系统。

iXcom提供简单易用、高效可靠的分布式应用开发和通信平台,利用它可以快速方便地开发可靠、高效的分布式应用。

iXcom提供远程监控和控制功能,可以方便的控制通信线路和得知通信运行状况。

iXcom提供对多种主流数据库的支持,支持Oracle,SQLServer等数据库。

iXcom提供对多种开发语言的支持,支持C/C++ , Java, .NET, VB , Delphi等语言。

2. iXcom简介

iXcom 是面向分布式应用的消息中间件,它为网络环境下客户机/服务器(C/S)结构的应用系统的开发和运行,提供了灵活和易用的基础平台。

iXcom提供两种通讯模式,实时传输模式和可靠传输模式。在实时传输模式上,iXcom提供快速地数据发送能力,但在通信出现异常时不能保证数据地可靠到达。在可靠传输模式下,iXcom提供可靠的数据发送能力,严格按照应用发送电文的先后顺序进行电文发送,保证电文的可靠传输。

一个iXcom 的基本工作示意图如图1 所示。应用程序分布在网络上的两个结点上,当应用程序之间要传送消息时,应用程序只需将消息电文号和消息的内容通过iXcom提供的接口传给iXcom。iXcom 便会利用网络结点上的各个iXcom运行系统组成的虚拟网,将消息输送到消息接收者所在的结点上,然后提交给消息的接收者。

图1

3. iXcom的功能

iXcom的主要功能如下:

提供端到端的实时通信服务。应用不必关心网络通信和其它的网络细节,应用只需关注应用业务层,减少学习和使用的难度。

提供端到端的可靠通信服务。适用于分布式环境下各种不同类型的应用开发,特别是对通信的可靠性要求较高的应用,提供多层次的异步通信机制。通信的应用双方在处理时间上可以互不相关,发送方在发送数据时接收方应用可以还未启动。

提供对发送电文的并发传输(通信规约必须是动态连接的)和接收电文的并发处理,适用于对效率要求比较高的业务领域。

提供简单易用、快速、高效可靠的分布式应用系统的开发平台,应用编程接口(API)简单且易学易用。网络异构环境和细节对用户完全透明并且支持多种网络底层环境,并提供了跨操作系统的C/C++/Java接口;

iXcom可以和具有不同通信规约的节点进行通信。

提供WebService,XML-RPC接口,可以和J2EE和.NET进行集成。

支持工业通信协议Modbus、3964R等协议。

通过iXcom提供的协议框架,可以对通信协议进行扩展。

可靠传输方式下,支持电文的广播和多播发送。

提供对多种消息格式(ASCII和二进制)传输的支持;提供快速可靠的面向事务处理的数据递送功能,保证数据的完整性和可靠性;

提供分布式(C/S和B/S)的管理平台,通过DNS服务和应用管理等方式,提供对iXcom的管理和监控。

4. iXcom的特点

iXcom有以下特点:

支持多种操作系统,如IBMAIX、HP-UX 、Linux、Windows 2000/NT/XP/2003 等。

支持多种开发工具。iXcom在所有平台上都支持C、C++、Fortran和JAVA;在Windows 系列平台上,提供VB/Delphi/C# 等接口。

网络节点数的支持量大:网络节点数的支持可从数十个到上千个,具体上限的多少与主机的性能有关。

基于TCP/IP Socket 。

支持客户/服务器(Client/Server)方式。

5. 基本概念

5.1.应用

与具体业务有关的程序,包括客户端处理输入输出的客户程序(Client)、服务端负责业务逻辑的服务程序(Server)。

5.2.节点

节点就是通信程序的宿主主机。一个iXcom可以和多个节点通信。一个节点主要有五个属性:IP地址、Port号、通信规约、主机名称和主机代号。

IP地址

节点的IP地址,可以有备用IP地。

Port

节点通信程序的监听端口号

通信规约(Protocol

iXcom和外部主机互相通信的规约

主机名称(HostName

标识节点名称,不大于8个ascii字符

主机代号(HostDC

标识节点代号,用做发送电文时的目的地,用2个ascii字符表示。

注:在本文章,没有特殊指名的话,节点和主机是同一概念。

5.3.电文

在通信中间件之间传送的数据包,一般由电文头、电文体(数据块)和结束符组成。

其中电文头长度an>1-2个字符,对于特定的通信规约而言,结束符是确定不变的。

数据电文(Data Message)

用于传送应用系统的数据块,iXcom不对该类型电文进行拆分,但该电文有可能被底层的TCP协议进行拆分和重组。

应答电文(ACK Message)

由通信的接收方发送,用于告知发送方电文是否已被正确接收。

心跳电文(Heartbeat message)

用于监视回线和对方通信程序的状态,用作状态检测,双方可根据实际需要决定是否发送心跳电文。

注:

1. 应答电文是用于保证通信的可靠传输。

2. 控制电文、心跳电文是通信相关的电文,应用不用关心此类电文。

5.4.电文号

用于标识一条电文的类型和目的,一般在电文头部中有电文号字

段。电文号是通信双方按业务划分共通制定的,它一般用长度不大于6位的ASCII字符表示。

5.4.1. 映射电文号

用于历史问题等原因,可能在同一项目中出现电文号重复的现

象。为了便于应用方便处理电文,iXcom提供映射电文号的功能,应用可以根据需对每个电文号定义它的映射电文号,该映射电文号必须是全局唯一的,也就是说在同一项目中虽然电文号可以重复,但映射电文号必须是唯一的。

注:若项目中有重复电文号,iXcom和应用之间的接口有如下约定:

1) 应用发送电文时,提供的电文号必须是映射电文号。当iXcom发送电文时,iXcom会把映射电文号转化成实际的电文号进行发送。

2) iXcom收到电文后,将把收到电文的映射电文号发送给应用,而不是原有电文号。

5.5.回线

在通信程序双方之间建立的一条TCP 连接,一条回线既可以接收也可以发送数据。一般来说,通信双方通信程序之间需要建立两条回线。

一般情况下,在iXcom中采用的回线模式如下:

5.6.通信模式

通常来说,XCOM间通信,双方都有一个客户端和服务端。甲方要发数据给乙方,甲方XCOM的客户端把数据发给乙方的服务端。反之,乙方发数据给甲方,是乙方的客户端把数据发给甲方的服务端。

Socket类型

<>

对应值

<>

说明

<>

WRITE

<>

C

<>

客户端session读写:本方作为客户端,主动连接对方,连接建立后,该Socket连接可以发送电文。

<>

READ

<>

S

<>

服务器端session读写:本方作为服务器端,等待对方主动连接,连接建立后,该Socket连接上可以接收电文并且发送底层应答(按规约情况而定)。

<>

READ_WRITE

<>

CS

<>

客户端和服务端两个session都读写,融合以上两个session的功能。

<>

5.7.主机名

用于在通信时标识通信节点的主机名字。

5.8.主机代号

用于在电文收发时标识发送方和接收方,一般在电文头部中有主机代号的字段,用2个大写ascii码字母表示。

5.9.电文实时传输

电文实时传输指电文必须在规定的时间内必须传递到目标节点。iXcom在规定时间内提供快速可靠的传输机制,保证消息传递的实时性和可靠性,但在异常(网络设备异常或对等机进程异常)时不保证消息的可靠传输。在异常情况下,应用发送给iXcom的电文数据将被丢弃,iXcom将给应用误返回值,应用必须考虑电文重发或其它处理机制。

5.10. 电文可靠传输

电文可靠传输指电文的`传递在时间上无特殊的要求,在网络连通的情况下必须保证消息可靠的传递到目标节点。电文发送时,在遇到可恢复的故障(包括机器故障或网络故障)情况下,通过后续重发电文能够保证消息的可靠传输。

5.11. 静态连接

指通信双方建立的TCP/IP连接一直保持,直到停止通信程序或异常终止。当通信出现异常时,客户端必须具备重新连接服务端功能,保证通信的可靠性。静态连接示意图如下:

注:若通信规约不存在应答电文,等待应答阶段将不存在。

5.12. 动态连接

动态socket通信是指计算机之间的TCP/IP连接方式是动态的,当一次通信结束后,计算机之间的连接随之关闭,下一次传送电文时,需要重新建立socket连接。如下图所示:

(注:发送方在收到应答电文后必须关闭socket连接。)

5.13. 队列

在可靠传输模式下,队列是消息存储的地方。消息在收发过程中将存储于队列中,可靠队列中的消息存储于数据库中,不可靠队列中的消息存储于内存缓冲区中。队列结构由消息索引和数据存储区等部分组成。iXcom 系统提供的队列基本类型为发送队列和接收队列。

5.13.1. 发送队列

发往目的地的电文存储在发送队列中,电文根据发送目的地(即主机代号)分别被放到不同的逻辑发送队列中,iXcom核心从发送队列中取出电文进行网络发送。

5.13.2. 接收队列

iXcom收到电文后,将根据发送方的设置(即主代号)将电文放到相应的逻辑接收队列中。

5.14. 分组发送

应用可以根据业务的需求把发往某一主机的电文号按业务进行分组。每个组看作一个队列,每一组电文有对应的组号(整数)。对应于每一个队列,iXcom有一个且同一时刻只有一个进程对该队列进行操作发送,队列与队列之间的电文是互不影响的,一个队列中的电文堵塞,不会影响其他队列的电文。

注:分组发送仅限于动态连接方式,不能用于静态连接方式。

5.15. 分组接收

应用可以根据业务的需要把来自同一主机的电文按业务进行分组。每个组看作一个队列,每一组电文有对应的组号(整数)。对应于每一个队列,iXcom有一个且同一时刻只有一个进程对该队列进行操作发送(发送给应用,如Tuxedo),队列与队列之间的电文是互不影响的,一个队列中的电文堵塞,不会影响其他队列的电文。

6. 体系结构

本节描述iXcom的基本组成和运行方式。

在应用系统进行数据通讯时,应用进程通过iXcom接口函数,将电文放入队列中。iXcom 核心进程从队列中取出消息,根椐电文中的电文号,通过iXcom 之间(或与其它通信程序)建立的数据通道,将该电文传送到接收者所在iXcom(或其它通信程序)。接收者所在的iXcom 核心收到电文后将电文写入接收队列中,接收应用进程通过调用iXcom的接口函数,从接收队列中取出电文。至此,一个电文传递完毕。

6.1.系统核心

系统核心由两大部分组成,即基础平台构件层和数据处理构件层。

6.1.1. 基础平台构件层

基础平台构件层由以下几部分组成,包括事件分派、socket传输、进程管理、数据库连接池和线程池。

事件分派

事件分派主要工作是建立socket连接、维护监控通信链路;从通信链路中读取数据并分派给协议插件。

Socket传输

应用电文发送和处理。

进程管理

进程管理主要工作是管理和维护iXcom的各进程。

数据库连接池

数据库连接池主要工作是在电文可靠传输模式下,提高数据库访问速度的效率。

线程池

线程池主要工作在于提高在并发处理电文时的处理效率。

6.1.2. 数据处理构件层

数据处理构件层由以下几部分组成,包括电文交换、

电文时序控制、数据转换、协议插件和异常处理。

电文存储

电文存储包括电文的写入和读取。当收到一条电文时,iXcom要把它写入数据库,以便后续的应用处理;当有待发数据时,iXcom要从数据库中读取相应的数据,然后通过基础平台层发送给目的地。

电文时序控制

若应用电文存在业务关系,iXcom发送电文是严格按照应用写入电文的先后顺序进行电文发送。

数据转换

当电文中存在二进制数据时,iXcom可以通过该电文号所对应的转换格式把该电文内容全部转换成ascii码电文,方便应用的处理。

协议插件

异常处理

当iXcom收到异常数据时(如电文号不对等),会给对方发送底层负应答电文。

6.2.通信管理

通信管理主要由几部分组成,包括运行管理、平台监控、配置管理和日志管理。

运行管理

通过运行管理功能,可以启动和关闭回线,可以置回线开启和关闭状态。

平台监控

通过平台监控,可以实时获取当前通信状态(在线或离线)。

配置管理

通过配置管理:

可以查看当前主机配置信息,可以查看当前电文号配置信息。

可以修改原有主机信息(比如IP地址或port号),可以增加电文号,可以新增回线。

日志管理

通过日志管理,可以查看各条回线的通信状态信息,从而进行通信跟踪维护和排障。

6.3.应用适配器层

应用适配器是应用和iXcom进行沟通的桥梁,应用通过适配器

把待发数据发送给iXcom进行处理;iXcom通过适配器把待处理数据发送给应用进行处理。

未经允许不得转载:全书网 » XCOM

赞 (0)