国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向服務架構的演化和應用

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

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

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

0 前言

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

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

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

1 三層架構設計

1.1 普通三層架構

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

1.2 基于Spring+Struts+Hibernate的三層架構

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

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

2 混合架構

2.1 普通混合架構模式

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

2.2 采用遠程方法調(diào)用的混合架構模式

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

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

3 點對點Web服務集成

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

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

圖6 改進后的混合架構開發(fā)架構圖

3.2 點對點Web服務集成

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

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

圖7 提供Web服務的開發(fā)架構圖

圖8 點對點web服務集成

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

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

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

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

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

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

圖9 面向服務的系統(tǒng)架構圖

4 面向服務架構

4.1 基于Webservice的服務設計

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

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

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

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

4.3 服務調(diào)用

服務發(fā)布完畢后,在客戶端就可以編寫程序進行服務的調(diào)用。客戶端首先創(chuàng)建RPCServiceClient類型的對象,并初始化其擁有的Option對象類型的屬性,最后調(diào)用RPCServiceClient的invokeBlocking方法,該方法會調(diào)用服務提供者的相應方法,最終將調(diào)用結果返回。

4.4 效果

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

5 結束語

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

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

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

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

[4] 尹紅麗,王永明.面向服務的體系結構主要實現(xiàn)技術比較研究[J].計算機科學,2009,36(1):282-285.

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

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

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

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

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

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

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

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

猜你喜歡
服務器端服務提供者調(diào)用
網(wǎng)絡服務提供者的侵權責任研究
Linux環(huán)境下基于Socket的數(shù)據(jù)傳輸軟件設計
核電項目物項調(diào)用管理的應用研究
LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
論網(wǎng)絡服務提供者刑事責任的歸責模式一一以拒不履行網(wǎng)絡安全管理義務罪為切入點
淺析異步通信層的架構在ASP.NET 程序中的應用
基于Qt的安全即時通訊軟件服務器端設計
論網(wǎng)絡服務提供者的侵權責任
基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
網(wǎng)絡服務提供者第三方責任的立法審視
中西区| 婺源县| 威远县| 五指山市| 永修县| 疏勒县| 蓬莱市| 务川| 舞阳县| 阿拉善盟| 德江县| 元氏县| 漳浦县| 米脂县| 弥勒县| 青海省| 东乡族自治县| 正镶白旗| 沈阳市| 故城县| 抚远县| 教育| 勐海县| 邓州市| 龙泉市| 乐都县| 山东省| 台东县| 宁化县| 哈密市| 江都市| 江达县| 甘南县| 唐河县| 镇康县| 东乡族自治县| 溧水县| 漳浦县| 三门县| 拜泉县| 滦南县|