交通銀行香港分行實施 Linux 前端系統的開發手記

來源:互聯網
上載者:User
交通銀行香港分行實施 Linux 前端系統的開發手記
  2004 年被稱為是 Linux 應用推廣的開端之年。剖開曆史巨大的橫斷面,諸多的 Linux 應用項目如繁星,開始隱隱出現在巨大的蒼穹下。它們中的許多註定只是流星,划過天際,轉眼消逝不見。但回溯曆史,又有多少看似細微末節的小事件,卻具有開啟曆史巨變的因果機緣。

  2004 年年初,交通銀行中國香港分行和高陽科技有限公司決定聯合開發 Linux 前端系統,曆時共 8 個月。這是國內銀行業第一次在關鍵業務應用中大規模使用 Linux 平台。長期以來,大家對 Linux 是否適用於處理關鍵公司專屬應用程式一直存有疑慮,國外也少有先例。 Linux 正處於一個發展的瓶頸,只有開啟“應用”這個僵局,Linux 才會像奔流之水,浩浩蕩蕩,蔓延開來。因此,這個項目具有很好的實驗和示範效應。結合開發 Linux 前端系統的經驗,我們將從架構設計和技術手段兩個不同的角度來探討 Linux 應用開發所面臨的一些共性問題和解決辦法。希望記錄的這一點感悟與體會,不會被湮沒在漫漫曆史塵埃之中,而是為後來者貢獻一點微光,照亮他們繼續前行。

  “可定製”前端 VS“編程型”前端

  銀行是資訊化開展最早的行業,傳統的手工簿式記賬早已被電腦所取代。走進任何一家銀行網點,首先映入眼帘的,就是一排排電腦以及在電腦前忙碌的工作人員。這些部署在各營業網點或部門的電腦系統就稱作銀行網點前端系統,行內的人習慣稱其為櫃面系統。

  前端系統完成的功能極其複雜,既包括對輸入和輸出的展示和控制,也包括外設驅動、資料校正、通訊和代碼翻譯等功能、還需要實現諸如現金箱管理、交易沖正、對賬、報表列印、訊息通知以及交易的複核、授權等業務功能。

  Linux 前端系統除了要滿足上述功能之外,還把目標定位為一套“可定製”的前端系統,這有別於國內銀行普遍採用的所謂“編程型前端”。

  所謂編程型前端是指每一個交易都需要寫一個前端程式。隨著銀行業務種類和業務複雜度的增加,這種前端系統的弊病就顯露無疑了——程式人員不得不花費大量的時間來編寫數目龐大的前端程式,而且一旦業務變化或者要新增功能,又需要重新修改偵錯工具,從而影響了整個銀行電腦系統的穩定性和靈活性。

  “可定製”的前端系統是指使用者不需要編寫程式,利用前端系統的定製工具直接在電腦螢幕上設定輸入畫面和輸出格式,同時定義好流程,一個交易的前端部分就完成了。這種前端系統的優點顯而易見—靈活、易於擴充、維護方便。

  上個世紀 90 年代後期,逐漸有公司開始研發這種產品化的前端系統,比較著名的有高陽的 IFS ,藍天的 OFP ,以及韓國的 Efinax 和美國的 S1 TELLER 等系統。當然這些系統都運行在 Windows 或 Unix 平台上,在 Linux 上開發還沒有先例。

  舊系統:耶穌的十字架

  公司專屬應用程式開發,遇到的第一個問題就是如何?與舊系統的相容性。聖經記載,耶穌罹難之時,背上的十字架承載了過去一切的罪孽與苦難。同樣,舊系統也是任何新應用項目不得不背負的沉重十字架。開發公司專屬應用程式軟體不像平地起高樓,也不是在白紙上畫最新最美的圖畫,而是像舊城改造:要在一大片老城區中推倒一小塊,重起新樓,但同時又要適應原有的規劃布局,還要考慮道路的排列,地下管線的銜接。猶似建築學上的最高境界,不僅要新穎獨特,還要講求和周圍環境和諧統一。

  銀行前端系統只是龐大的銀行IT網路中的神經末梢,必須與資料中心的各後台業務處理系統相配合,才能完成銀行商務程序的處理。因此,替換前端系統就如同替換多米諾骨牌中的一張,同時又要保證其他骨牌不能倒掉。

  比較傳統和保險的做法是移植加改造。即盡量保留原來的程式架構不變,在這個基礎上增加新的功能或修改原來的處理邏輯。但對需要遷移到 Linux 平台上的應用系統而言,這種方法不太可行,主要原因在於平台間的差異。相對於原來運行在 Unix 上的系統, Linux 需要處理圖形化的介面;相對於在 Windows 或 OS/2 上啟動並執行系統,Linux 又是類 Unix 的核心,在事件驅動和訊息處理等機制上完全不同。因此,開發 Linux 前端系統只能另起爐灶,重新開始。但如何能將變化僅僅局限在系統內部,而不影響與其他業務系統的正確串連和整個 IT架構的穩定呢?

  方法一是採用快速原型法。先開發出一個滿足介面要求的原型系統,重點在介面模組,系統內部則只需要實現架構功能。在這個原型系統的基礎上不斷測試和調整,使其能實現原系統的所有介面功能,可以與其他舊系統無縫銜接。預先解決介面問題後,就完全屏蔽掉了外部的影響,以後的設計就可以專註於系統的內部結構。

  方法二是需要使用協助工具輔助進行大量的自動化的測試和驗證。例如:港交行的業務系統共有 34 個子應用,2000 多個交易,如果手工調試和測試每一個交易和功能點,工作量將會十分龐大。而且單靠人工,也無法進行精確的比對來確定系統啟動並執行正確性。而通過我們開發的一套調試工具和自動化的測試工具,就可以自動完成輸入資料的準備,類比交易流程,校正輸出結果等工作。

  技術模式:向左轉還是向右轉?

  Linux 應用開發所面臨的第二個問題通常是技術模式的選擇。站在技術的十字路口,道路向兩個方向延伸。一條路是採用瀏覽器模式 (Browser/Server),另一條路是採用傳統的 C/S (Client/Server) 客戶機模式,瀏覽器模式是如今比較流行和標準的架構,但 C/S 模式也有它的優勢,二者各有千秋,向左轉還是向右轉?其實,正所謂水無常勢,事無定規,一切皆取決於具體的業務需求和特點,不同的應用需要採用不同的路線。銀行前端系統的特性決定了 C/S 之路更合適一些。

  首先是前端系統對處理效率的要求高。瀏覽器模式走 HTTP 協議和使用 Java ,效率肯定比不上 C++ 實現的 C/S 架構,而且 C/S 結構可以充分利用 Client 的處理能力,在 Client 層就對資料進行處理,不用全部提交到 Server 端,這樣可以減少 Server 的負載和功能,使 Server 端具有很好的伸縮性,可以不囿於地區和行政架構的限制,部署在總分行到網點的任何一層,通訊模組則可以根據實際需求靈活配置。

  其次,C/S 模式對外設的處理比瀏覽器方便和強大許多,瀏覽器對外設的控制能力很弱,且不方便操作,而前端系統則會頻繁使用印表機、密碼鍵盤等外設。同時,採用 C/S 模式可以實現更靈活的處理,只需增加出口,就可以使前端系統更易於功能擴充。

  當然,瀏覽器模式的一大好處是 Client 端不用維護。但只要有完善的自動化的版本維護工具,C/S 模式下也可以解決這個問題。

  積木和郵局

  應用開發還必須解決的另一個大問題是採用何種系統結構,也就是如何劃分系統的層次以及如何將程式模組組織在一起。對於一個由成百上千個程式組成的龐大應用系統,如果設計不好,其內部就會像蛛網一樣,錯綜複雜,糾纏在一起,給系統的穩定性帶來較大的隱患。

  隨著物件導向設計方法的流行,利用類的封裝和繼承特性,可以方便地建立積木式的模組結構,使各模組間具有清晰和簡單的邊界,並採用一致標準的外部介面。但要實現這種松耦合的組合方式,就必須有一個在模組間負責傳遞訊息的樞紐,也就是實現一個類似“郵局”的功能。在 Windows 平台上,可以直接使用 Windows 的訊息機制。但 Linux 本身則沒有提供一個統一的非同步訊息調度機制,必須由應用實現該功能。因此,需要在應用程式層建立一個調度器(Dispatcher)和訊息佇列,其功能是實現一個抽象的“郵局”功能,根據各模組傳來的訊息類型和訊息代碼,把訊息轉寄給相應的模組進行處理。

  利用這種組件化的設計不僅使系統具備靈活、可組裝的產品特性,而且有利於分組設計和編程。

  同樣,那些與具體業務相關的功能和特殊需求也應該與普通處理區分開來,放入獨立的程式模組,通過動態庫的形式掛接到系統中,從而保證核心的穩定性和整個系統的可擴充性。

  雙刃 Linux

  解決好設計階段的幾個基本問題之後,接下來就需要利用 Linux 的介面和環境開發應用程式。

  Linux 是一把雙刃劍。

  “開源”是 Linux 最鋒利的刀刃。 “開源”使 Linux 能為大家所熟知和瞭解,在 Linux 上開發應用軟體可以充分利用作業系統的特點和優勢,避免各類軟體陷阱,使應用軟體不僅在效率上,而且在穩定性和安全性等許多方面都能夠得到進一步提升。

  同樣,由於 Linux 具有非常靈活的配置特性,可以把 Linux 作業系統和應用軟體打包做在一起,進行統一的版本升級、管理和維護。從而避免了由於作業系統和應用軟體分離和不匹配而帶來的維護上的困難。

  還有,Linux 擁有最廣泛的硬體支援。利用這種特性,Linux 前端系統實現了可以同時支援字元終端、普通 PC 和 NC 三種客戶機模式。

  但是,Linux 的刀刃也有傷及自身的時候。Linux 根植於深厚的駭客文化土壤之中,開源社區的駭客們習慣於單兵作戰,而且喜歡從最底層開始編碼,但企業級的應用軟體卻需要大規模的協同開發,而且是盡量利用現有的函數庫和類庫來迅速構建應用。Windows 之所以能佔據 99% 以上的案頭系統市場,VB 、DELPHI 這樣的快速開發工具功不可沒。而 Linux 這十年來儘管讚譽很多,卻始終未能得到迅速的推廣和普及,其原因就是缺少像 VB、DELPHI 這樣的集開發、調試、測試和管理於一體的 IDE (整合式開發環境)工具。

  因此,進行 Linux 應用開發必須擯棄習慣的開發方法,盡量選擇簡單易用,並能實現協同工作的開發工具。2003 年 Borland 公司推出了基於 Linux 的 IDE 工具軟體 Kylix 。使用介面和類庫與 DELPHI和C++ BUILDER 基本相容。Kylix 秉承了 BORLAND 公司其他產品一致的特點,簡單、方便、快速,而且提供了強大的類庫支援。根據我們使用的經驗,使用Kylix開發應用軟體比其他編程方法在效率上高兩倍以上,而且工程品質也能得到大大提升。

來自:SOHU

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.