zoukankan      html  css  js  c++  java
  • cics,一个即将退伍的老兵

     
     
    CICS
    这个玩意我想很多人都没有听说过。
    也有很多人听说过没用过。
    可是我就是弄这个东西弄了几年。

    其实它也就是一个即将消失的产品,一个即将推出IBM产品历史舞台的产品。
    目前在国内,也就是几大总行,各个商业银行,移动,还有一些社保在使用。

    但是这个产品可以堪称是IBM里面出了AIX之外的最悠久的产品,也曾经为IBM贡献了累累的利润,
    也曾经在银行行业横行了不少年。

    他的对手就是bea的tuxedo。

    但是bea得tuxedo在bea内部的被重视肯定比cics在ibm内部的被重视的程度要多的多。

    我在ibm的cics第一人的兄弟就这样幽幽无奈地如是说。

    我看着他鬓角的几许白发感觉到英雄的迟暮的无奈和岁月的无情。

    到了这个岁数,很多人在自己单位内部依然地位不可撼动,很多人已经有了自己的事业。。。。

    可是外企就是很现实的地方,当你对外企没有价值的时候,其处境可想而知


    CICS简单地说来就是个古老的产品,到处透着一股80年代初的IT的味道。

    首先他是主机之上的产品。主机就是大机。

    而我们目前所说的CICS就是开放平台的产品,说白了就是除主机之外的平台上的。

    IBM很怪,不知道他怎么想的,也许人家家大业大,凡是从主机上下来的产品,似乎就不再珍贵了,发扬光大,继续完善的劲头总是那么缓缓的,
    一点不像业内其他的公司。

    首先CICS只是一个小小的嵌套,里面主要的部件就是encina

    encina以前是美国匹兹堡的transarc的产品,就是做开放平台的中间件的公司,
    注意,
    那个时候说开放平台的概念主要是DCE
    目前DCE已经难觅踪迹了。           

    当IBM将CICS从主机往开放平台转的时候,他们就看中了transarc

    其实在cics中,主要起作用的就是encina

    它起着这些作用

    ●日志服务
    ●交易管理
    ●可恢复文件
    ●卷管理
    ●交易通信
    ● XA数据库集成
    ● 结构化文件服务器(SFS)

    那么再看CICS的作用呢
    其实就是提供了编程的API和对encina的调用

    encina就是CICS的内部主要部件,
    比如很重要的XAD就是由它来管理的。

    CICS也叫主机的事务管理软件。

    但是我觉得它最重要的还是对多数据源的处理,说白了就是XAD规范的实现化。

    在CICS来说,数据源可以使文件,队列,DB,MQ,打印机,还有其他等等数据源。

    而ENCINA的认为的文件还是他那个时代的文件,

    就是类似于VSAM文件的面向记录的文件,而不是字节流的文件。

    在他的文件里面,有各个字段和索引,还可以分成集群索引等等,
    你会发现一个文件就像一个数据库一样,你可以这样理解,虽然它不完全是,但是从迅速理解的角度来看,你完全可以如是理解。

    在他的文件类型里面,他又分,
    KSDS
    ESDS
    RRDS

    这些文件,对于各商业银行,几乎不用,现在谁还会把数据放在这个里面呢?

    现在基本都是直接把数据放在DB里面或者传给其他系统的队列了。

    从这里,你就看到了一个蜘蛛网密布的古老的地下室里面的各种古董了。

    但是在那个时代,encina还是为这些文件提供了各种操作命令,
    包括添加索引,创建集群索引文件,维护索引等等。

    encina里面有很多的命令,
    但是这些命令的前提是你得把数据放在他的文件里面。如果你不把数据放在它的文件里面。那么这些命令就没有意义。

    在老一点的CICS版本中,DCE又是一个重要的组件。

    DCE提供了CICS对象和SFS对象之间的命名规范和通讯控制。

    encina的DCE还是分成了很多协议的。只是目前在国内,只是RPC的。

    DCE的命名规范就是以/.:/开头的,很陌生吧!

    然后在CICS里面还有一堆网关的设置,这些网关的设置只是为了和后面怪物一样的主机的上面的CICS进行联系的桥接。

    从此可以看到,CICS就像是主机CICS上面的一个子集。

    IBM就是这样,凡是从主机上面拿下来的产品,总是留着很多办法来和主机的相关产品来联系。

    CICS是个 标准的3层架构的产品。

    前端的客户端的重点就不再是我们熟悉的浏览器了。

    而是我们去银行柜台办业务的时候看到的绿色的那玩意,

    不错是,是那玩意,那就是3270等终端,就是终端的概念,早期的这些终端都是跑在sco上面,
    而如今sco都没有了。

    为了在在这样的屏幕上面来显示数据,那个时候都是用BMS这种东西来规划屏幕的显示的,

    我想这个BMS也是大家所很陌生的。

    说白了,BMS跟网页页面设计一样,就是帮屏幕化成条条道道的。

    只是在不同的程序调用的时候,都要做些这样的设计。

    不过说实话,除了不能可视化做这些屏幕设计,BMS的方式你一旦理解了之后,效率还是很高的。


    如同db2里面的实例,was里面的profile,weblogicL里面的domain一样,
    cics里面是region
    region也跟was一样跑的是app server

    要是我们中国人设计一个产品软件,就搞个“省”来作为一个大的概念,反正要整点中国特色来。对不对?

    只是不同was,was是专门跑java的,所以was里面有一堆调节java的东西的接口

    cics主要是c

    不同的region可以跑在同一个encina上面

    所以玩cics,c要好,否则会比较痛苦。

    虽说现在CICS现在也支持java什么的,但是实现的并不是那么丰富。

    encina里面也有队列,而且分的很细,

            cics01cicsnlqfile
            cics01cicsnrectsqfil
            cics01cicsplqfile
            cics01cicsrectsqfile
            cics01cicstdqlgfile
            cics01cicstdqnofile
            cics01cicstdqphfile

    当然不同的文件有不同的作用。

    encina的队列分成tdq和tsq

    从名字可以看出,tsq主要是临时的,就像DB里面的临时表一样。

    region的定义主要是通过database目录下面的各个定义目录来设置。

    每个定义里面都有一堆的参数,这些参数cics也提供了命令方式我设置和修改,但是我都是直接修改文件。

    在这些参数里面,你能看到很多你不熟悉很陌生和头痛的东西,这些古老的东西呀。

    在安全里面

    cics的安全是用键值这个概念来的,也很陌生,而且是2个层次,事务的和资源的层面。

    键值就是什么12345的,想来你觉得很好玩很简单,但是自己下去,你就觉得不是那样了。
    这个我们目前的很多产品里面的安全里面的什么用户,组,权限,角色呀又不一样了。

    但是来看cics的开发却是很简单的,主要就是那么多的api

    特别又出来了easycics,简直就是类似于火狐里面的一个强力插件一样,

    非常好使和简化。

    将cics得开发又变得更加人性化和简单了。

    同样是中间件

    那么cics也有集群的概念。

    对它来说就是叫workloadmanager
    简称wlm

    但是很不好用

    7.1之前的简直异常难用,国内真正在用的用户少之又少。

    很多用户就是做了变通,用不同的region来连不同的客户端

    wlm的概念和体系还是比较复杂的。

    一大堆,什么wcm.wap.plex,

    请求发到cicsclient的region上面,去wcm和wap里面去找路由信息

    然后再从定义的出口程序里面去分发出去,

    要命的它不像was的集群那样左右开弓,

    而且出口程序的算法被班加罗尔的印度人整的比较复杂,除非加了仿真的实际压力,否则很难看到我们希望看到的左右开弓比较均衡的效果。

    当然wlm的设置还是比较复杂的。

    12:30了,我就不往下写了,总之开放平台CICS的像主机CICS的一个子集一样,

    你不能说它有多好,也不能说它有多差。

    初接触,你会觉得这玩意咋那样各异,但是随着你深入精通之后,你又觉得它的功能还是很强大的。

    总之他有他的缺点,也有他的优点。

    不能一棒子打死,

    只是以后新上的系统里面用cics可能越来越少了。

    但是目前的现状是国内很多金融机构的关键事务的中间环境还是跑在上面。

    回头来看,cics已经走了30多年的时间了,

    让我们像这个即将退伍的老兵挥手道别吧。

    也让我们拭目以待ibm在主机事务的中间件上面是准备有什么新的打算吗?
  • 相关阅读:
    SpringBoot 系列教程 web 篇之自定义请求匹配条件 RequestCondition
    SpringBoot 系列教程 JPA 错误姿势之环境配置问题
    react中constructor()和super()的具体含义以及如何使用
    原生js之canvas时钟组件
    js求和运算在可变参数的情况下ES3、ES5和ES6的写法区别
    好用的jquery.animateNumber.js数字动画插件
    sublime text3中设置Emmet输入标签自动闭合
    原生js移动端列表无缝间歇向上滚动
    原生js实现preAll和nextAll方法
    基于SwiperJs的H5/移动端下拉刷新上拉加载更多
  • 原文地址:https://www.cnblogs.com/jackhub/p/3147185.html
Copyright © 2011-2022 走看看