7.3.3 集成网络的Java API(JAIN)
与BT发起Parlay研究的同时,SUN公司也发起了Java语言的电信应用编程接口,称为JAIN(Java API for Integrated Networks)。两者的设计思想类似,应用目标都是支持包括电话网、移动网和Internet在内的多重网络环境下开发综合应用业务。JAIN和Parlay是两个并行发展各具特色的API,各自拥有相当的市场。两者相比,Parlay是由电信界设计开发的,其呼叫控制API的定义借鉴电信网模型,考虑得比较周全,应用编程接口采用抽象的UML(通用建模语言)定义,可以用不同的编程语言实现;JAIN是由计算机界设计开发的,其协议API考虑得比较周全,应用编程接口采用JAVA语言定义和实现,可充分利用丰富的JAVA资源。目前,两者不断互相借鉴和融合,基本走向是呼叫控制API借鉴Parlay的定义,协议API借鉴JAIN的定义,实现语言以JAVA为最具挑战性。
JAIN有3个主要技术目的如下:
(1)业务可移植性。具有业务可移植性的含义为一次性编写,任何环境运行。将各种电信网络的专用接口融合为一个统一的编程接口。这样,对于一种业务只需编写一次应用程序,就可以在各种网络上运行。
(2)网络融合。网络融合的含义为支持任何网络。构想的应用既可以在PSTN/ISDN上运行,也可以在移动/分组网络上运行,还可以设计实现融合异种网络能力的新的业务。
(3)安全的网络接入。安全的网络接入的含义为可由任何人使用。位于网络之外的第三方应用可以通过该API直接访问网络资源和设备。这种安全接入电信网络内部功能实体和智能的机制,增加了开发和部署新业务的市场机会。
各个网络运营商可以通过将网络向JAIN API开放而增加业务种类,并使得下一代应用的开发更迅速、更简单、成本更低。
JAIN体系结构分为3层,自下而上分别是网络层、信令层和业务层。如图7.4所示。每层包括不同的网络元素。
(1)网络层:网络层就是各类实体网络,包括传统电信网的SSP(业务交换点)/交换机、移动网的MSC(移动交换中心)以及IP通信网的SSW(软交换机)/MGC(媒体网关控制器)/GK(网守)等。业务最终由这些网元完成。
(2)信令层:上述各类网络的控制信令,例如,传统电信网的ISUP/INAP/TCAP,移动网的MAP以及IP通信网的SIP/H.323/H.248等。
(3)业务层:是各类网络的业务控制实体,例如传统电信网的SCP(业务控制点)、移动网的BSC(基站控制器)、HLR(归属位置寄存器)、VLR(访问位置登记器)、MSC(移动交换中心)组合系统以及IP通信网的应用服务器,这些实体通过相应的信令协议控制网络层实体完成所需的业务。
业务层之上则是在JAVA平台上的具体应用程序,通过JAIN编程接口调用下层的业务层和协议层功能,实现构想的各种应用。JAIN使复杂的网络信令和业务实现过程对于用户屏蔽,使得用户可以专注于应用逻辑的开发,而不必关注具体网络的实现细节。
图7.4 JAIN体系结构图
API:应和编程接口 INAP:智能网应用协议 TCAP:事物处理应用部分SIP:会话启动协议 ISUP:综合业务用户部分 MAP:移动应用协议MGCP:媒体网关控制协议
JAIN包含3类API如下:
(1)业务API。其作用是业务创建和执行的管理以及不可信任第3方接入系统的安全性管理。典型的API包括负责业务创建的JSCE、负责业务配置和生命期管理的JSLEE和负责第3方接入的框架API。
(2)应用API。其作用是各类基本网络能力的实现。对于呼叫控制能力来讲,其典型的API就是负责基本呼叫控制的JCC和负责在呼叫任意阶段调用增值业务的协调和事务管理的JCAT。JCC和JCAT相结合,可以对任意网络任意类型的呼叫,按统一的模型支持呼叫启动、处理、应答和观察。
如图7.5所示,是应用层API的网络结构图,图7.5中实线部分是JAIN应用层API,它主要包括了以下几组API:
第一组是与呼叫控制相关的API,包括JCC和JCAT。
JCC(JAIN Call Control)API:JAIN呼叫控制API,它的功能相当于Parlay的MPCCS(多方呼叫控制SCF)的简化版本,具有支持复杂的呼叫处理的能力,为应用提供了处理呼叫的接口,呼叫处理包括了对呼叫的监测、生成、应答、控制等一系列操作,呼叫类型包括了多媒体呼叫、多方呼叫、多种协议终端之间的呼叫。
JCAT(JAIN Coordination and Transaction)API:这组API是对JCC的功能进行扩展,增加了对终端的控制功能,丰富了JCC的呼叫状态转移图,因此它能支持更多类型的业务,如实现媒体服务器与终端用户交互的业务等。
图7.5 JAIN应用层API网络结构图
第二组是与外部(指第3方业务提供商)安全访问内部网络资源的接口,包括针对Parlay规范的JAIN业务提供API(JAIN SPA)。应用Parlay规范的JAIN业务提供商API(JAIN Service Provider API)提供接入网络能力的安全机制,该API主要关注基于Java技术的Parlay实现,经过扩展后也可以支持网络运营商对其他业务的输出以及业务提供商/用户对其他业务的发现。
第三组是业务执行环境API和业务生成环境API,分别是JAIN SLEE和JAIN SCE。
JAIN业务逻辑执行环境(JAIN Service Logic Execution Environment)定义了电信网络和IP网进行互操作所必需的接口。JAIN SLEE可以理解成为是一个应用服务器,是业务组件(Component)的执行环境,而应用是由业务组件组成的。业务组件是包含了应用和业务逻辑的组件,更具体而言它包括了一个或多个JAVA类文件和配置描述符,SLEE规范把业务组件称作SBB(Service Building Block)组件。
SLEE规范定义的SBB运行模式是为了实现事件驱动应用,也就是异步应用,事件驱动应用收到的请求是以事件的形式存在的。比较常见的构建事件驱动应用的方式,就是提供一个事件处理程序接收所有的事件,当事件处理程序收到一个事件后,它将根据事件的类型属性执行相应的业务逻辑。
SLEE定义的事件可以来自外部资源,如外部协议栈、SLEE本身、运行在SLEE上的应用。当收到某种事件后,SLEE将把该事件按一定的顺序,发送给相应SBB,发送给SBB的本质是激活SBB中对该事件的处理程序,SLEE称这个过程为事件选路功能(Even Routing)。
JAIN业务生成环境(JAIN Service Creation Environment,简称JAIN SCE)定义了一套标准的基于Java技术的业务生成模块,而这些业务生成模块是以图形化的Java工具或Java Beans来表示的。人们利用接口来定义业务,这样,就可以通过整合SCE中的各种JAIN SCE构建模块来创建业务。
(3)协议API。其作用是实现各类网络信令协议。这是JAIN的重要特点,已定义多种API,支持从传统电信网到IP通信网的多种协议。
协议层API定义了与各种类型网络(IP,PSTN,移动)的信令协议交互的接口,它的实质是把信令协议封装成为JAVA对象的形式,提供标准化的JAVA接口,它改变了传统应用与协议栈是直接调用原语的实现方式。为了更好地理解协议层API,图7.6解释了JAIN 协议层API的作用。
图7.6 JAIN 协议API的作用图
JAIN协议层API处于应用与协议栈之间,它与协议栈采用的是原语的交互,而与应用之间的采用的是事件模型机制,事件模型包括3个实体:①事件的提供者:为应用提供访问协议栈服务的实体;②事件的监听者:使用事件的提供者服务的实体;③事件:事件提供者和事件的监听者之间的交互的实体,它的实质是封装成为JAVA对象形式的协议消息。
为了交互事件,监听者必须首先向提供者注册。对应图7.6,事件的监听者指的是应用,而事件的提供者指的是JAIN协议API的实现。只要遵循API规范,监听者可以和任何提供者交互。
按照JAIN的设计思想,JAIN协议API产生的目的并不是直接用于开发最终业务应用;它的优势在于为私有的协议栈提供了标准化的接口,实现了网络硬件设备商和协议软件开发商的分离,有利于实现设备的互通,增加了设备的灵活性。因此,这里的应用并不是指提供给用户的业务,而是指呼叫控制逻辑。
目前,JAIN协议层API包括与PSTN相关的协议:TCAP,ISUP,INAP,MAP,以及与分组网相关的协议:SIP、MGCP、H.323、MEGACO等。