我們常常說SOA需要解決如何落地的問題。這個(gè)難題無法一蹴而就,必須花費(fèi)很多時(shí)間才能逐步進(jìn)行解決。但在目前,我們已經(jīng)為SOA找到了一個(gè)著地的落腳點(diǎn),這就是SCA/SDO規(guī)范。
2005年11月, IBM、BEA、IONA、Oracle、S等幾家廠商就合作建立新的業(yè)內(nèi)規(guī)范來簡化 SOA 應(yīng)用發(fā)展達(dá)成了一致,共同發(fā)布了兩項(xiàng)針對(duì)SOA的重要構(gòu)件模型規(guī)范——SCA 0.9和SDO。此后,該團(tuán)體陸續(xù)吸引了Red Hat、普元、TIBCO等多家公司的加盟,形成了OSOA(Open Service Oriented Architecture)聯(lián)盟,目前成員數(shù)量達(dá)到18家。OSOA聯(lián)盟旨在為SOA起草一系列的規(guī)范,并以免版稅的許可方式提供給業(yè)界使用。AP
2007年3月,OSOA聯(lián)盟宣布了SCA和SDO規(guī)范中關(guān)鍵部分的完成,發(fā)布了SCA 1.0和SDO 2.1,并將其正式提交給OASIS,通過其開放式標(biāo)準(zhǔn)過程進(jìn)行推動(dòng)。
SCA規(guī)范旨在簡化服務(wù)的創(chuàng)建和合成,對(duì)于運(yùn)用基于SOA方式服務(wù)的應(yīng)用構(gòu)建十分關(guān)鍵。隨著SCA規(guī)范的完成,聯(lián)盟合作廠商希望將其標(biāo)準(zhǔn)化過程提交給OASIS。此外,聯(lián)盟廠商也已完成了SDO規(guī)范,旨在實(shí)現(xiàn)對(duì)多個(gè)站點(diǎn)中多種格式數(shù)據(jù)的統(tǒng)一訪問,并將把SDO基于Java的規(guī)范開發(fā)和管理提交給Java社團(tuán)過程(Java Community Process,JCP)組織,而基于非Java的規(guī)范(C++)提交給OASIS。
SCA和SDO規(guī)范能幫助企業(yè)更便捷地創(chuàng)建新的以及改造現(xiàn)有的IT資產(chǎn),使之可復(fù)用、易整合,以滿足不斷變化的業(yè)務(wù)需求。這些規(guī)范提供了統(tǒng)一服務(wù)的途徑,大大降低了在應(yīng)用開發(fā)過程中,因程序設(shè)計(jì)語言與部署平臺(tái)的不同而產(chǎn)生的復(fù)雜性。SCA和SDO規(guī)范都是用于簡化業(yè)務(wù)邏輯和業(yè)務(wù)數(shù)據(jù)呈現(xiàn)的新興技術(shù)。
“我們對(duì)OSOA聯(lián)盟取得這一里程碑成就,并選擇了在接下來通過開放標(biāo)準(zhǔn)過程繼續(xù)推動(dòng)這一重要工作表示歡迎和贊賞,”OASIS CEO和總裁Patrick Gannon說,“我們希望能進(jìn)一步推進(jìn)SCA規(guī)范,實(shí)現(xiàn)標(biāo)準(zhǔn)化,獲得最廣泛的行業(yè)應(yīng)用。”
OASIS不只是研究和產(chǎn)生標(biāo)準(zhǔn),同時(shí)也跟其他國際組織一起合作推動(dòng)標(biāo)準(zhǔn)的采用和技術(shù)的發(fā)展。通過十多年的努力,OASIS已經(jīng)得到廣泛的承認(rèn),可以直接向國際標(biāo)準(zhǔn)組織、國際電聯(lián)和聯(lián)合國相關(guān)標(biāo)準(zhǔn)組織直接提交標(biāo)準(zhǔn)提案。
SCA是一種規(guī)范,它使開發(fā)人員可以將注意力集中在業(yè)務(wù)邏輯的編寫上。更直接地說,它是一種大大改進(jìn)了的部署描述符,它可以使用任何語言而不限于Java。此外,編程人員還可以使用編程式語言和聲明式語言,比如BPEL和XSLT(eXtensible Stylesheet Language Transformation,擴(kuò)展樣式表轉(zhuǎn)換語言)。SCA的特別之處在于,它對(duì)安全性、事務(wù)和可靠消息傳遞之類的特性使用了聲明式策略的理念。
SCA是專門針對(duì)SOA設(shè)計(jì)的,而不像J2EE只是面向SOA做了修改。SCA關(guān)注的是如何描述按照各種編程模型和協(xié)議編寫的組件所組成的程序集。SCA允許開發(fā)應(yīng)用程序集而不考慮特定的API或具體語言。中間件
SCA的核心概念是服務(wù)及其相關(guān)實(shí)現(xiàn)。服務(wù)由接口定義,而接口包含一組操作。服務(wù)實(shí)現(xiàn)可以引用其他服務(wù),稱為引用。服務(wù)可以有一個(gè)或多個(gè)屬性,這些屬性是可以在外部配置的數(shù)據(jù)值。
SCA中的一個(gè)關(guān)鍵推動(dòng)因素是SDO(Service Data Object,服務(wù)數(shù)據(jù)對(duì)象)。SDO用于表示業(yè)務(wù)數(shù)據(jù)、參數(shù)以及服務(wù)調(diào)用的返回值,當(dāng)它遍歷服務(wù)網(wǎng)絡(luò)時(shí),它還是一種表示數(shù)據(jù)的方式。注意,也可以使用XML Beans及其他技術(shù)。
SCA組件被組成為程序集。程序集是服務(wù)級(jí)的應(yīng)用程序,它是服務(wù)的集合,這些服務(wù)被連接在一起,并進(jìn)行了正確的配置。SCA程序集運(yùn)行在兩個(gè)級(jí)別:第一種情況,程序集是系統(tǒng)內(nèi)的一組松散連接的組件;另一種情況,程序集是模塊內(nèi)的一組松散連接的組件。二者的區(qū)別在于,一般來說,模塊是組件的集合,而系統(tǒng)是模塊的集合。此外,系統(tǒng)對(duì)應(yīng)于“大規(guī)模編程”(programming in the large或megaprogramming),而模塊對(duì)應(yīng)于“小規(guī)模編程”(programming in the small),比如構(gòu)建當(dāng)今的典型應(yīng)用程序。
將組件連接到它所依賴的服務(wù)的方式就是服務(wù)網(wǎng)絡(luò)“裝配”的方式。程序集已經(jīng)在許多技術(shù)和框架中廣為應(yīng)用,比如CORBA、J2EE、ATG Dynamo和Spring,也就是說,它并不是新出現(xiàn)的。從這些技術(shù)中我們可以知道,程序集提供了許多重要的優(yōu)點(diǎn),比如更輕松的迭代開發(fā),以及避免使業(yè)務(wù)邏輯依賴于中間件容器。SCA使用程序集解決了許多SOA開發(fā)中的重要問題,包括:
*業(yè)務(wù)邏輯與底層基礎(chǔ)架構(gòu)、服務(wù)質(zhì)量和傳輸?shù)姆蛛x。
*“小規(guī)模編程”與“大規(guī)模編程”的聯(lián)系。
*為架構(gòu)的設(shè)計(jì)、編碼和操作性部署在自底向上(bottom-up)和自頂向下(top-down)兩種方法中來回切換提供了一種統(tǒng)一的方式。
Author: orangelizq
email: orangelizq@163.com
|
|