• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    面向服務(wù)架構(gòu)的演化和應(yīng)用

    2011-04-07 05:50:28戴建國趙慶展
    關(guān)鍵詞:服務(wù)器端服務(wù)提供者調(diào)用

    戴建國,梁 斌,趙慶展,郭 理,趙 欣

    (石河子大學(xué)信息科學(xué)與技術(shù)學(xué)院,新疆石河子832000)

    0 前言

    面向服務(wù)的體系架構(gòu)是一種異構(gòu)系統(tǒng)間共享信息的軟件設(shè)計(jì)方式[1],其目的是為了解決異構(gòu)平臺(tái)軟件系統(tǒng)之間的集成問題。在國外很多大的軟件廠商如IBM、BEA等提供SOA的解決方案和中間件產(chǎn)品。國內(nèi)的SOA應(yīng)用還處在概念宣傳和試用階段[2],但很多應(yīng)用SOA的需求都已出現(xiàn)。

    SOA的首要目標(biāo)是業(yè)務(wù)敏捷性,通過建設(shè)靈活的IT幫助業(yè)務(wù)快速應(yīng)變[3]。其實(shí)施從軟件到企業(yè)的管理方式都會(huì)發(fā)生相應(yīng)的變化。所以SOA實(shí)質(zhì)是一種業(yè)務(wù)架構(gòu),是企業(yè)為了適應(yīng)市場的快速變化而采用的戰(zhàn)略性業(yè)務(wù)架構(gòu)[4],而不是能夠買來的技術(shù),而且沒有現(xiàn)成的工具能夠立即生成SOA的解決方案[5]。

    由于SOA的本質(zhì)是抽象于具體架構(gòu)之上的一種思想,而不是一種具體的架構(gòu)實(shí)現(xiàn),所以只有圍繞著松散耦合、粗粒度、服務(wù)位置和傳輸協(xié)議透明這些SOA的核心思想去思考和構(gòu)建軟件系統(tǒng),并能夠真正實(shí)現(xiàn),才是實(shí)現(xiàn)了SOA[6]。同時(shí),SOA一般也不是從頭構(gòu)建的系統(tǒng),而是通過對現(xiàn)有系統(tǒng)資源不斷整合得到。本文從一個(gè)簡單的Web系統(tǒng)開始,隨著需求的變化不斷重構(gòu)系統(tǒng)的架構(gòu),并給出各個(gè)階段系統(tǒng)的架構(gòu)方案,從而最終自然演化成為面向服務(wù)架構(gòu),并使用開源的ESB總線實(shí)現(xiàn)了設(shè)計(jì)方案。

    1 三層架構(gòu)設(shè)計(jì)

    1.1 普通三層架構(gòu)

    兵團(tuán)社會(huì)經(jīng)濟(jì)信息系統(tǒng)最初需求是開發(fā)一個(gè)簡單的B/S結(jié)構(gòu)系統(tǒng),可以方便用戶查詢,十幾個(gè)表,需求較為簡單,系統(tǒng)總體結(jié)構(gòu)如圖1所示,普通用戶客戶端和系統(tǒng)管理客戶端通過瀏覽器進(jìn)行。系統(tǒng)采用了簡單的三層架構(gòu),采用jsp作為顯示層,應(yīng)用層采用servlet,訪問數(shù)據(jù)庫的數(shù)據(jù)層采用jdbc連接,數(shù)據(jù)操作使用sql語句,由于sql語句與具體數(shù)據(jù)庫產(chǎn)品相關(guān),所以系統(tǒng)與具體的數(shù)據(jù)庫產(chǎn)品是緊耦合的,系統(tǒng)架構(gòu)圖如圖2所示。當(dāng)前系統(tǒng)是一個(gè)非常普通的Web應(yīng)用。

    1.2 基于Spring+Struts+Hibernate的三層架構(gòu)

    隨著開發(fā)的進(jìn)行,各個(gè)子課題對于社會(huì)經(jīng)濟(jì)數(shù)據(jù)庫的要求發(fā)生了變化,增加了很多數(shù)據(jù),而且數(shù)據(jù)還有可能持續(xù)發(fā)生變化,數(shù)據(jù)訪問層頻繁發(fā)生修改,很容易出錯(cuò),需要降低各層之間緊耦合狀態(tài),分離出服務(wù)層。系統(tǒng)改為采用常見的SSH(Struts+Spring+Hibernate)搭配,系統(tǒng)訪問模式和整體架構(gòu)不發(fā)生變化,各層采用相應(yīng)的開發(fā)框架,界面層采用Struts2框架,數(shù)據(jù)訪問層采用Hibernate框架,Spring作為應(yīng)用框架,主要提供對象工廠和事務(wù)管理功能,以最大程度的使各層解耦,并簡化事務(wù)管理。此時(shí)系統(tǒng)的架構(gòu)沒有變化,只是三層架構(gòu)采用了相應(yīng)的開發(fā)框架,增加了系統(tǒng)的靈活性和健壯性,具體如圖3所示。

    圖3 SSH開發(fā)框架圖

    2 混合架構(gòu)

    2.1 普通混合架構(gòu)模式

    在開發(fā)過程中,數(shù)據(jù)的管理方式被考慮進(jìn)來,調(diào)查發(fā)現(xiàn)數(shù)據(jù)來源比較復(fù)雜,需要從其他地方獲取數(shù)據(jù)并進(jìn)行人工核實(shí)和篩選,數(shù)據(jù)量比較大,單靠通過管理員以后臺(tái)方式管理數(shù)據(jù)很麻煩,建立數(shù)據(jù)管理客戶端軟件非常有必要,這樣系統(tǒng)就采用了兩種管理模式:一種是C/S客戶端管理;一種是使用瀏覽器進(jìn)行后臺(tái)管理,系統(tǒng)演變成了B/S和C/S的混合架構(gòu)模式。如圖4所示是混合模式的架構(gòu)圖,其中新增了C/S結(jié)構(gòu)。兩種管理模式對數(shù)據(jù)庫的訪問方式如圖5所示。

    2.2 采用遠(yuǎn)程方法調(diào)用的混合架構(gòu)模式

    當(dāng)前系統(tǒng)已經(jīng)可以滿足訪問和維護(hù)的要求,但是存在一個(gè)問題:服務(wù)器端和客戶端軟件除了界面層和應(yīng)用層不一樣,實(shí)體層(實(shí)體類、Hibernate配置文件、Hibernate映射文件)必須保持一模一樣,數(shù)據(jù)訪問層代碼也基本相同,這樣不但出現(xiàn)大量的代碼冗余,系統(tǒng)升級和維護(hù)時(shí)必須同時(shí)維護(hù)兩處相同的代碼,很不方便而且容易出錯(cuò)。系統(tǒng)改變?yōu)閷?shù)據(jù)訪問邏輯置于服務(wù)器端,客戶端以遠(yuǎn)程方法調(diào)用的方式進(jìn)行訪問,這樣客戶端和服務(wù)器端只需要保持相同的數(shù)據(jù)訪問接口。由于客戶端和服務(wù)端都使用java開發(fā),所以可以采用rmi技術(shù)實(shí)現(xiàn)[7]。系統(tǒng)演化成如圖6的方式。

    服務(wù)器端生成服務(wù)代理,客戶端通過遠(yuǎn)程方法調(diào)用(Rmi)服務(wù)器端的方法,這樣數(shù)據(jù)訪問邏輯只需要在服務(wù)器端生成一次,客戶端不需要相應(yīng)的實(shí)體類和Hibernate配置文件,系統(tǒng)維護(hù)和升級都很方便。

    3 點(diǎn)對點(diǎn)Web服務(wù)集成

    3.1 服務(wù)發(fā)布與調(diào)用模式

    兵團(tuán)社會(huì)經(jīng)濟(jì)信息系統(tǒng)需要為其余各個(gè)子課題提供數(shù)據(jù)服務(wù),如農(nóng)情系統(tǒng),水資源監(jiān)測等,而各子課題是平臺(tái)異構(gòu)的,有的使用.net,有的使用vb。為了讓各子系統(tǒng)使用社會(huì)經(jīng)濟(jì)數(shù)據(jù),系統(tǒng)結(jié)構(gòu)進(jìn)一步發(fā)生變化,將數(shù)據(jù)的獲取以Web服務(wù)的方式發(fā)布,其余子課題獲取服務(wù)。系統(tǒng)演化成為如圖7所示結(jié)構(gòu)。

    圖6 改進(jìn)后的混合架構(gòu)開發(fā)架構(gòu)圖

    3.2 點(diǎn)對點(diǎn)Web服務(wù)集成

    由于各個(gè)子系統(tǒng)之間有相關(guān)性,比如農(nóng)情信息系統(tǒng)會(huì)需要水資源與水災(zāi)害的數(shù)據(jù)和分析結(jié)果。這樣發(fā)生了子系統(tǒng)之間的相互調(diào)用,由于平臺(tái)異構(gòu),各子系統(tǒng)如果要調(diào)用對方的操作,只能以服務(wù)的方式進(jìn)行,所以最終各個(gè)子課題都會(huì)發(fā)布與調(diào)用服務(wù),既是服務(wù)的消費(fèi)者也是服務(wù)的提供者。這就是點(diǎn)對點(diǎn)的Web服務(wù)集成,具體如圖8所示。

    點(diǎn)對點(diǎn)的Web服務(wù)集成相當(dāng)于一種“私下交易”,這種“私下交易”的缺點(diǎn)是服務(wù)的消費(fèi)者必須知道服務(wù)提供者的位置,這樣就使得消費(fèi)者與提供者之間緊耦合,服務(wù)提供者發(fā)布一項(xiàng)服務(wù)就需要通知所有的消費(fèi)者,如果服務(wù)提供者的地點(diǎn)或者服務(wù)接口發(fā)生了更改,所有消費(fèi)者必須改動(dòng)并且重新編譯。并且,如果服務(wù)發(fā)生故障不能使用,也沒有失效備援機(jī)制和安全管理機(jī)制,整個(gè)系統(tǒng)缺乏對服務(wù)的統(tǒng)一管理。

    圖7 提供Web服務(wù)的開發(fā)架構(gòu)圖

    圖8 點(diǎn)對點(diǎn)web服務(wù)集成

    為了改變服務(wù)提供者和服務(wù)消費(fèi)者的緊耦合現(xiàn)象,方便各子系統(tǒng)發(fā)布、發(fā)現(xiàn)和調(diào)用服務(wù),需要一個(gè)基礎(chǔ)設(shè)施的支持,即企業(yè)服務(wù)總線(ESB)。ESB相當(dāng)于服務(wù)中介,其職責(zé)是使消費(fèi)者能夠調(diào)用供應(yīng)者提供的服務(wù)[8],能夠?qū)Ψ?wù)進(jìn)行管理,使得服務(wù)提供者對于服務(wù)消費(fèi)者透明,消費(fèi)者無需知道是誰為它提供服務(wù),當(dāng)然也可以明確選擇某幾個(gè)提供者,服務(wù)提供者發(fā)生了更改無需通知消費(fèi)者,消費(fèi)者可以處于“幸福的無知狀態(tài)”,這樣使得服務(wù)提供者和消費(fèi)者之間完全解耦。這就是面向服務(wù)架構(gòu),采用ESB后的系統(tǒng)架構(gòu)如圖9所示。

    采用ESB的好處不僅僅是提供了松耦合的架構(gòu),而且還可以提供如下功能[9]:

    (1)負(fù)載均衡,如果有多個(gè)服務(wù)提供者可以對同一個(gè)服務(wù)請求提供服務(wù),則可以根據(jù)負(fù)載均衡的原則選擇服務(wù)提供者。

    (2)安全管理,提供統(tǒng)一的安全標(biāo)準(zhǔn)和規(guī)則。

    (3)服務(wù)聚合,可以對小的服務(wù)進(jìn)行聚合而成大的服務(wù),也就是服務(wù)的編排??梢赃x擇聚合方式和粒度,靈活的根據(jù)適應(yīng)外界的規(guī)則變化對信息系統(tǒng)提出的新要求。

    (4)監(jiān)控功能,主動(dòng)觀察總線的服務(wù)性能、分析某項(xiàng)服務(wù)調(diào)用的高峰期、服務(wù)調(diào)用是否完整等。

    圖9 面向服務(wù)的系統(tǒng)架構(gòu)圖

    4 面向服務(wù)架構(gòu)

    4.1 基于Webservice的服務(wù)設(shè)計(jì)

    SOA思想本身并沒有規(guī)定在以面向服務(wù)思想為指導(dǎo)的應(yīng)用程序的構(gòu)造過程中必須使用的實(shí)現(xiàn)技術(shù)。而在現(xiàn)實(shí)當(dāng)中,使用最多的用于實(shí)現(xiàn)SOA的技術(shù),莫過于Web服務(wù)。Web服務(wù)是一套開放標(biāo)準(zhǔn),它可以指導(dǎo)建立分布式應(yīng)用平臺(tái),使得運(yùn)行在不同操作系統(tǒng)和不同程序語言實(shí)現(xiàn)的功能模塊,能夠通過它提供的中立的接口描述,有效地進(jìn)行分工協(xié)作[10]。Web服務(wù)技術(shù)和以前的分布式計(jì)算技術(shù)比較,具有更好的可靠性、可擴(kuò)展性、易用性和協(xié)議開放性[11]。

    系統(tǒng)服務(wù)的發(fā)布采用了Spring+XFire的框架創(chuàng)建和描述服務(wù),以登錄操作為例,下面是描述服務(wù)的service-servlet.xml文件部分內(nèi)容。

    4.2 基于Synapse的企業(yè)服務(wù)總線

    服務(wù)總線很多,開源和商業(yè)的都有很多應(yīng)用,在實(shí)際項(xiàng)目中采用了開源的總線系統(tǒng),Apache的Synapse作為項(xiàng)目的服務(wù)總線,Synapse采用輕量級的XML和Web服務(wù)為中心的消息模型。它本身并不創(chuàng)建服務(wù),只是提供服務(wù)的注冊和路由等管理。下面是登錄服務(wù)發(fā)布的部分內(nèi)容。

    4.3 服務(wù)調(diào)用

    服務(wù)發(fā)布完畢后,在客戶端就可以編寫程序進(jìn)行服務(wù)的調(diào)用??蛻舳耸紫葎?chuàng)建RPCServiceClient類型的對象,并初始化其擁有的Option對象類型的屬性,最后調(diào)用RPCServiceClient的invokeBlocking方法,該方法會(huì)調(diào)用服務(wù)提供者的相應(yīng)方法,最終將調(diào)用結(jié)果返回。

    4.4 效果

    為了不斷適應(yīng)需求的變化,為異構(gòu)的軟件系統(tǒng)提供互操作,兵團(tuán)社會(huì)經(jīng)濟(jì)信息系統(tǒng)的軟件架構(gòu)最終演化為面向服務(wù)的架構(gòu)。企業(yè)服務(wù)總線的建立,使得該架構(gòu)為集成更多的軟件系統(tǒng)提供了基礎(chǔ)設(shè)施上的支持。各異構(gòu)的子系統(tǒng)都可以在總線上發(fā)布或查找服務(wù),從而實(shí)現(xiàn)系統(tǒng)集成的目標(biāo)。

    5 結(jié)束語

    采用基于SOA企業(yè)應(yīng)用集成方式能有效解決系統(tǒng)集成的問題,克服傳統(tǒng)集成方式耦合度高、安全性和靈活性差、集成成本過高等缺點(diǎn)[12],甚至完成傳統(tǒng)集成方式無法完成的集成問題。但SOA并不能一蹴而就,是為了集成異構(gòu)系統(tǒng)而不斷演化的結(jié)果。通過兵團(tuán)社會(huì)經(jīng)濟(jì)信息系統(tǒng)的不斷演化從而最終實(shí)現(xiàn)面向服務(wù)架構(gòu),展現(xiàn)了SOA的實(shí)現(xiàn)過程,并在該過程中表現(xiàn)了SOA如何通過不斷降低系統(tǒng)之間的耦合和依賴,實(shí)現(xiàn)異構(gòu)系統(tǒng)的快速集成,從而達(dá)到業(yè)務(wù)的敏捷性。

    [1] 陳朋,李光耀.基于面向服務(wù)體系結(jié)構(gòu)SOA的軟件開發(fā)[J].河南科技大學(xué)學(xué)報(bào):自然科學(xué)版,2006,27(5):29-31.

    [2] 常政.SOA中國企業(yè)應(yīng)用現(xiàn)狀調(diào)查[J].程序員,2007(6):68-69.

    [3] 毛新生.此SOA非彼SOA[J].程序員,2007(6):48-51.

    [4] 尹紅麗,王永明.面向服務(wù)的體系結(jié)構(gòu)主要實(shí)現(xiàn)技術(shù)比較研究[J].計(jì)算機(jī)科學(xué),2009,36(1):282-285.

    [5] David C,Tyler J.JavaWeb Services[M].New York:O’Reilly Press,2002.

    [6] 王滿紅,陳榮華.SOA概念、技術(shù)與設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2007.

    [7] 葉乃文.Java2基礎(chǔ)知識(shí)[M].北京:機(jī)械工業(yè)出版社,2005.

    [8] 梁愛虎.SOA應(yīng)用詳解[M].北京:電子工業(yè)出版社,2007.

    [9] 楊彩,劉曉霞,賈松浩.基于SOAP的異構(gòu)系統(tǒng)集成的研究與應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2008,25(4):79-81.

    [10] 倪志剛,王銘孜,黃兆勤.SOA權(quán)威指南:通過BEA Aqualogic Service Bus實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2008.

    [11] NicolaiM J.SOA實(shí)踐指南[M].程樺,譯.北京:電子工業(yè)出版社,2008.

    [12] 張海軍,史維峰,劉偉.基于SOA企業(yè)應(yīng)用集成框架研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(8):2085-2088.

    猜你喜歡
    服務(wù)器端服務(wù)提供者調(diào)用
    網(wǎng)絡(luò)服務(wù)提供者的侵權(quán)責(zé)任研究
    法制博覽(2020年11期)2020-11-30 03:36:52
    核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
    LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
    論網(wǎng)絡(luò)服務(wù)提供者刑事責(zé)任的歸責(zé)模式一一以拒不履行網(wǎng)絡(luò)安全管理義務(wù)罪為切入點(diǎn)
    淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
    成功(2018年10期)2018-03-26 02:56:14
    論網(wǎng)絡(luò)服務(wù)提供者的侵權(quán)責(zé)任
    法制博覽(2017年16期)2017-01-28 00:01:59
    基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
    在Windows中安裝OpenVPN
    網(wǎng)絡(luò)服務(wù)提供者第三方責(zé)任的立法審視
    湖湘論壇(2015年4期)2015-12-01 09:30:16
    利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
    海盐县| 东莞市| 邯郸县| 黄陵县| 宜宾县| 潍坊市| 潞城市| 苏尼特右旗| 绵阳市| 苍山县| 新蔡县| 南郑县| 开远市| 全南县| 铁力市| 班玛县| 乐陵市| 河池市| 钟山县| 锦州市| 无为县| 萨迦县| 漳浦县| 伊宁县| 同仁县| 孝义市| 上饶市| 昆明市| 广昌县| 石台县| 永州市| 南郑县| 南华县| 楚雄市| 惠州市| 普格县| 金乡县| 南昌县| 绥德县| 汪清县| 宜黄县|