CICS其全称是 Customer Information Control System,即客户信息控制系统。是一系列为应用提供
联机事务处理和事务管理的产品,其功能是为商业应用提供一个事务处理环境,帮助客户建立三层次结构的联机事务处理应用,CICS 有效地区分应用系统中的表述逻辑层、业务逻辑层和数据逻辑层,从而使应用系统结构清晰,维护简单易行。
简介
CICS其全称是 Customer Information Control System,即客户信息控制系统。是一系列为应用提供
联机事务处理和事务管理的产品,其功能是为商业应用提供一个事务处理环境,帮助客户建立三层次结构的联机事务处理应用,CICS 有效地区分应用系统中的表述逻辑层、业务逻辑层和数据逻辑层,从而使应用系统结构清晰,维护简单易行。
CICS 是IBM 公司的强大主机交易服务器、集成平台,在全球C、C++、COBOL等交易中间件市场上占有绝大多数客户。CICS有超过30年的历史,开发于在IBM英国的赫思里(Hursley)研发中心。CICS英国式发音是“kiks”。在AIX、HP等分布平台上的CICS叫Txseries。交易服务器也叫交易处理中间件。支持联机交易服务(OLTP),提供用户实时的交易请求与响应,支持分布式交易服务、多个数据源、异种数据源、和分布式协同应用,支持两阶段提交。
历史
CICS之前是一个较早的单线程事务处理系统IBM MTCS。后来开发了“MTCS-CICS”,允许这些事务在CICS下执行,而不改变原始的应用程序。
CICS最初是在美国伊利诺伊州Des Plaines的IBM开发中心在1966年开发的,旨在满足公共事业行业的要求。第一个CICS产品于1968年发布,名为公用事业客户信息控制系统或PU-CICS。很明显,它已经适用于许多其他行业,所以公共事业的前缀被删除,引入了CICS 计划产品的第一个版本在1969年7月8日,不久之后的IMS 数据库管理系统。
1970年初,许多原始开发人员,包括早期版本的
首席架构师本·里金斯(Ben Riggins)搬到加利福尼亚州,并继续在IBM的帕洛阿尔托发展中心进行CICS开发。直到联邦法律要求软件分拆之后,IBM高管才将软件中的价值视为创收产品。在1980年,IBM的高管们没有听从Ben Riggins强烈的建议,即IBM应该提供自己的基于EBCDIC的操作系统和集成电路微处理器芯片,用于IBM个人计算机作为CICS
智能终端(而不是不兼容的英特尔芯片,由于该时代甚至大型处理器的容量有限,每个CICS安装都需要在完成类似于系统生成(sysgen)(称为CICSGEN)的过程之后组装所有CICS系统模块的源代码,以建立条件汇编的值语言陈述。此过程允许每个客户从CICS本身排除其不想使用的任何功能的支持,例如未使用终端类型的设备支持。当硬件价格非常昂贵时,CICS的早期受欢迎程度相对较高,其多线程处理架构,开发基于终端的实时交易应用程序的相对简单性以及许多开源客户贡献,包括调试和功能增强。
1974年,CICS的发展责任转移到英国的IBM Hursley网站,随着印度,中国,俄罗斯,澳大利亚和美国的实验室,开发工作继续进行。
1986年,IBM宣布CICS支持由分布式数据管理架构(DDM)定义的面向记录的文件服务。这使得远程网络连接的计算机上的程序能够创建,管理和访问以前仅在CICS/MVS和CICS/VSE事务处理环境中可用的文件。
原理
CICS是一个
联机事务处理平台软件,它帮助客户建立三层次结构的联机事务处理应用。一般的操作系统设计会首先考虑对硬件如内存,硬盘等资源的控制和利用,对进程和线程的管理,以及其它一些基本设施和功能。操作系统一般对批处理作业有相当好的支持,而对于大量的随机性的,对响应时间要求甚高的联机事务处理,客户则通常寻求专门的联机事务处理平台软件的支持,CICS则是此行中的佼佼者。
事务处理的通俗称法为交易处理,常有人将事务处理和数据处理混淆起来,但事实上事务处理和数据处理有本质的区别,事务是指在某一事件中,参与事件的各主体均发生了状态的变化,而所有状态的变化集合起来,称为一个事务。
关系型数据库软件如DB2、Oracle等服务的对象是数据,而CICS软件服务的对象是事务。
在事务过程的模式中,如订票系统,最终用户需要的是能否卖票,能否退票,并不关心在卖票或退票事务中改变了哪些数据,由于数据库服务软件提供的是数据服务,所以仅基于数据库服务软件的事务处理系统需要客户完成相当多的工作,实际上相当于客户自己来完成一个事务处理软件,或者客户只能构建一个两层次结构的处理模式,因此客户或者发现其应用的开发维护的难度增大了,或发现其开发的进度拖延了,或发现其应用和数据的安全性不尽如意,要解决这些问题其实容易,客户需要的是一个象CICS这样的事务处理软件,建立一个三层次结构的应用系统。
应用服务
CICS的以下组件支持应用程序开发。
1、基本映射支持(BMS),提供与设备无关的终端输入和输出。
2、数据交换计划(DIP),为IBM 3770和IBM 3790可编程器件提供支持。
3、2260兼容性,允许为IBM 2260显示设备编写的程序在3270显示器上运行。
4、EXEC接口程序 -,将EXEC CICS命令生成的调用转换为CICS函数的存根程序。
5、内置函数 ,包括表搜索,语音转换,字段验证,字段编辑,位检查,输入格式化,加权检索等。
命令
1、 启动CICS域。
cicscp -v start region regionname StartType=cold
其中 -v 表示显示启动过程信息,StartType=cold 表示使用冷启方式,需要特别注意的S和T必须大写,如果是热启,则不需要加上此参数。
2、启动SFS服务器。
cicscp -v start sfs_server /.:/cics/sfs/SFS服务器名 StartType=cold
其中/.:/cics/sfs/主机名 为SFS服务器的缺省名字,也可以是客户自己选择的名字。同样 StartType=cold 表示使用冷启方式。冷启SFS_SERVER 一定要慎重,因为它将清空所有SFS服务器上的文件,临时存储队列,临时数据队列。
3、如何查看CICS 和SFS服务器状态。
cicslssrc -a | grep cics
此命令只适用于unix 平台,对于NT平台,只需用Txseries administration utility 图形界面即可。
4、即时查看CICS系统信息,此信息来自于console.nnnnnn 和CSMT.out 的信息。
cicstail -r
5、停止CICS 域
cicscp -v stop region regionname
6、停止 SFS服务器。
cicscp -v stop sfs_server SFS 服务器名
7、增加,显示,删除,修改cics 资源定义。这里以程序为例。
下例是将向REGIONA中加入一个名为PROGRAM1的程序定义。
cicsadd -c pd -r REGIONA PROGRAM1 PathName=prog1 RSLKey=public
其中 PathName=prog1 表示可执行的CICS服务器程序位于/var/cics_regions/REGIONA 目录下,RSLKey=public 表示任何用户都可访问。
下例是显示刚才加入的程序定义:
cicsget -c pd -r REGIONA PROGRAM1
下例是修改此PROGRAM1 程序定义的属性RSLKey,
cicsupdate -c pd -r REGIONA PROGRAM1 RSLKey=2
RSLKey=2 表示 程序的资源安全键修改为2。
下例表示删除此程序定义。
cicsdelete -c pd -r REGIONA PROGRAM1
详细的命令参数含义请参考CICS文档 《CICS Administration reference》。
8、停止CICS 域
cicscp -v start region
9、 停止 SFS服务器。
cicscp -v start region
举例
结构
在金融业省域或全国数据大集中的背景下,银行业务处理系统要求既能实现高并发度的联机交易,又能完成大量的批处理:既有稳定、高可用、不间断的交易服务,又需灵活多变的高扩展性;既要保证系统安全,又要兼顾操作简便,对联机业务的数据处理要求高并发度且响应时间短,但数据量小,数据访问的频度分布不均,高频度访问的数据分布空间小,低频度访问的数据分布空间大,所以,在联机交易设计中引入CICS中间件,可以构造一个由界面层、业务逻辑层、数据服务层组成的3层软件体系结构来满足系统需求。3层Client/Server结构如图1所示。
界面层分为柜员终端界面和自助设各界面,均采用TCP/IP通讯协议与运行中心连接,利用CICS构成Client/Server结构,与业务逻辑层的接口是交易输入区和交易输出区。业务逻辑层也称为应用服务器层,分为
系统控制层和业务处理层。系统控制层负责系统控制、重要核算工具管理和交易调度,利用CICS统一进行联机交易的事务管理;业务处理层完成各应用系统的交易处理。业务逻辑层与界面层通过TIA和TOA实现数据交换,而业务逻辑层中各模块间通过CICS的交易工作区(TWA)实现数据交换。数据服务层负责数据资源的管理,它与业务逻辑层的操作接口是ESQL/C。业务逻辑层与数据服务层在CICS的控制下协同完成事务管理功能。
客户端编程
客户端通过外部调用接口(ECI)使客户机上运行的非CICS应用程序能同步或异步地调用服务器中的CICS应用程序,将数据块传递到服务器中的CICS区域,无需任何特殊的通信代码,CICS的一个完整交易包括:客户端发起交易请求,把需要调用的服务器程序名和数据通过通讯存储区传给服务器程序,CICS则在服务端唤起相应的服务程序并在第一个可用的应用服务器(As)进程的缓存中运行,最后把结果通过通讯存储区返回到客户端。当交易运行失败时,CICS对数据的修改会自动回滚,而无论数据分布在何地,这就保证了数据的一致性。一个金融交易对应CICS的一个交易,编程时一般使用ECI的同步调用方式,等待CICS的服务端执行完成以后,程序控制权才交还给客户端程序。SCOUNIX的客户端一般是用C语言编程。
CICS的客户端编程还可使用外部显示接口(EPI),它使客户机上运行的应用程序能调用服务器上的CICS事务如同从3270终端启动,返回的数据流可在
图形用户界面(GUI)显示。