面向服務(wù)架構(gòu)SOA軟件產(chǎn)業(yè)新火種

字號:

SOA與構(gòu)件技術(shù)、軟件工程、軟件平臺、信息安全、可信賴計算、軟件產(chǎn)業(yè)等六個領(lǐng)域的關(guān)系既是SOA核心理念,也是其發(fā)展與應(yīng)用的基礎(chǔ)。
    應(yīng)用需求的快速發(fā)展帶動了計算機網(wǎng)絡(luò)技術(shù)的快速發(fā)展,其直接結(jié)果是產(chǎn)生了當前炙手可熱的網(wǎng)絡(luò)服務(wù)(Web Service)技術(shù),如何合理地把Web服務(wù)應(yīng)用到各類企業(yè)的IT系統(tǒng)和商業(yè)流程之中、并給企業(yè)帶來直接的經(jīng)濟效益,一直是備受國內(nèi)外企業(yè)管理者高度關(guān)注的課題。面向服務(wù)架構(gòu)(SOA,Service-oriented architecture)就是在此背景下出現(xiàn)的,SOA被譽為下一代Web服務(wù)的基礎(chǔ)框架,目前已經(jīng)成為計算機信息領(lǐng)域的一個新的發(fā)展方向。
      
    1996年,Gartner早提出SOA的思想,2002年12月,Gartner提出SOA是“現(xiàn)代應(yīng)用開發(fā)領(lǐng)域重要的課題”,預(yù)計到2008年,SOA將成為占有絕對優(yōu)勢的軟件工程實踐方法。Gartner為SOA描述的遠景目標是:在于讓IT變得更有彈性,以更快地響應(yīng)業(yè)務(wù)單位的需求,實現(xiàn)實時企業(yè)(Real-Time Enterprise)。一些IT組織已經(jīng)成功建立并實施SOA應(yīng)用軟件了,IBM等廠商也看到了它的價值,繼而紛紛跟進。
    SOA與構(gòu)件技術(shù)
    研究SOA,不能不關(guān)注軟件構(gòu)件技術(shù),“基于構(gòu)件技術(shù)提供網(wǎng)絡(luò)服務(wù)”是SOA的重要思想起源,做SOA研發(fā)的公司無不對構(gòu)件技術(shù)有一定研究。
      
    在SOA架構(gòu)中,流動的應(yīng)該是構(gòu)件,而不是已經(jīng)集成在一起的整個系統(tǒng)軟件。一個用戶選擇了一款軟件,一般都有定制的要求,尤其是系統(tǒng)管理軟件,如ERP、CRM等。構(gòu)件化技術(shù)為不同用戶的定制要求提供了可能,把常用功能做成可供選擇的構(gòu)件,用戶就有了更為靈活的選擇。沒有構(gòu)件化時,軟件系統(tǒng)的各個部分是緊密結(jié)合在一起的,因而會“牽一發(fā)而動全身”,采用了構(gòu)件化技術(shù)后,軟件的各個功能模塊就可以獨立地實現(xiàn)、升級,而不會影響系統(tǒng)整體。
      
    構(gòu)件技術(shù)與構(gòu)件化的概念是有區(qū)別的,構(gòu)件化的關(guān)注點不在于構(gòu)件本身的技術(shù)實現(xiàn),而在于如何把應(yīng)用系統(tǒng)分解成穩(wěn)定、靈活、可重用的構(gòu)件,在于如何利用已有的構(gòu)件庫組裝出隨需應(yīng)變的應(yīng)用軟件,從一個面向構(gòu)件的環(huán)境中去分析應(yīng)用,如何做出靈活、重用的構(gòu)件來思考。構(gòu)件化的目的在于帶動軟件工業(yè)化。
      
    但是,構(gòu)件技術(shù)則是構(gòu)件化的基礎(chǔ),它為構(gòu)件的工廠化生產(chǎn)提供技術(shù)保障。傳統(tǒng)的軟件方法學(xué)是從面向機器、面向數(shù)據(jù)、面向過程、面向功能、面向數(shù)據(jù)流等反映問題的本質(zhì);而構(gòu)件技術(shù)關(guān)注的是在軟件已經(jīng)可用的情況下,在高層次上的復(fù)用,如分布式異構(gòu)互操作。基于構(gòu)件的軟件設(shè)計方法學(xué)把應(yīng)用和實現(xiàn)分離,提供標準接口和框架,使軟件開發(fā)變成構(gòu)件的組合。基于構(gòu)的軟件方法學(xué)是以接口為中心、面向行為、基于體系結(jié)構(gòu)設(shè)計的,它要求:對構(gòu)件件要有明確的定義;用構(gòu)件描述語言和規(guī)范,如UML、微軟COM構(gòu)件技術(shù)中的IDL、科泰世紀CAR構(gòu)件技術(shù)的CDL。
      
    在基于對象模型描述的計算機網(wǎng)絡(luò)系統(tǒng)中,對象是基本的概念,分布協(xié)同的基本單元就是這些對象構(gòu)件。對象之間只能通過預(yù)先定義好的接口訪問,這些接口構(gòu)成連接客戶和服務(wù)器的協(xié)議。任何對象都可向其他對象請求或提供服務(wù)。SOA是一種基于對象的構(gòu)件計算模型,它將不同的功能單元通過預(yù)先定義好的接口和契約聯(lián)系起來。SOA的構(gòu)件計算模型決定了軟件系統(tǒng)構(gòu)架。在一個SOA系統(tǒng)中,提供具體服務(wù)的是一個實現(xiàn)相應(yīng)功能的構(gòu)件。
    SOA與軟件工廠
    作為面向服務(wù)的體系架構(gòu),當眾多用戶多次重用同一構(gòu)件、或者需要在不同構(gòu)件間進行互操作時,SOA需要提供一套統(tǒng)一的軟件標準或協(xié)議,用工業(yè)化生產(chǎn)的角度來看,SOA架構(gòu)需要支持軟件的工廠化生產(chǎn)。
    如果把軟件比喻成工業(yè)化產(chǎn)品,軟件工廠技術(shù)則包括軟件零件的生產(chǎn)、下載、組裝、使用、銷毀等重要環(huán)節(jié),軟件工廠的本質(zhì)在于提供一套統(tǒng)一的軟件規(guī)范:包括在各個環(huán)節(jié)中的軟件接口、標準或協(xié)議的制定原則、軟件零件的生產(chǎn)規(guī)范、網(wǎng)絡(luò)構(gòu)件的下載與安全管理、軟件零件的組裝規(guī)則、組裝完成后的運行機制、運行完成后的清理或銷毀原則等。只要大家依照這些規(guī)范進行開發(fā),就能夠保證軟件間的兼容性和互操作性,提高軟件的開發(fā)效率和質(zhì)量。
      
    經(jīng)過幾十年的發(fā)展,軟件編程理念經(jīng)歷了隨意編程、面向結(jié)構(gòu)、面向?qū)ο蟆⒚嫦驑?gòu)件、面向Web服務(wù)等階段。相比之下,Web服務(wù)為驚心動魄。Web服務(wù)之前的軟件體系結(jié)構(gòu),功能重用主要是通過源代碼級的封裝、繼承等特性來實現(xiàn);而Web服務(wù)則是通過基于動態(tài)目標代碼級的封裝、繼承,及元數(shù)據(jù)的自描述技術(shù)、AOP技術(shù)等來實現(xiàn)的。
      
    軟件工廠條件下的軟件積木式拼裝和零件化生產(chǎn)技術(shù)不斷成熟,理想的軟件工廠技術(shù)的標志性特征是基于目標代碼模塊的動態(tài)拼裝、動態(tài)運行、動態(tài)管理。以目標代碼為基本軟件模塊,展開對同一應(yīng)用軟件的跨操作系統(tǒng)平臺研究、展開同一應(yīng)用軟件的跨不同系統(tǒng)的集成運行環(huán)境的研究、展開不同應(yīng)用程序之間的二進制兼容與互操作研究,這些都是促進SOA發(fā)展與應(yīng)用的重要方面。
    SOA與軟件平臺
       在網(wǎng)絡(luò)環(huán)境下的面向服務(wù)的架構(gòu)中,支持網(wǎng)絡(luò)軟件運行的基礎(chǔ)平臺是很重要的,尤其是支持軟件跨平臺運行。Java虛擬機為Java程序的跨平臺運行提供了基礎(chǔ)環(huán)境。微軟的.Net技術(shù)則充分考慮了企業(yè)級應(yīng)用程序、尤其是由不同編程語言實現(xiàn)的應(yīng)用程序之間的兼容性和互操作。
      
    我國自主研發(fā)的“和欣”操作系統(tǒng)(英文名Elastos)創(chuàng)新性地實現(xiàn)了“CAR構(gòu)件技術(shù)”(CAR,Component Assembly Runtime),提供了高效率的構(gòu)件/中間件運行環(huán)境?!昂托馈笔峭耆嫦驑?gòu)件技術(shù)的操作系統(tǒng),其系統(tǒng)服務(wù)器都是以動態(tài)鏈接庫的中間件形式提供,如文件系統(tǒng)構(gòu)件、設(shè)備驅(qū)動構(gòu)件、網(wǎng)絡(luò)服務(wù)構(gòu)件等。CAR構(gòu)件技術(shù)完全面向下一代網(wǎng)絡(luò)服務(wù),提供了Windows、Linux上的構(gòu)件運行平臺,可實現(xiàn)“和欣”應(yīng)用程序和CAR構(gòu)件可以以目標代碼形式在Elastos、Windows(2K/XP/CE)、Linux操作系統(tǒng)上二進制兼容運行。
    SOA與信息安全
       美國總統(tǒng)信息技術(shù)顧問委員會的一份報告《計算機安全:轉(zhuǎn)折期的研發(fā)重點》(《Cyber Security:A Crisis of Prioritization》)中明確提到了:無止境的補丁不是解決問題的辦法。通過修正和重建網(wǎng)絡(luò)、計算機系統(tǒng)以及軟件來“增強”安全性和可靠性可能在短期是必要的,但是這些不足以滿足整個國家的網(wǎng)絡(luò)的安全要求,很難在已有復(fù)雜的系統(tǒng)中增加安全性的要求。即使一切好的防范措施都被充分地使用,如果對信息安全沒有本質(zhì)上的改變,我們?nèi)詫o止境地修補“堤壩上的漏洞”。因此,全新安全模式的研發(fā)需要從基礎(chǔ)軟件架構(gòu)開始。通過對這些年來的軟件安全問題進行計算模型上的分析,可以看出原有的軟件體系架構(gòu)已經(jīng)無法滿足日益復(fù)雜軟件系統(tǒng)對安全的要求,新的,更安全的軟件架構(gòu)呼之欲出,SOA就是新安全體系結(jié)構(gòu)的代表。
    傳統(tǒng)的軟件架構(gòu)并沒有在安全性方面進行系統(tǒng)級支持,這是由于在軟件產(chǎn)業(yè)發(fā)展的初期,人們更關(guān)心的是軟件的功能和效率,而對軟件的安全并不是很重視。隨著計算機和軟件開發(fā)技術(shù)的普及,軟件的安全隱患陸續(xù)暴露出來,從病毒、盜版、到蠕蟲,軟件的安全性面臨巨大的挑戰(zhàn)。PKI就是在這種背景下誕生的安全架構(gòu),其部分解決對于信息認證及反盜版方面的問題,但對于原有的軟件體系架構(gòu)自身的缺陷,PKI仍不能全面保護軟件和信息的安全,這也是大量*軟件存在的主要原因之一。
    在反病毒方面也存在同樣的問題,各大反病毒公司不斷推出新的反病毒軟件,發(fā)布新的病毒庫,但這一切并沒有防范新的病毒,反病毒公司不斷推出新的防病毒措施,電腦用戶為更新自己的防病毒軟件而疲于奔命,但電腦黑客們總能找到新的系統(tǒng)漏洞而進行攻擊。為什么會出現(xiàn)這種情況?是否有一種更好的信息安全的措施?分析一下傳統(tǒng)軟件的架構(gòu)可以發(fā)現(xiàn),傳統(tǒng)軟件架構(gòu)為了保持自由開放的特性,對軟件的執(zhí)行沒有限制,一旦軟件開始執(zhí)行,就會獲得相應(yīng)的系統(tǒng)資源,并且認為軟件的每個組成部分都是可靠的,而不管其中是否已經(jīng)感染病毒。常見的反病毒軟件也只能在軟件運行前對其進行檢查,而軟件一旦開始運行,各種反病毒措施也就失效。因此,反病毒軟件無法做到真正意義上的防范于未然。