前言:想要寫(xiě)出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇soa技術(shù)范文,相信會(huì)為您的寫(xiě)作帶來(lái)幫助,發(fā)現(xiàn)更多的寫(xiě)作思路和靈感。
李安渝博士
IBM中國(guó)軟件開(kāi)發(fā)中心高級(jí)工程師、IBM院士 王云
OASIS國(guó)際組織總裁兼首席執(zhí)行官Patrick Gannon
主持人:
《中國(guó)計(jì)算機(jī)報(bào)》常務(wù)副社長(zhǎng)兼總編 盧山博士
對(duì)話嘉賓:
OASIS國(guó)際組織總裁兼首席執(zhí)行官 Patrick Gannon
IBM中國(guó)軟件開(kāi)發(fā)中心高級(jí)工程師、IBM院士 王云
BEA中國(guó)有限公司企業(yè)解決方案部門經(jīng)理 劉松
神州數(shù)碼研究院院長(zhǎng) 李安渝博士
soa今天談?wù)撏聿煌?/p>
SOA概念是十年以前,也就是1996年由Gartner公司提出來(lái)的。一眨眼十年過(guò)去了,現(xiàn)在談?wù)揝OA晚不晚?
Patrick Gannon:我認(rèn)為不晚,因?yàn)檐浖こ淌窃谧罱@幾年才逐步朝構(gòu)建和模塊化的方向發(fā)展,慢慢地大家理解到軟件可以有不同的模塊或者是應(yīng)用來(lái)把它集成起來(lái)。在五年前,Web服務(wù)這個(gè)標(biāo)準(zhǔn)才逐步成熟。Web服務(wù)這些標(biāo)準(zhǔn)體系逐步成熟以后才能對(duì)SOA全面的采用提供一個(gè)保障。
王云:我們做很多技術(shù),即便是同一個(gè)領(lǐng)域、同一個(gè)觀念,它在本質(zhì)上也有相當(dāng)大的不同點(diǎn)的。所以我們現(xiàn)在談到SOA的體系架構(gòu)跟十年前有相當(dāng)大的差異性,所以完全不晚。
SOA革了誰(shuí)的命?
不管是BEA還是IBM,往往都會(huì)提一個(gè)觀點(diǎn),即中間件時(shí)代已經(jīng)結(jié)束了,現(xiàn)在是SOA的時(shí)代。但他們?cè)?jīng)都是中間件的倡導(dǎo)者,而且是主流供應(yīng)商。那么,SOA革了誰(shuí)的命?
王云:從IT從業(yè)人員角度來(lái)看,SOA是我們的自救。SOA是一種架構(gòu)、一種思維方法,但是把這個(gè)架構(gòu)形態(tài)要付諸于實(shí)施時(shí)不僅是軟件或者是中間件這個(gè)層次,而且應(yīng)該包括應(yīng)用到中間件,甚至包括到系統(tǒng)全程。
李安渝:應(yīng)該從三個(gè)層面來(lái)看SOA的革命。從最高層面看,SOA就是服務(wù)廠商革技術(shù)廠商的命;在架構(gòu)師層面上,SOA是從商業(yè)的業(yè)務(wù)需求往下做系統(tǒng)分析的一種思考方法;而在實(shí)施工程師層面,SOA實(shí)際上就是標(biāo)準(zhǔn)化。
面對(duì)SOA的機(jī)會(huì)
SOA的黎明還沒(méi)有真正到來(lái),一旦這個(gè)黎明普照中國(guó)大地,中國(guó)什么樣的企業(yè)有可能部署SOA?
李安渝:中國(guó)有可能在SOA的變革中成為一個(gè)比較快的跟隨者。如果一個(gè)信息化比較成熟、部署的已經(jīng)比較完備的國(guó)家來(lái)說(shuō),已經(jīng)設(shè)計(jì)好了,再重新裝修你的房子就比較難一點(diǎn)。中國(guó)相對(duì)來(lái)說(shuō)比較空白,所以在推出一個(gè)解決方案時(shí)還有很多空間可以重新思考和設(shè)計(jì)。我們現(xiàn)在看SOA在中國(guó)最有可能成功的領(lǐng)域就是電子政務(wù)。除了政府之外,在金融和電信領(lǐng)域也可能會(huì)早期實(shí)施SOA。
當(dāng)然,中國(guó)企業(yè)要成功部署SOA還面臨一些挑戰(zhàn)。首先,SOA有一個(gè)很重要的理念是服務(wù)之間要協(xié)同,要能夠?qū)?shù)據(jù)進(jìn)行標(biāo)準(zhǔn)的交換。對(duì)于電子政務(wù)來(lái)講,政府和部門之間的數(shù)據(jù)交換,除了技術(shù)之外還有很多行政的原因。而第二個(gè)挑戰(zhàn)則是實(shí)施單位的設(shè)計(jì)理念。因?yàn)檫^(guò)去大家都被技術(shù)廠商灌輸設(shè)計(jì)方法,BEA灌輸BEA的設(shè)計(jì)方法,微軟灌輸微軟的設(shè)計(jì)方法,這樣使他在考慮設(shè)計(jì)時(shí)會(huì)從技術(shù)來(lái)考慮,這時(shí)要調(diào)整他的思路,先從客戶需求來(lái)考慮整個(gè)系統(tǒng),然后再選擇哪個(gè)技術(shù)方案、哪個(gè)技術(shù)架構(gòu)最適合客戶系統(tǒng)的實(shí)施。
SOA的未來(lái)是EDA?
很多人提出――OOP代表著過(guò)去,SOA代表著現(xiàn)在,EDA代表著未來(lái)?
Patrick Gannon:SOA實(shí)際上是把對(duì)象技術(shù)往下推動(dòng)的延續(xù),并不是說(shuō)對(duì)象沒(méi)有了,或者是完全否定了OOP的思想,只是提到另外一個(gè)高度。一旦我們有了模塊化、構(gòu)件化的軟件以后,就可以按照標(biāo)準(zhǔn)進(jìn)行組裝、進(jìn)行排序,來(lái)滿足不同的商業(yè)需求。最終用戶可以用業(yè)務(wù)流程、管理工具把這些構(gòu)件、模塊組裝起來(lái),在里面設(shè)計(jì)一些關(guān)鍵事件,用關(guān)鍵事件來(lái)推動(dòng)整個(gè)流程的運(yùn)行,這個(gè)我們就叫它SOA?!?/p>
李安渝:我的理解,EDA實(shí)際上是SOA再往下走的自然延伸,它是在架構(gòu)設(shè)計(jì)師這一層很重要的理念,而EDA就是業(yè)務(wù)人員――客戶怎么用SOA這個(gè)系統(tǒng),或者說(shuō)他怎么提出SOA這個(gè)系統(tǒng)需求時(shí)考慮的問(wèn)題,就是用關(guān)鍵事件來(lái)推動(dòng)整個(gè)業(yè)務(wù)流程。
SOA與開(kāi)放標(biāo)準(zhǔn)
SOA很重要的特性是能夠讓你對(duì)軟件的投資有長(zhǎng)期的保值性,能夠避免重復(fù)投資,可以讓你的軟件模塊可以重復(fù)地使用。
論文摘要:本文主要針對(duì)吉林移動(dòng)現(xiàn)有系統(tǒng)存在的某些弊端展開(kāi)分析討論,同時(shí)結(jié)合SOA技術(shù)對(duì)目前存在的問(wèn)題提出解決建議。
1前言
SOA,面向服務(wù)的體系結(jié)構(gòu)。簡(jiǎn)單的說(shuō),SOA 是服務(wù)的集成模式,它將不同的業(yè)務(wù)作為鏈接服務(wù)或可重復(fù)業(yè)務(wù)任務(wù)進(jìn)行集成,可在需要時(shí)通過(guò)網(wǎng)絡(luò)訪問(wèn)這些服務(wù)和任務(wù)。這個(gè)網(wǎng)絡(luò)可能完全包含在您的公司總部?jī)?nèi),也可能分散于各地且采用不同的技術(shù),通過(guò)對(duì)來(lái)自部門的服務(wù)進(jìn)行組合,可讓最終用戶感覺(jué)似乎這些服務(wù)就安裝在本地桌面上一樣。需要時(shí),這些服務(wù)可以將自己組裝為按需應(yīng)用程序——即相互連接的服務(wù)提供者和使用者集合,彼此結(jié)合以完成特定業(yè)務(wù)任務(wù),使您的業(yè)務(wù)能夠適應(yīng)不斷變化的情況和需求(在有些情況下,甚至不需要人工干預(yù))。
2 吉林移動(dòng)應(yīng)用系統(tǒng)現(xiàn)狀
目前,中國(guó)移動(dòng)所開(kāi)發(fā)應(yīng)用的系統(tǒng)有很多,除了辦公系統(tǒng)以外生產(chǎn)系統(tǒng)主要分為三類:第一類是Basic System(基礎(chǔ)系統(tǒng)),這類系統(tǒng)主要是監(jiān)控設(shè)備是否正常運(yùn)行的。而這些系統(tǒng)都是設(shè)備廠家自己開(kāi)發(fā)的,是因廠家的不同而不同,鑲嵌在設(shè)備本身的,沒(méi)有辦法控制。第二類系統(tǒng)是Application System(應(yīng)用系統(tǒng)),主要是采集由各個(gè)廠家設(shè)備的基礎(chǔ)系統(tǒng)所提供的一些諸如告警,設(shè)備配置等信息,而后經(jīng)過(guò)分析形成一些指標(biāo)。通過(guò)各種指標(biāo)我們可以了解所有設(shè)備的運(yùn)行情況,解決和處理問(wèn)題。最后一類系統(tǒng)是Presentation System(呈現(xiàn)系統(tǒng)),此類系統(tǒng)是對(duì)各種應(yīng)用系統(tǒng)的呈現(xiàn),向管理層提供各種報(bào)表數(shù)據(jù)等,管理層通過(guò)這些數(shù)據(jù)報(bào)表進(jìn)行分析,從而進(jìn)行有針對(duì)性并且行之有效地決策。
目前,這三類系統(tǒng)除基礎(chǔ)系統(tǒng)以外所有的系統(tǒng)都是中國(guó)移動(dòng)與不同的軟件公司合作開(kāi)發(fā)的。由于開(kāi)發(fā)商,開(kāi)發(fā)時(shí)間,開(kāi)發(fā)的水平的不同,導(dǎo)致系統(tǒng)有很大的獨(dú)立性。各個(gè)系統(tǒng)都有其獨(dú)特的運(yùn)行平臺(tái),運(yùn)行環(huán)境,維護(hù)起來(lái)也不方便。部分系統(tǒng)向上層呈現(xiàn)時(shí)出現(xiàn)數(shù)據(jù)格式不一致等等問(wèn)題。并且,隨著時(shí)間的流逝,客戶的不斷增加,設(shè)備的不斷擴(kuò)容,系統(tǒng)的需求不斷增多,導(dǎo)致現(xiàn)有的系統(tǒng)已經(jīng)不能滿足繼續(xù)擴(kuò)展的需要,要重新開(kāi)發(fā)新的系統(tǒng)所花費(fèi)的代價(jià)是可想而知的,原有系統(tǒng)的丟棄也是資源的一種浪費(fèi)。
此外,應(yīng)用這三類系統(tǒng)的人也不同,不同的人根據(jù)工作需要,所要關(guān)注的內(nèi)容不同,有很多時(shí)候一個(gè)人要關(guān)注四套以上的系統(tǒng)。這樣首先要熟悉四套系統(tǒng),每天關(guān)注的時(shí)候也要同時(shí)打開(kāi)四套系統(tǒng)過(guò)濾出需要的信息既費(fèi)時(shí)、費(fèi)力不說(shuō),有時(shí)候還會(huì)導(dǎo)致一些疏忽。怎么才能解決諸如此類的問(wèn)題呢?SOA。
3應(yīng)用SOA技術(shù)的解決方法
前面提到了SOA是面向服務(wù)的體系結(jié)構(gòu),是將所有的功能都作為簡(jiǎn)單的web服務(wù)(也叫原子服務(wù))。一個(gè)復(fù)雜的功能可能有很多的原子服務(wù)組成。這些被組合在一起的復(fù)合服務(wù)可以作為更高一級(jí)的復(fù)合服務(wù)中的一個(gè)原子服務(wù)。
在SOA理念中,所有的服務(wù)是自包含的,具有定義良好的接口,允許這些服務(wù)的用戶了解如何與其進(jìn)行交互。從技術(shù)角度而言,SOA 帶來(lái)了“松散耦合”的應(yīng)用程序組件。正是得益于這個(gè)松散耦合特性,才使得能夠?qū)⒎?wù)組合為各種應(yīng)用程序。這樣還大幅度提高了代碼重用率,可以在增加功能的同時(shí)減少工作量。
不難看出,一旦擁有了SOA,不同部門,不同人都可以按照自己的需要定制自己所需要的服務(wù),對(duì)于不需要的服務(wù)可以過(guò)濾下去。
這樣可以提高工作效率,并且不易疏漏一些細(xì)節(jié)問(wèn)題,因?yàn)槲倚枰P(guān)注的東西都在系統(tǒng)所提供的一個(gè)web頁(yè)面上。此外SOA還具有一定的靈活性,比如一旦工作調(diào)動(dòng)我可以在我的定制服務(wù)中刪除并增加一些服務(wù),這樣不會(huì)因?yàn)椴块T的調(diào)動(dòng),再重新熟悉一些沒(méi)有接觸過(guò)的系統(tǒng)。
正如圖二所示,web服務(wù)組合系統(tǒng)就像一個(gè)插排一樣,提供各種標(biāo)準(zhǔn)接口,下層的服務(wù)像插頭一樣,可以合適的鑲嵌在其中。由于WEB服務(wù)組合與底層系統(tǒng)是通過(guò)接口相互交互的,故其工作方式是跨平臺(tái)的透明模式。當(dāng)然在web服務(wù)組合系統(tǒng)中存在很多模塊如安全控制模塊,用戶人登陸模塊,用戶定制模塊,服務(wù)注冊(cè)中心,傳輸協(xié)議等等。通過(guò)這些模塊的定義可以有效的控制整個(gè)網(wǎng)絡(luò)。
從業(yè)務(wù)的角度來(lái)說(shuō),面向服務(wù)的體系結(jié)構(gòu)的重點(diǎn)在于開(kāi)發(fā)能幫助您完成業(yè)務(wù)任務(wù)的技術(shù),而不是通過(guò)技術(shù)約束來(lái)規(guī)定您的行動(dòng)。例如,一個(gè)集團(tuán)下發(fā)的故障工單的處理過(guò)程(包括集團(tuán)電子運(yùn)維,省端電子運(yùn)維,呈現(xiàn)系統(tǒng),應(yīng)用系統(tǒng),基礎(chǔ)系統(tǒng)核查等等)可能會(huì)涉及數(shù)十個(gè)步驟和若干不同的數(shù)據(jù)庫(kù)和計(jì)算機(jī)系統(tǒng)。但就其實(shí)質(zhì)而言,此過(guò)程包含一系列人工活動(dòng),例如:
? 接口人員受理故障工單,轉(zhuǎn)派相應(yīng)責(zé)任人;
? 相應(yīng)責(zé)任人查找呈現(xiàn)系統(tǒng)、查找應(yīng)用系統(tǒng)、查找基礎(chǔ)系統(tǒng),最終確定故障原因
? 回復(fù)工單至接口人;
? 回復(fù)工單至集團(tuán)側(cè);
這只是一個(gè)簡(jiǎn)單的工單處理過(guò)程,在企業(yè)中還有很多諸如文件審批,財(cái)務(wù)報(bào)表等等一些業(yè)務(wù)。總之各個(gè)部門之間存在著千絲萬(wàn)縷的聯(lián)系。面向服務(wù)的體系結(jié)構(gòu)基于這些實(shí)際活動(dòng)或業(yè)務(wù)服務(wù)進(jìn)行組織,而不是形成公司所維護(hù)的不同的信息豎井 (Silo)。通過(guò)實(shí)現(xiàn) SOA,可以帶來(lái)大量好處,包括以下各個(gè)方面:
? 更高的業(yè)務(wù)和 IT 一致性
? 基于組件的系統(tǒng)
? 松散耦合的組件和系統(tǒng)
? 基于網(wǎng)絡(luò)的基礎(chǔ)設(shè)施,允許分散于各地且采用不同技術(shù)的資源協(xié)同工作
? 動(dòng)態(tài)構(gòu)建的按需應(yīng)用程序
? 更高的代碼重用率
? 更好地標(biāo)準(zhǔn)化整個(gè)企業(yè)內(nèi)的流程
? 更易于集中企業(yè)控制
關(guān)鍵詞:SOA人事管理服務(wù)
一、高校人事管理現(xiàn)狀
近年來(lái),我國(guó)人事制度改革飛速地推進(jìn)了高等院校的發(fā)展,隨之而來(lái)的便是人力資源的日益龐大、人員結(jié)構(gòu)的復(fù)雜程度逐漸增強(qiáng)。傳統(tǒng)的人事管理方法不僅繁冗復(fù)雜,而且低效。一般都只包括人員和機(jī)構(gòu)檔案的管理、簡(jiǎn)單的考勤管理和工資管理,缺少作為人事管理軟件所必需的人員招聘與任用、培訓(xùn)與開(kāi)發(fā)、績(jī)效考核、員工職業(yè)生涯規(guī)劃、分析和決策支持等功能。并且一旦企業(yè)內(nèi)部發(fā)生人事調(diào)動(dòng),工資變化時(shí),用傳統(tǒng)的人事管理方法來(lái)處理這些事物的話,將會(huì)變得十分復(fù)雜和繁瑣。
在高校管理工作中,人事管理工作的重要性便日益顯現(xiàn)出來(lái)。因此,針對(duì)目前高校人事管理信息化的需求和面臨的復(fù)雜情況,可以采用基于面向服務(wù)架構(gòu)SOA(Service-Oriented Architecture)來(lái)設(shè)計(jì)系統(tǒng)結(jié)構(gòu),科學(xué)合理地管理高校的人事信息及擴(kuò)充的人力資源信息。
二、SOA概念和實(shí)現(xiàn)方法
1. 概念
近兩年,出現(xiàn)了一種技術(shù)架構(gòu)被譽(yù)為下一代Web服務(wù)的基礎(chǔ)架構(gòu),它就是SOA(Service- Oriented Architecture,面向服務(wù)的體系結(jié)構(gòu))。是由 Gartner公司在1990年提出的,它根據(jù)需求通過(guò)網(wǎng)絡(luò)對(duì)松散耦合的粗粒度應(yīng)用組件進(jìn)行分布式部署、組合和使用,是目前最流行的一種架構(gòu)模型。
所謂的SOA就是一個(gè)組件模型,由不同的功能單元(稱為服務(wù))組裝而成,服務(wù)之間靠定義良好的接口和契約聯(lián)系起來(lái),這使得構(gòu)建在這樣的系統(tǒng)中的各種服務(wù)以統(tǒng)一和通用的方式進(jìn)行交互?接口采用多方兼容的方式進(jìn)行定義,獨(dú)立于應(yīng)用系統(tǒng)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。SOA的起源和核心都在于Web服務(wù),Web服務(wù)就是使用封裝的XML消息在兩個(gè)通話方之間進(jìn)行交流的一種方式,而SOA使用了大量的通用協(xié)議來(lái)完成所謂面向服務(wù)架構(gòu)的工作,是一個(gè)很好的應(yīng)用集成解決方案。
2. 實(shí)現(xiàn)技術(shù)
具體實(shí)現(xiàn)SOA的技術(shù)有很多,包括Web Services、Session Bean、JINI等。但隨著Web Services技術(shù)越來(lái)越被重視,其已經(jīng)成為實(shí)現(xiàn)SOA的主要構(gòu)架技術(shù)。它是建立在開(kāi)放標(biāo)準(zhǔn)和獨(dú)立于平臺(tái)協(xié)議基礎(chǔ)之上的分布計(jì)算單元。Web Services用XML進(jìn)行數(shù)據(jù)的描述和交換,使用SOAP協(xié)議在服務(wù)提供者與服務(wù)消費(fèi)者之間進(jìn)行通信,通過(guò)WSDL協(xié)議定義服務(wù)接口,使用UDDI協(xié)議進(jìn)行Web Services注冊(cè)和查找。這些特性使得Web Services成為目前實(shí)現(xiàn)SOA的最好方式,而Web Services以分散的形式存在于不同的系統(tǒng)中。
目前Web Services技術(shù)是實(shí)現(xiàn)SOA最主要的方法,是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)規(guī)范,這些規(guī)范使得Web Service能與其他兼容的組件進(jìn)行互操作。實(shí)現(xiàn)Web Services的主流開(kāi)發(fā)平臺(tái)有J2EE平臺(tái)和Microsoft. net平臺(tái),J2EE平臺(tái)開(kāi)發(fā)的系統(tǒng)因具有平臺(tái)無(wú)關(guān)性、安全性、可伸縮性、不同供應(yīng)商實(shí)現(xiàn)方案之間的可移植性等若干優(yōu)點(diǎn)而得到了廣泛的應(yīng)用。
Web Service是一種新的Web應(yīng)用程序分支,它們是自包含、自描述、模塊化的應(yīng)用,可以在網(wǎng)絡(luò)中被描述、、查找以及通過(guò)Web來(lái)調(diào)用。它定義了應(yīng)用程序如何在Web上實(shí)現(xiàn)互操作性,它可以使用標(biāo)準(zhǔn)的互聯(lián)網(wǎng)協(xié)議,像超文本傳輸協(xié)議HTTP和XML,將功能體現(xiàn)在互聯(lián)網(wǎng)和企業(yè)內(nèi)部網(wǎng)上。
任何平臺(tái)都有它的數(shù)據(jù)表示方法和類型系統(tǒng),而要實(shí)現(xiàn)互操作性,則Web Service平臺(tái)必須提供一套標(biāo)準(zhǔn)的類型系統(tǒng),用于溝通不同平臺(tái)、編程語(yǔ)言和組件模型中的不同類型系統(tǒng)。Web Service平臺(tái)主要通過(guò)一些協(xié)議來(lái)實(shí)現(xiàn)分布式應(yīng)用程序的創(chuàng)建,主要有以下這些協(xié)議:
1. XML
可擴(kuò)展的標(biāo)記語(yǔ)言XML是Web Service平臺(tái)中表示數(shù)據(jù)的基本格式。是一種流行的、獨(dú)立于中間件的格式,可以在不同應(yīng)用程序之間進(jìn)行數(shù)據(jù)和文檔的交換。除了易于建立和分析外,XML主要的優(yōu)點(diǎn)在于它既與平臺(tái)無(wú)關(guān),又與廠商無(wú)關(guān)。
2.SOAP
SOAP (Simple Object Access Protocol,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)是Web Service 的標(biāo)準(zhǔn)通信協(xié)議,采用標(biāo)準(zhǔn)化XML 格式傳輸消息?它是用于交換XML編碼信息的輕量級(jí)協(xié)議。它有三個(gè)主要方面:XML-envelope為描述信息內(nèi)容和如何處理內(nèi)容定義了框架,將程序?qū)ο缶幋a成為XML對(duì)象的規(guī)則,執(zhí)行遠(yuǎn)程過(guò)程調(diào)用(RPC)的約定。Web Service希望實(shí)現(xiàn)不同的系統(tǒng)之間能夠用“軟件-軟件對(duì)話”的方式相互調(diào)用來(lái)打破軟件應(yīng)用、網(wǎng)站和各種設(shè)備之間的格格不入的狀態(tài),實(shí)現(xiàn)“基于Web無(wú)縫集成”的目標(biāo)。Web Services標(biāo)準(zhǔn)的成熟和應(yīng)用的普及為廣泛地實(shí)現(xiàn)SOA 架構(gòu)提供了基礎(chǔ),Web Service技術(shù)實(shí)現(xiàn)了服務(wù)接口的傳輸和調(diào)用的標(biāo)準(zhǔn)化,服務(wù)接口和服務(wù)實(shí)現(xiàn)的分離,以及Web 服務(wù)組件的可重用性?
3.WSDL
WSDL(Web Service Description Language,Web Service描述語(yǔ)言)就是用機(jī)器能閱讀的方式提供的一個(gè)正式描述文檔,WSDL就是這樣一個(gè)基于XML的語(yǔ)言,用于描述Web服務(wù)的所有相關(guān)內(nèi)容,如所提供的服務(wù)的傳輸方式、服務(wù)方法接口、接口參數(shù)、服務(wù)路徑等,生成相應(yīng)的完全文檔,給使用者,從而使第三方可以很容易的調(diào)用該服務(wù)。因?yàn)槭腔赬ML的,所以WSDL既是機(jī)器可閱讀的,又是人可閱讀的。
4.UDDI
UDDI(Universal Description,Discovery and Integeration,通用描述、發(fā)現(xiàn)與集成服務(wù))是一個(gè)分布式的互聯(lián)網(wǎng)服務(wù)注冊(cè)機(jī)制,它集描述(Universal Description)、檢索(Discovery)與集成(Integration)為一體,其核心是注冊(cè)機(jī)制。它是一套基于Web的、分布式的、為Web Service提供的、信息注冊(cè)中心的實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)范,同時(shí)也包含一組使企業(yè)能將自身提供的Web Service注冊(cè),以使別的企業(yè)能夠發(fā)現(xiàn)的訪問(wèn)協(xié)議的實(shí)現(xiàn)標(biāo)準(zhǔn)。
UDDI 基于現(xiàn)成的標(biāo)準(zhǔn),如可擴(kuò)展標(biāo)記語(yǔ)言(Extensible Markup Language,XML)和簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol,SOAP)。UDDI同時(shí)也是Web服務(wù)集成的一個(gè)體系框架,它包含了服務(wù)描述與發(fā)現(xiàn)的標(biāo)準(zhǔn)規(guī)范。UDDI規(guī)范利用了W3C和Internet工程任務(wù)組織(IETF)的很多標(biāo)準(zhǔn)作為其實(shí)現(xiàn)基礎(chǔ),比如擴(kuò)展標(biāo)注語(yǔ)言(XML),HTTP和域名服務(wù)(DNS)這些協(xié)議。
三、應(yīng)用SOA構(gòu)建人事管理系統(tǒng)
SOA的一個(gè)中心思想就是使得企業(yè)應(yīng)用擺脫面向技術(shù)的解決方案的束縛,輕松應(yīng)對(duì)企業(yè)商業(yè)服務(wù)變化、發(fā)展的需要。它是對(duì)企業(yè)各種異構(gòu)的信息孤島進(jìn)行整合的最有效方法,可以實(shí)現(xiàn)企業(yè)和組織的信息共享,提升人員協(xié)同能力以及業(yè)務(wù)的優(yōu)化和整合程度,實(shí)現(xiàn)有效的業(yè)務(wù)轉(zhuǎn)型和創(chuàng)新,幫助企業(yè)適應(yīng)外部變化,提高運(yùn)營(yíng)效率和反應(yīng)速度,同時(shí)中間件和平臺(tái)技術(shù)的成熟也給SOA在應(yīng)用層面上的實(shí)踐提供了有利的保障。
傳統(tǒng)的應(yīng)用集成方法(點(diǎn)對(duì)點(diǎn)集成、企業(yè)消息總線或中間件的集成(EAI)、基于業(yè)務(wù)流程的集成)都很復(fù)雜、昂貴,并且不靈活。這些集成方法難于快速適應(yīng)基于企業(yè)現(xiàn)代業(yè)務(wù)變化不斷產(chǎn)生的需求?;诿嫦蚍?wù)架構(gòu) (SOA) 的應(yīng)用開(kāi)發(fā)和集成可以很好的解決其中的許多問(wèn)題。在SOA中,圍繞服務(wù)的所有模式都是以基于標(biāo)準(zhǔn)的技術(shù)實(shí)現(xiàn)的。大部分的通信中間件系統(tǒng),如 RPC、CORBA、DCOM、EJB 和 RMI,也同樣如此??墒撬鼈兊膶?shí)現(xiàn)都不是很完美的,在權(quán)衡交互性以及標(biāo)準(zhǔn)定制的可接受性方面總是存在問(wèn)題。SOA的服務(wù)既可以定義為功能,又可同時(shí)對(duì)外定義為對(duì)象、應(yīng)用等等。任何業(yè)務(wù)功能都被作為提供的一個(gè)服務(wù)使用,應(yīng)用程序的不同功能(服務(wù))通過(guò)這些服務(wù)之間定義的結(jié)構(gòu)和合約聯(lián)系,應(yīng)用系統(tǒng)可以看作是一系列服務(wù)的集成,這使得SOA可適應(yīng)于任何現(xiàn)有系統(tǒng),并使得系統(tǒng)在集成時(shí)不必刻意遵循任何特殊定制。
SOA 幫助企業(yè)信息系統(tǒng)遷移到"leave-and-layer"架構(gòu)之上,這意味著在不用對(duì)現(xiàn)有的企業(yè)系統(tǒng)做修改的前提下,系統(tǒng)可對(duì)外提供 Web 服務(wù)接口,這是因?yàn)樗鼈円呀?jīng)被可以提供 Web 服務(wù)接口的應(yīng)用層做了一層封裝,所以在不用修改現(xiàn)有系統(tǒng)架構(gòu)的情況下,SOA 可以將系統(tǒng)和應(yīng)用迅速轉(zhuǎn)換為服務(wù)。
SOA 不僅覆蓋來(lái)自于打包應(yīng)用、定制應(yīng)用和遺留系統(tǒng)中的信息,而且還覆蓋來(lái)自于如安全、內(nèi)容管理、搜索等 IT 架構(gòu)中的功能和數(shù)據(jù)。因?yàn)榛?SOA 的應(yīng)用能很容易地從這些基礎(chǔ)服務(wù)架構(gòu)中添加功能,所以基于SOA的應(yīng)用能更快地應(yīng)對(duì)市場(chǎng)變化,為使企業(yè)業(yè)務(wù)部門設(shè)計(jì)開(kāi)發(fā)出新的功能應(yīng)用。
SOA構(gòu)建方法位于高校教學(xué)資源系統(tǒng)整合業(yè)務(wù)需求和底層技術(shù)之間的抽象層次中,獨(dú)立地對(duì)每一個(gè)服務(wù)功能模塊進(jìn)行定義,而每一個(gè)獨(dú)立部署的教育資源服務(wù)模塊不依賴具體的開(kāi)發(fā)平臺(tái)和系統(tǒng),各個(gè)系統(tǒng)的功能需求通過(guò)服務(wù)的流程化組織得到實(shí)現(xiàn),從而實(shí)現(xiàn)各種異構(gòu)系統(tǒng)及資源的集成和軟件復(fù)用。
SOA在高校人事管理應(yīng)用中的優(yōu)勢(shì):
1.低成本
SOA是實(shí)現(xiàn)高校信息系統(tǒng)之間數(shù)據(jù)和業(yè)務(wù)無(wú)縫銜接的理想方案,結(jié)合高?,F(xiàn)有的服務(wù),將有用的資源進(jìn)行改造,開(kāi)發(fā)出功能更強(qiáng)大的服務(wù),簡(jiǎn)化了系統(tǒng)集成,可以快捷、容易地對(duì)業(yè)務(wù)需求的變化做出反應(yīng)。使得軟件的開(kāi)發(fā)周期大大的縮短,降低了開(kāi)發(fā)成本?另外,面向服務(wù)架構(gòu)是平臺(tái)和語(yǔ)言無(wú)關(guān)的,因此不必考慮實(shí)施環(huán)境是何種平臺(tái)系統(tǒng)和設(shè)備,與其它的系統(tǒng)集成技術(shù)相比,面向服務(wù)的集成構(gòu)架是解決高校信息系統(tǒng)集成的理想選擇。
2.靈活多變
SOA具有靈活而功能強(qiáng)大的服務(wù)層,利用服務(wù)層中粗粒度的、可被動(dòng)態(tài)發(fā)現(xiàn)和綁定的服務(wù),能夠在保持原有系統(tǒng)正常使用的前提下,從現(xiàn)有的服務(wù)中重新組合成新的服務(wù),縮短軟件系統(tǒng)分析?設(shè)計(jì)?開(kāi)發(fā)等所需的時(shí)間,快速地構(gòu)建松散耦合的、具有跨平臺(tái)處理信息能力的應(yīng)用系統(tǒng)。
四、國(guó)內(nèi)SOA的應(yīng)用現(xiàn)狀
中國(guó)企業(yè)在實(shí)現(xiàn)SOA架構(gòu)時(shí),往往需要面對(duì)原有系統(tǒng)改造優(yōu)化或新建系統(tǒng)這兩個(gè)層面。金融、電信等IT建設(shè)領(lǐng)先的企業(yè)是“以系統(tǒng)改造優(yōu)化為主,同時(shí)也在大量新建系統(tǒng)”的代表企業(yè)。在IDC的調(diào)查中,對(duì)于如何將已有系統(tǒng)進(jìn)行分割并形成SOA服務(wù)的考慮,超過(guò)67%的中國(guó)大中型企業(yè)更多是希望把原有系統(tǒng)切割并包裝成為SOA服務(wù)。這一方面涉及大部分承載著核心業(yè)務(wù)的已有系統(tǒng),任何更改都會(huì)對(duì)企業(yè)運(yùn)營(yíng)帶來(lái)很大的不可控風(fēng)險(xiǎn);另一方面,企業(yè)出于利舊的考慮,也不愿意輕易將原有系統(tǒng)推倒重來(lái)或新建系統(tǒng)替代。因此,在對(duì)待已有系統(tǒng)的處理上,這些企業(yè)往往會(huì)出于某種考慮而采取這樣一些方法:
1.如果功能容易切分,可以采用對(duì)已有系統(tǒng)進(jìn)行切割和封裝的方法。
2.如果功能不容易切分,則把整個(gè)系統(tǒng)包裝成一個(gè)服務(wù)提供,或者推倒重來(lái),用新方法構(gòu)造服務(wù)。
五、結(jié)束語(yǔ)
鑒于SOA的應(yīng)用所能帶來(lái)的價(jià)值,我們可以看到SOA應(yīng)用是一股不可阻擋的潮流,通過(guò)SOA的分布式、大規(guī)模、異構(gòu)環(huán)境下的整合能力,提高業(yè)務(wù)的敏捷性,能夠解決在異構(gòu)環(huán)境下,企業(yè)各IT系統(tǒng)的應(yīng)用集成,即不同應(yīng)用系統(tǒng)之間的互通互聯(lián),使得企業(yè)的IT和業(yè)務(wù)可以更好地結(jié)合在一起。
當(dāng)SOA的理念、方法靜下來(lái)時(shí)才是它的具體應(yīng)用和實(shí)踐開(kāi)始走向深入的時(shí)候。當(dāng)未來(lái),企業(yè)的信息化項(xiàng)目都是SOA的架構(gòu)風(fēng)格之時(shí),人們就不需要一遍一遍地去強(qiáng)調(diào)SOA的概念了,伴隨著SOA應(yīng)用的普及,SOA也將不再神秘。期待更多的軟件廠商不斷推進(jìn)SOA 架構(gòu)標(biāo)準(zhǔn)化,進(jìn)一步完善和細(xì)化基于SOA 架構(gòu)的相關(guān)產(chǎn)品,加快企業(yè)信息化建設(shè)的步伐。
參考文獻(xiàn):
[1]馬文龍,余文利,廖建平.一種基于SOA 的高校信息系統(tǒng)集成模型設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)時(shí)代,2010,(2)
[2]顧云鋒.基于SOA和Web服務(wù)的高校信息系統(tǒng)集成研究[J].計(jì)算機(jī)與現(xiàn)代化, 2009,(10)
關(guān)鍵詞:總線通道技術(shù);SOA技術(shù);架構(gòu)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2012)31-7478-03
企業(yè)面臨的商業(yè)環(huán)境變化越來(lái)越快,競(jìng)爭(zhēng)越來(lái)越激烈,如何快速整合企業(yè)現(xiàn)有業(yè)務(wù),開(kāi)發(fā)新業(yè)務(wù),適應(yīng)需求變化是企業(yè)急需要解決的問(wèn)題。目前企業(yè)的現(xiàn)狀是計(jì)算機(jī)系統(tǒng)相互隔離,不能協(xié)調(diào)工作,操作計(jì)算機(jī)系統(tǒng)的業(yè)務(wù)人員完成各自的業(yè)務(wù),整體上處于一種混亂狀態(tài),很難達(dá)成業(yè)務(wù)的敏捷性。
業(yè)務(wù)敏捷性取決于企業(yè)信息的自由流動(dòng)、服務(wù)和業(yè)務(wù)流程,而這些都要求信息系統(tǒng)能夠滿足業(yè)務(wù)的變更,同時(shí),不能因?yàn)闃I(yè)務(wù)變更造成企業(yè)原有業(yè)務(wù)系統(tǒng)的重新編寫(xiě)和構(gòu)建。企業(yè)信息系統(tǒng)一般是多平臺(tái)和多技術(shù)構(gòu)成的,而且業(yè)務(wù)會(huì)涉及到企業(yè)內(nèi)部、外部環(huán)境、供應(yīng)商和客戶等,因此就需要更好的互聯(lián)技術(shù)來(lái)滿足異構(gòu)系統(tǒng)之間的信息交互[1]。
總線通道技術(shù)和SOA(Service Oriented Architecture)技術(shù)相結(jié)合在企業(yè)業(yè)務(wù)移植、業(yè)務(wù)有效控制和業(yè)務(wù)流程編排等方面有優(yōu)勢(shì),能夠滿足企業(yè)業(yè)務(wù)敏捷性要求。文章將結(jié)合總線通道技術(shù)和SOA架構(gòu)技術(shù),分析一種基于總線通道技術(shù)的SOA架構(gòu)設(shè)計(jì)方案,以滿足企業(yè)業(yè)務(wù)敏捷性需求。
1 基于總線通道技術(shù)的SOA設(shè)計(jì)方案
SOA本質(zhì)上是一種面向服務(wù)對(duì)象的軟件架構(gòu)模型,該模型將應(yīng)用程序的不同功能單元,即服務(wù)(service),通過(guò)服務(wù)間定義的接口和契約(contract)聯(lián)系起來(lái)。接口采用中立的方式定義,獨(dú)立于具體實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言,使得構(gòu)建在這樣的系統(tǒng)中的服務(wù)可以使用統(tǒng)一和標(biāo)準(zhǔn)的方式進(jìn)行通信[2]。
總線通道技術(shù)是SOA的基礎(chǔ),它將傳統(tǒng)的中間件技術(shù)、XML和Web服務(wù)集成,消除不同應(yīng)用之間的技術(shù)差異,讓不同的應(yīng)用服務(wù)器協(xié)調(diào)運(yùn)作,實(shí)現(xiàn)不同服務(wù)之間的通信與整合??偩€通道技術(shù)集成異構(gòu)平臺(tái)的不同應(yīng)用,為SOA服務(wù)提供交互通信和協(xié)作處理[3]。
SOA要解決的根本問(wèn)題是如何保護(hù)企業(yè)的現(xiàn)有資產(chǎn),推動(dòng)業(yè)務(wù)敏捷,把企業(yè)已經(jīng)有的應(yīng)用系統(tǒng),用標(biāo)準(zhǔn)的、高效的和便利的方式集成起來(lái),使企業(yè)更好的應(yīng)對(duì)市場(chǎng)的變化,對(duì)業(yè)務(wù)需求的變化做出快速的反應(yīng)。使用總線通道技術(shù)構(gòu)建Web應(yīng)用服務(wù)滿足企業(yè)需求,構(gòu)建方案如圖1所示。
從設(shè)計(jì)開(kāi)發(fā)的角度來(lái)說(shuō),數(shù)據(jù)交換接口、傳輸協(xié)議、應(yīng)用協(xié)議等構(gòu)建在總線通道上,總線通道業(yè)務(wù)系統(tǒng)借助于WebService實(shí)現(xiàn)對(duì)系統(tǒng)構(gòu)架開(kāi)發(fā)處理,并借助于不同的通道實(shí)現(xiàn)對(duì)各類服務(wù)數(shù)據(jù)的傳輸作業(yè),在SOA思想的引導(dǎo)作用之下,借助于ESB模式實(shí)現(xiàn)對(duì)整個(gè)多通道系統(tǒng)的整合處理。構(gòu)建于總線通道技術(shù)基礎(chǔ)上的SOA架構(gòu)能夠統(tǒng)一描述各種業(yè)務(wù)、業(yè)務(wù)對(duì)象與業(yè)務(wù)模型。在總線通道技術(shù)的作用之下,借助于模塊化結(jié)構(gòu)設(shè)計(jì)方式的實(shí)現(xiàn),應(yīng)用系統(tǒng)的結(jié)構(gòu)框架簡(jiǎn)潔、清晰。通過(guò)對(duì)總線通道技術(shù)的有效應(yīng)用,應(yīng)用系統(tǒng)能夠具有高效的擴(kuò)充性能。
2 設(shè)計(jì)方案分析
基于總線通道技術(shù)的SOA架構(gòu)方案設(shè)計(jì)包含四個(gè)方面的內(nèi)容:總線通道軟件配置,多種傳輸協(xié)議的實(shí)現(xiàn),基于依賴關(guān)系的松耦合,傳輸通道定義規(guī)則。下面從這四個(gè)方面進(jìn)行分析。
1)總線通道軟件配置分析
采用總線通道技術(shù)SOA架構(gòu)系統(tǒng)的項(xiàng)目在硬件及軟件配置設(shè)計(jì)過(guò)程當(dāng)中涉及到三立運(yùn)行服務(wù)器,分別發(fā)揮網(wǎng)站服務(wù)、數(shù)據(jù)服務(wù)以及中間服務(wù)功能。網(wǎng)站服務(wù)器的作用在于實(shí)現(xiàn)整個(gè)總線通道應(yīng)用系統(tǒng)的數(shù)據(jù)信息共享處理;數(shù)據(jù)服務(wù)器的作用在于實(shí)現(xiàn)整個(gè)軟件運(yùn)行狀態(tài)下的運(yùn)行數(shù)據(jù)處理;而中間服務(wù)器的作用在于實(shí)現(xiàn)總線通道系統(tǒng)與終端應(yīng)用對(duì)象之間的信息數(shù)據(jù)同步處理。
2)多種傳輸協(xié)議實(shí)現(xiàn)方式分析
在傳統(tǒng)意義上的應(yīng)用系統(tǒng)當(dāng)中,數(shù)據(jù)傳輸?shù)姆绞蕉嘟柚趩我恍詡鬏攨f(xié)議的方式實(shí)現(xiàn),并針對(duì)傳輸協(xié)議以及應(yīng)用業(yè)務(wù)進(jìn)行了高度有效的緊耦合綁定處理。這種數(shù)據(jù)傳輸方式不利于系統(tǒng)功能的擴(kuò)展,影響應(yīng)用服務(wù)的集成,對(duì)于整個(gè)應(yīng)用系統(tǒng)綜合功能的發(fā)揮而言是極為不利的。從這一角度來(lái)說(shuō),在針對(duì)整個(gè)應(yīng)用系統(tǒng)進(jìn)行設(shè)計(jì)的過(guò)程中,應(yīng)當(dāng)考慮改進(jìn)傳輸協(xié)議方式??紤]綜合應(yīng)用需要,架構(gòu)方案采用多種傳輸協(xié)議兼容不同數(shù)據(jù)格式,實(shí)現(xiàn)多種類型的協(xié)議傳輸接口。
多種傳輸協(xié)議實(shí)現(xiàn)比較復(fù)雜,涉及到協(xié)議封裝、協(xié)議格式、協(xié)議版本以及異構(gòu)平臺(tái)消息轉(zhuǎn)化等,可以采用裝飾模式(Fa?ade模式)對(duì)協(xié)議封裝,在應(yīng)用系統(tǒng)總線通道接口位置設(shè)置Fa?ade模式,發(fā)揮其針對(duì)子系統(tǒng)細(xì)節(jié)的有效屏蔽性能,一方面能夠方便客戶針對(duì)子系統(tǒng)功能的有效訪問(wèn),另一方面也可以有效消除整個(gè)系統(tǒng)在編碼過(guò)程中所涉及到的冗長(zhǎng)的復(fù)雜代碼。裝飾模式的設(shè)計(jì)方案借助子類實(shí)現(xiàn)各種具體的協(xié)議,依據(jù)不同的應(yīng)用需求使用不同的協(xié)議對(duì)象進(jìn)行配置,有效降低應(yīng)用實(shí)現(xiàn)對(duì)協(xié)議依賴耦合度,將多種傳輸協(xié)問(wèn)題涉及面控制在最低限度。此種設(shè)計(jì)方式一方面能夠?qū)崿F(xiàn)Fa?ade配置過(guò)程當(dāng)中各種不同協(xié)議對(duì)象的綜合應(yīng)用,另一方面也能夠方便針對(duì)其他協(xié)議類型的替換與擴(kuò)展處理。
3)基于依賴關(guān)系的松耦合分析
系統(tǒng)設(shè)計(jì)人員進(jìn)行系統(tǒng)設(shè)計(jì)的過(guò)程中不得不面對(duì)持續(xù)變化的業(yè)務(wù)需求。在業(yè)務(wù)及與之相對(duì)應(yīng)的業(yè)務(wù)需求出現(xiàn)變化的情況下,需要針對(duì)IT架構(gòu)進(jìn)行一定程度上的修改。從這一角度來(lái)說(shuō),應(yīng)用系統(tǒng)設(shè)計(jì)過(guò)程當(dāng)中需要考慮如何能夠更為有效的將業(yè)務(wù)流程的變化趨勢(shì)映射至整個(gè)應(yīng)用系統(tǒng)當(dāng)中,方便適應(yīng)變化。簡(jiǎn)單來(lái)說(shuō),整個(gè)應(yīng)用系統(tǒng)所用參數(shù)均是借助于同一個(gè)抽象類所繼承而來(lái)的業(yè)務(wù)數(shù)據(jù)對(duì)象,在此基礎(chǔ)之上借助于重載函數(shù)方式實(shí)現(xiàn)業(yè)務(wù)編碼。此規(guī)律同樣適用于認(rèn)證服務(wù),即在一個(gè)獨(dú)立的認(rèn)證服務(wù)基類當(dāng)中往往存在多個(gè)類型的擴(kuò)展方式。在整個(gè)應(yīng)用系統(tǒng)的處理過(guò)程當(dāng)中,數(shù)據(jù)信息首先會(huì)經(jīng)過(guò)認(rèn)證服務(wù),認(rèn)證服務(wù)能夠從這部分?jǐn)?shù)據(jù)信息當(dāng)中獲取有價(jià)值的鑒定信息通過(guò)用戶認(rèn)證操作。在用戶認(rèn)證通過(guò)的情況下借助于關(guān)鍵字方式實(shí)現(xiàn)與核心服務(wù)處理的有效映射;在認(rèn)證無(wú)法通過(guò)的情況下這部分?jǐn)?shù)據(jù)信息將直接返回為認(rèn)證失敗。借助于該方式能夠確保整個(gè)SOA架構(gòu)運(yùn)行安全與穩(wěn)定。
4)傳輸通道定義規(guī)則分析
在中間件技術(shù)發(fā)展不斷完善的背景下,用戶對(duì)于數(shù)據(jù)傳輸?shù)目煽啃?、安全性以及?shí)時(shí)性要求日趨嚴(yán)格與具體,如何將中間件技術(shù)與系統(tǒng)高效融合在一起是整個(gè)系統(tǒng)設(shè)計(jì)的關(guān)鍵所在。結(jié)合上文有關(guān)多種協(xié)議傳輸方式以及松耦合分析來(lái)看,開(kāi)發(fā)設(shè)計(jì)過(guò)程當(dāng)中需要結(jié)合以上兩個(gè)方面的問(wèn)題以及SOA架構(gòu)自身特性展開(kāi)工作。具體實(shí)現(xiàn)過(guò)程,如圖2所示,在進(jìn)行內(nèi)部定義的過(guò)程中均會(huì)對(duì)應(yīng)兩個(gè)標(biāo)示符(通道協(xié)議符和通道標(biāo)示符),借助于通道協(xié)議符以及通道標(biāo)示符的合理匹配能夠完成有關(guān)數(shù)據(jù)傳輸通道的定位處理。在此基礎(chǔ)之上,總線通道內(nèi)部消息轉(zhuǎn)化適配器裝置能夠針對(duì)不同協(xié)議類型下的數(shù)據(jù)進(jìn)行對(duì)象轉(zhuǎn)化,進(jìn)而借助于安全認(rèn)證方式的應(yīng)用,實(shí)現(xiàn)傳輸通道與應(yīng)用服務(wù)之間的綁定關(guān)系,通過(guò)這樣的傳輸通道定義規(guī)則,整個(gè)傳輸通道能夠安全且有效的進(jìn)行數(shù)據(jù)通信作業(yè)處理。
3 結(jié)束語(yǔ)
在軟件產(chǎn)業(yè)建設(shè)持續(xù)發(fā)展的背景作用之下,企業(yè)對(duì)于計(jì)算機(jī)技術(shù)及互聯(lián)網(wǎng)網(wǎng)絡(luò)的依賴程度明顯加大。軟件自傳統(tǒng)意義上單機(jī)屬性的軟件工具逐步發(fā)展成為多種復(fù)雜有效融為一體的軟件系統(tǒng)。信息化背景下,企業(yè)面臨激烈的競(jìng)爭(zhēng),業(yè)務(wù)變更頻繁,構(gòu)建于總線通道技術(shù)上的SOA架構(gòu)設(shè)計(jì)方案能夠有效的應(yīng)對(duì)企業(yè)的這一需求。基于總線通道技術(shù)實(shí)現(xiàn)SOA架構(gòu)優(yōu)勢(shì)及效果顯著,值得關(guān)注??偠灾?,文章針對(duì)有關(guān)總線通信技術(shù)支持下的SOA架構(gòu)設(shè)計(jì)方案分析,希望能夠?yàn)榻窈笙嚓P(guān)研究與實(shí)踐工作的開(kāi)展提供一定的參考與幫助。
參考文獻(xiàn):
[1] 王洪偉,劉勰,丁佼佼,等.基于SOA的面向業(yè)務(wù)敏捷性流程集成模型[J].計(jì)算機(jī)工程,2010,20(36):277-280.
【關(guān)鍵詞】I/O NIO BIO SOCKET通信 Java 多線程
1 引言
傳統(tǒng)BIO技術(shù)在Socket通信中,系統(tǒng)需要為每一個(gè)鏈接建立一個(gè)線程去處理其請(qǐng)求,隨著客戶端的并發(fā)量不斷增加后,會(huì)導(dǎo)致線程數(shù)量的增加嚴(yán)重影響系統(tǒng)的性能。由于并發(fā)量的增加有可能導(dǎo)致服務(wù)器宕機(jī),嚴(yán)重影響到用戶在使用過(guò)程中的良好體驗(yàn)。為解決傳統(tǒng)BIO的不足,Java 中提供了新的API----NIO和NIO2來(lái)解決由于BIO技術(shù)帶來(lái)的系統(tǒng)瓶頸問(wèn)題。在NIO中系統(tǒng)不再為每一個(gè)用戶請(qǐng)求注冊(cè)一個(gè)線程,而是通過(guò)通道將每一個(gè)鏈接都注冊(cè)到多路復(fù)用器上,通過(guò)多路復(fù)用器對(duì)注冊(cè)在其上的鏈接進(jìn)行輪詢檢查,發(fā)現(xiàn)有鏈接請(qǐng)求才會(huì)開(kāi)啟線程對(duì)其進(jìn)行處理。NIO只在有連接請(qǐng)求時(shí)selector才會(huì)不斷輪詢檢查通道IO操作是否完成,與NIO技術(shù)不同的是AIO技術(shù)是異非步阻塞的。AIO中不再需要多路復(fù)用器,而是由異步非阻塞通道直接操作read和write方法。在客戶端讀寫(xiě)請(qǐng)求發(fā)出后不再等待服務(wù)器的響應(yīng),而是處理完成后由操作系統(tǒng)來(lái)通知應(yīng)用程序。AIO與NIO這兩種技術(shù)都極大地改變了傳統(tǒng)I/O流的不足。
2 Socket基本通信原理介紹
Socket是網(wǎng)絡(luò)通信中的其中一方,用來(lái)接收網(wǎng)絡(luò)通信中雙方其中一方的請(qǐng)求,方便的對(duì)雙方的數(shù)據(jù)進(jìn)行傳輸。Socket通信分有連接的和無(wú)連接,面向連接的Socket通信與面向非連接的Socket通信相比有更高的可靠性和更有效的數(shù)據(jù)傳輸。本文基于有連接的套接字傳輸。
3 BIO、NIO、AIO技術(shù)比較
3.1 BIO技術(shù)簡(jiǎn)介
BIO技術(shù)同步并且阻塞,在這種情況下,服務(wù)器需要為每一個(gè)連接開(kāi)啟一個(gè)線程,只要有客戶端有請(qǐng)求服務(wù)器就需要開(kāi)啟線程去進(jìn)行處理。從客戶端傳來(lái)的每個(gè)請(qǐng)求,服務(wù)器都需要為其創(chuàng)建相應(yīng)的線程去處理其請(qǐng)求。在BIO中,由于其線程的開(kāi)銷很大,適合于運(yùn)用在并發(fā)量小的場(chǎng)景下。其基本模型如圖1所示。
BIO網(wǎng)絡(luò)通信基本步驟:
3.1.1 服務(wù)低端
(1)創(chuàng)建ServerSocket并綁定監(jiān)聽(tīng)端口;
(2)創(chuàng)建Socket用來(lái)接收客戶端請(qǐng)求;
(3)創(chuàng)建輸入輸出流用來(lái)接收客戶端輸入或向客戶端輸出數(shù)據(jù);
(4)關(guān)閉輸入輸出流等系統(tǒng)資源。
3.1.2 客戶端
(1)創(chuàng)建Socket綁定IP地址及端口;
(2)創(chuàng)建輸入輸出流用來(lái)接收服務(wù)器端相應(yīng)或向服務(wù)器端發(fā)送數(shù)據(jù);
(3)關(guān)閉輸入輸出流等系統(tǒng)資源。
3.2 NIO技術(shù)簡(jiǎn)介
NIO技術(shù)即New IO技術(shù),NIO技術(shù)由很多類和組件構(gòu)成,其最重要的由channel、Buffer、和Selectors三個(gè)核心部分組成。
Channel:Java NIO中的通道類似于流,但又不完全相同。既可以從通道中讀取數(shù)據(jù)到Buffer也可以將數(shù)據(jù)從Buffer寫(xiě)入通道中。其中SocketChannel和ServerSocketChannel是NIO中提供的用來(lái)解決Socket通信中的服務(wù)器性能問(wèn)題的。SocketChannel通過(guò)TCP協(xié)議來(lái)讀取網(wǎng)絡(luò)中的數(shù)據(jù),ServerSocketChannel用來(lái)接收鏈接來(lái)的請(qǐng)求以供服務(wù)器相應(yīng)。
Buffer:Buffer是用來(lái)為數(shù)據(jù)提供緩沖區(qū)的。在NIO技術(shù)中,所有的數(shù)據(jù)都必須經(jīng)過(guò)緩沖區(qū)。緩沖區(qū)本質(zhì)上為一塊可讀可寫(xiě)的內(nèi)存塊,NIO中提供了不同數(shù)據(jù)類型的緩沖區(qū)來(lái)處理不同的數(shù)據(jù)請(qǐng)求,和一些基本的方法來(lái)操作緩沖區(qū)中的數(shù)據(jù)。
Selector:Selector是單線程來(lái)處理多個(gè)鏈接請(qǐng)求的關(guān)鍵。在Socket通信中,如果將多個(gè)鏈接請(qǐng)求注冊(cè)到多路復(fù)用器上,就可以用一個(gè)線程來(lái)處理多個(gè)鏈接請(qǐng)求,這樣就提高了Socket通信的效率。NIO通信中的網(wǎng)絡(luò)模型
如圖2所示。
NIO通信基本步驟:
3.2.1 服務(wù)器端
(1)創(chuàng)建多路復(fù)用器Selector 用來(lái)選擇通道;
(2)創(chuàng)建服務(wù)器端通道ServerSocketChannel;
(3)為多路復(fù)用器上注冊(cè)ServerSocketChannel用來(lái)將數(shù)據(jù)通過(guò)通道讀寫(xiě);
(4)申請(qǐng)Buffer存儲(chǔ)數(shù)據(jù);
(5)多路選擇器通過(guò)其key值輪詢檢查通道讀寫(xiě)B(tài)uffer中的數(shù)據(jù)完成其通信過(guò)程。
3.2.2 客舳
(1)創(chuàng)建IP地址和端口號(hào)對(duì)應(yīng)的SocketChannel ;
(2)將SocketChannel設(shè)置為非阻塞模式;
(3)創(chuàng)建多路復(fù)用器Selector注冊(cè)SocketChannel到多路選擇器;
(4)多路選擇器輪詢檢查通道從Buffer中讀寫(xiě)數(shù)據(jù)。
在NIO網(wǎng)絡(luò)通信模型中,客戶端向服務(wù)器端發(fā)起鏈接請(qǐng)求,客戶端將數(shù)據(jù)寫(xiě)入服務(wù)器端Buffer中,然后通過(guò)channel來(lái)從Buffer讀取數(shù)據(jù)或向Buffer寫(xiě)入數(shù)據(jù),對(duì)于通道中的數(shù)據(jù)必須經(jīng)過(guò)選擇器來(lái)向服務(wù)器端的線程發(fā)起請(qǐng)求。而每一個(gè)多路選擇器對(duì)應(yīng)一個(gè)線程模型,這樣一來(lái),只有當(dāng)鏈接請(qǐng)求有效時(shí)服務(wù)器才為客戶端開(kāi)啟線程處理數(shù)據(jù)。對(duì)于同步阻塞的NIO模型中客戶端在向服務(wù)器端發(fā)送完數(shù)據(jù)后會(huì)不斷詢問(wèn)I/O操作是否就緒才能進(jìn)行下一步的操作。此模型中由于不需要為每一個(gè)鏈接請(qǐng)求創(chuàng)建一個(gè)線程,大大減少了線程之間的切換帶來(lái)的巨大開(kāi)銷。提高了I/O的效率,使得在socket網(wǎng)絡(luò)通信更加高效。但由于NIO在鏈接請(qǐng)求中會(huì)不斷詢問(wèn)I/O操作是否完成,其適合運(yùn)用在短鏈接且并發(fā)量大的場(chǎng)合下。
3.3 AIO技術(shù)簡(jiǎn)介
AIO即為異步非阻塞IO,與NIO不同的是,在這種模式下,客戶端發(fā)起一個(gè)鏈接請(qǐng)求后不在詢問(wèn)服務(wù)器端的I/O操作是否完成便立即返回。在使用過(guò)程中只需直接調(diào)用異步的read和write方法來(lái)讀寫(xiě)數(shù)據(jù),在讀寫(xiě)過(guò)程完畢后由操作系統(tǒng)主動(dòng)通知應(yīng)用程序讀寫(xiě)操作是否完成。由AIO的讀寫(xiě)過(guò)程可以看出,因?yàn)樵谧x寫(xiě)完成后客戶端不需要再詢問(wèn)服務(wù)器端是完成了I/O操作,所以AIO非常適合于運(yùn)用在那些并發(fā)量大且長(zhǎng)連接的請(qǐng)求。AIO模型如圖3所示。
AIO中有幾個(gè)比較重要的類:
AsynchronousServerSocket:用來(lái)創(chuàng)建服務(wù)器端的ServerSocket并綁定地址監(jiān)聽(tīng)端口。
AsynchronousSocketChannel:Socket在異步非阻塞通信中的應(yīng)用,用來(lái)表示一個(gè)連接請(qǐng)求,并用來(lái)在通信過(guò)程中傳遞數(shù)據(jù)。
AsynchronousChannelGroup:異步通道的分組管理,目的是問(wèn)了資源共享。創(chuàng)建AsynchronousChannelGroup時(shí)需要為其綁定一個(gè)線程執(zhí)行器對(duì)象,這個(gè)線程池主要完成兩個(gè)任務(wù):處理I/O事件和派發(fā)CompletionHandler。在創(chuàng)建AsynchronousServerSocket時(shí)需要為其綁定一個(gè)AsynchronousChannelGroup。通過(guò)AsynchronousServerSocket創(chuàng)建的AsynchronousChannelGroup將屬于同一組,共享其中資源。
CompletionHandler:用于定義在異步IO操作完成后的回調(diào)接口。
3.3.1 服務(wù)器端
(1)創(chuàng)建AsynchronousChannelGroup;
(2)創(chuàng)建AsynchronousServerSocketChannel并將它綁定在AsynchronousChannelGroup上;
(3)為AsynchronousServerSocketChannel對(duì)象綁定端口號(hào);
(4)調(diào)用accept()接收客戶端請(qǐng)求實(shí)現(xiàn)CompletionHandler接口調(diào)用讀寫(xiě)方法進(jìn)行讀寫(xiě)數(shù)據(jù)。
3.3.2 客戶端
(1)創(chuàng)建AsynchronousSocketChannel;
(2)綁定IP地址和端口號(hào)鏈接服務(wù)低端實(shí)現(xiàn)CompletionHandler接口中方法直接進(jìn)行讀寫(xiě)數(shù)據(jù)。
3.4 各種I/O技g比較分析
BIO:同步阻塞I/O,使用難度簡(jiǎn)單,可靠性低,適用于鏈接并發(fā)量小的架構(gòu)且對(duì)服務(wù)器資源依賴更高。
NIO:同步非阻塞I/O,使用難度復(fù)雜,可靠性高,適用于并發(fā)量大且鏈接較短的場(chǎng)景。
AIO:異步非阻塞I/O,使用難度一般,可靠性高,適用于并發(fā)量大且鏈接長(zhǎng)的場(chǎng)景。
4 結(jié)語(yǔ)
傳統(tǒng)網(wǎng)絡(luò)在IO處理方面存在著性能不足的問(wèn)題,NIO與AIO包的引入解決了傳統(tǒng)IO性能瓶頸問(wèn)題,使的Java在網(wǎng)絡(luò)通信中有了更搞得效率。對(duì)于不同的IO來(lái)說(shuō),它們各自有有不同的應(yīng)用領(lǐng)域。對(duì)于那些并發(fā)量小,數(shù)據(jù)傳輸量小的場(chǎng)景來(lái)說(shuō),傳統(tǒng)的BIO完全可以勝任其工作。相反對(duì)于那些對(duì)性能要求比較高,并發(fā)量大且對(duì)IO的要求比較搞得場(chǎng)合來(lái)說(shuō)應(yīng)該選擇NIO或者BIO技術(shù)。如果客戶端與服務(wù)器在長(zhǎng)連接的情況下選擇AIO相比NIO會(huì)更加高效一些。相反,如果是短連接的應(yīng)用領(lǐng)域,則推薦使用NIO。
參考文獻(xiàn)
[1]范寶德,馬建生.Java非阻塞通訊研究[J].微計(jì)算機(jī)信息,2006,22(12-3):116-119.
[2]劉邦桂,李正凡.用Java實(shí)現(xiàn)流式Socket通訊[J].華東交通大學(xué)學(xué)報(bào),2007,24(05):110-112.
[3]封瑋,周世平.基于Java NIO的非阻塞通信的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2004(09):32-35.
[5]任小強(qiáng),陳金鷹,李文彬,胡波.網(wǎng)絡(luò)通信之Java Socket多線程通信[J].信息通信,2015(06):206-207.
作者簡(jiǎn)介
王少輝(1992-),男,山西省平順縣人。碩士學(xué)位。現(xiàn)為山東大學(xué)(威海)機(jī)電與信息工程學(xué)院學(xué)生。主要研究方向?yàn)殡娐放c系統(tǒng)。
陳曉鵬(1992-),男,天津市人。碩士學(xué)位?,F(xiàn)為山東大學(xué)(威海)機(jī)電與信息工程學(xué)院學(xué)生。主要研究方向?yàn)殡娐放c系統(tǒng)。