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