簡介
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 <regionname>
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結構如下圖所示。
界面層分為櫃員終端界面和自助設各界面,均採用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)顯示。