主机应用程序开发基础

来源:互联网 发布:ubuntu虚拟机网络设置 编辑:程序博客网 时间:2024/05/16 15:33

 

写在前面:本文是面向主机开发初学者的一篇基础教程,是作者在主机应用程序开发方面的经验的小结。花费力气整理出来,是希望能够抛砖引玉,给各位mainframe入门学习者一个较为准确的参考,并藉以增缺补漏,修正各种本人也理解不准确的地方。本文首发于mainframer.cn,另有完整版本备份于作者的个人blog: http://blog.csdn.net/simonjo;转载、引用请标明原文地址及作者blog,谢谢!
本文将以连载方式陆续更新。

如有错漏,请直接回复或联系作者simonjo1984@gmail.com本文论述仅为作者个人见解,并不代表IBM立场或技术之承诺。
0. 开始之前

IBM z系列服务器(俗称IBM mainframe、IBM大型机)是银行、保险业等高端用户核心系统的首选。它极高的交易吞吐量使得企业数据的中央集中式管理成为可能。完善的向前兼容机制使得客户能够在几个年代中保持其核心应用的稳定性,同时在不间断服务的前提下通过硬件升级来提升系统运行的性能。本文力图使用平实的语言,并通过实例的方式,来向开发者概要介绍主机传统联机和批量应用程序的开发环境,应用架构以及常用工具及数据模型。本文将一步步引导读者编写一个主机上简单的核心银行应用系统示例。最后,本文将介绍现代的IDE方式高效率的主机应用程序开发,以及银行业出现的新型架构的简单介绍。传统的主机联机应用程序开发采用COBOL语言,CICS中间件和DB2数据库;传统的主机批量程序开发采用COBOL语言和JCL作业控制语言。目前,新型的主机企业级系统采用更多的前端实现方式,如采用Websphere Application Server来实现B/S架构,但是运行在主机上的核心系统由于历史原因及效率考量,仍然大量采用传统架构。COBOL,CICS,DB2,JCL等工具并未被淘汰,而是在继续的蓬勃发展中。大型机在金融业的主要优势概括如下

  • 高吞吐量下的稳定性能:由于采用了独特的系统架构,CPU、内存集中于一整块芯片中,而I/O设备(俗称Shark,如DS8000等)采用渠道子系统(Channel subsystem)以光纤连接到处理中心(CP),I/O设备拥有自成一套的微码系统,有相当的独立性,从而使I/O操作不占用处理单元的处理时间;这样的系统特性,使得大型机尤其适合处理高并发、高流量的复杂金融交易。
  • 完善的向前兼容机制:大型机处理器从16位、31位发展到现在的64位,最初的16位程序仍可以通过兼容模式在最新的64位处理器和64位操作系统上运行,这对于金融系统的遗留程序和历史数据是至关重要的。
  • 可扩展性极强:由于采用了硬件的Coupling Facility,大幅降低了Sysplex的协同开销;这使得金融机构能够从容应对计算量随经济发展而增加的需求。
  • 成本优势:大型机的购置成本虽然比较高,但是由于每一台大型机的处理能力都相当于数千台开放平台的服务器,因此随着工作量的提高,大型机的成本并不会像开放平台服务器那样呈几何级数增涨,而是随一条平滑且增长率逐渐降低的曲线增涨;另外,由于大型机采用以MIPS计费的模式,因此金融机构可以不必为尚未用到的潜在计算量付费。
  • 极高的安全性:大型机采用先进的RACF来控制资源访问,并且有硬件加解密支持,加上采用封闭的操作系统,因此,俗语中的“hack a mainframe”意义就是“不可能完成的任务”;封闭的操作系统(z/OS)和内部网络通信协议(SNA),加上处理器级别的数据加密,以及物理上与广域网的隔离,都使得大型机成为金融系统构建安全数据中心的首选。
传统的主机联机应用程序开发多采用COBOL语言,CICS中间件和DB2数据库;传统的主机批量程序开发采用COBOL语言和JCL作业控制语言。目前,新型的主机企业级系统采用更多的前端实现方式,如采用Websphere Application Server来实现B/S架构,但是运行在主机上的核心系统由于历史原因及效率考量,仍然有大量的传统架构存在。COBOL,CICS,DB2,JCL等工具并未被淘汰,而是在继续的蓬勃发展中。现在,IBM推出了整合的开发工具套件:Rational Application Developer for System Z,使得开发人员不必再局限于24X80字符的16色界面开发复杂的金融应用程序,同时Websphere Application Server也使CICS能够在开放平台以富客户端形式访问,大大增加了金融系统的灵活性。

1. z/OS基本设施介绍

z/OS为应用程序开发内建了很多工具,这里我们介绍最常用的几种设施:JES:用于管理、调度主机作业,它类似于一个主机上的进程管理器,所有的提交的计算作业被置于一个池(SPOOL)中,拥有不同的执行状态。JES负责调度各个优先级、类别不同的作业先后得到处理器资源得以运行。SDSF是一个用来查看、配置JES SPOOL资源的工具,通常可以从ISPF的用户面板中找到SDSF的入口,JES中的作业:TSO:分时作业系统,一个命令行环境,使主机能够支持多个用户分时共享计算资源。TSO commands and command prompt:ISPF:基于文本菜单交互的程序开发环境,能够实现数据集操作、编辑、作业提交、系统管理等功能。通常可以通过在TSO命令行中敲入ISPF来进入ISPF面板,但是,各个具体的安装实例可以被customize成不同的入口。ISPF主屏幕:ISPF EDITOR:传统的基于行的编辑器,对几种主机上常见的传统语言(C,COBOL,PL/I,REXX等)支持高亮关键字、匹配括号等功能。

2. 传统批量应用程序开发

批量应用程序(Batch program)是指可以并发自动运行的大量作业程序。这类程序一旦提交,操作员一般无需与机器进行交互。这种操作常见于金融机构的结息、总账核对、支付系统清算等,以及大批量数据的迁移与备份。典型的批量程序,一旦开始运行,一般而言都将连续处理数个小时而不间断。简而言之,批量程序的特点就是,大操作、低并发、无交互、单次运行时间长。

批量程序架构比较简单,将程序编译好后,就可以直接以JCL方式引用(如图2.1)。主机所支持的任何程序语言,如COBOL,C, REXX等,基本都可以以批量形式调用。主机上使用最广泛的程序语言是COBOL。截止2005年,90%的金融类交易程序以COBOL语言编写,在所有商业程序中的比重亦估计高达75%(数据来自:http://www.theregister.co.uk/2007/01/05/developing_legacy_systems_part2/)。本文将以COBOL语言为例来介绍批量程序开发。

批量程序由JCL定义编译好后的执行模块名字及library顺序,使用SUB命令可以直接在ISPF Editor里面提交并在JES里面运行。批量程序可以直接操作文件、数据库等资源,并发性控制由文件管理器(例如SMS)和数据库管理器(例如DB2)实现。如需跟踪批量程序的状态,则需要进入SDSF查看系统SPOOL信息(如图2.2)。

 

原创粉丝点击