WebService學習系列之基礎(chǔ)理論知識

WebService學習系列之基礎(chǔ)理論知識

Webservice腦圖

本系列文章將介紹WebService是什么幕屹、 WebService的應(yīng)用場景湃鹊、WebService的標準規(guī)范、WebService的分類惑申、WebService的落地實現(xiàn)框架岩睁、WebService怎么玩

是什么

是什么歧寺?

webservice就是web服務(wù)燥狰,其本質(zhì)是遠程調(diào)用技術(shù)的一套標準或規(guī)范

應(yīng)用場景

應(yīng)用場景

webservice應(yīng)用于需要進行遠程過程調(diào)用的場景中棘脐,比如獲取天氣預(yù)報的服務(wù)等

調(diào)用過程
1.服務(wù)端暴露服務(wù)
2.客戶端調(diào)用服務(wù)端提供的服務(wù)

交互細節(jié)
1.服務(wù)器首先用一套標準的方法向外界描述它所提供的服務(wù)的內(nèi)容斜筐,就屬于JAX-WS規(guī)范中的WSDL;
2.客戶端需要以一種標準的協(xié)議來調(diào)用此服務(wù),這屬于JAX-WS規(guī)范中的SOAP;
3.服務(wù)提供者將服務(wù)內(nèi)容放在一個公共的網(wǎng)址讓大家查詢蛀缝,就屬于JAX-WS規(guī)范中 的UDDI.(可以沒有).

標準規(guī)范

webservice標準規(guī)范

WebService是一套標準規(guī)范顷链,它制定了webservice開發(fā)的套路,只有按照這套標準玩才能開發(fā)webservice屈梁。有過三種標準嗤练,分別是JAX-WS榛了、JAX-RS、JAXM&SAAJ煞抬,下面是各種規(guī)范的概念性東西霜大,非常枯燥革答,但是也需要了解一下战坤。

1.JAX-WS(JAX-RPC)

JAX-WS 的全稱為Java API for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服務(wù)規(guī)范JAX-RPC(Java API For XML-Remote Procedure Call)目前已經(jīng)被JAX-WS 規(guī)范取代残拐。從java5開始支持JAX-WS2.0版本途茫,Jdk1.6.0_13以后的版本支持2.1版本,jdk1.7支持2.2版本溪食。

JAX-WS的三要素:WSDL囊卜、SOUP、UUDI

  • WSDL——本質(zhì)是服務(wù)內(nèi)容的標準化描述错沃,是一種接口API文檔

WSDL的全稱是web service Description Language,是一種基于XML格式的關(guān)于web服務(wù)的描述語言栅组。

WSDL作用:web service提供者發(fā)布自己web服務(wù)的API文檔,通過這個文檔使用者可以知道接口服務(wù)的訪問路徑枢析、服務(wù)方法笑窜、接口參數(shù)及參數(shù)的類型、服務(wù)返回值及值的類型等等登疗。

WSDL獲取: WSDL文件保存在Web服務(wù)器上排截,通過一個url地址就可以訪問到它》妫客戶端要調(diào)用一個WebService服務(wù)之前断傲,要知道該服務(wù)的WSDL文件的地址。WebService服務(wù)提供商可以通過兩種方式來暴露它的WSDL文件地址:
1.注冊到UDDI服務(wù)器智政,以便被人查找认罩;
2.直接告訴給客戶端調(diào)用者。

  • SOAP——本質(zhì)是標準的傳輸協(xié)議

SOAP是web service的標準通信協(xié)議续捂,SOAP為simple object access protocoll的縮寫垦垂,簡單對象訪問協(xié)議. 它是一種標準化的傳輸消息的XML消息格式。WebService通過HTTP協(xié)議發(fā)送請求和接收結(jié)果時牙瓢,發(fā)送的請求內(nèi)容和結(jié)果內(nèi)容都采用XML格式封裝劫拗,并增加了一些特定的HTTP消息頭,以說明HTTP消息的內(nèi)容格式矾克,這些特定的HTTP消息頭和XML內(nèi)容格式就是SOAP協(xié)議页慷。SOAP提供了標準的RPC(Remote Procedure Call Protocol——遠程過程調(diào)用協(xié)議)方法來調(diào)用Web Service。Soap協(xié)議是基于http的應(yīng)用層協(xié)議,soap協(xié)議傳輸是xml數(shù)據(jù)酒繁。所以SOAP協(xié)議 = HTTP協(xié)議 + XML數(shù)據(jù)格式滓彰。

  • UUDI——本質(zhì)是服務(wù)的公共網(wǎng)址。

將web service進行UDDI注冊發(fā)布,UDDI是一種創(chuàng)建注冊表服務(wù)的規(guī)范,以便大家將自己的web service進行注冊發(fā)布供使用者查找.然而當服務(wù)提供者想將自己的web service向全世界公布州袒,以便外部找到其服務(wù)時揭绑,那么服務(wù)提供者可以將自己的web service注冊到相應(yīng)的UDDI商用注冊網(wǎng)站。
因為WSDL文件中已經(jīng)給定了web service的地址URI郎哭,外部可以直接通過WSDL提供的URI進行相應(yīng)的web service調(diào)用洗做。所以UDDI并不是一個必需的web service組件,服務(wù)方完全可以不進行UDDI的注冊彰居。

2.JAX-RS

JAX-RS 是JAVA 針對REST(Representation State Transfer)風格制定的一套Web 服務(wù)規(guī)范诚纸,由于推出的較晚,該規(guī)范(JSR 311陈惰,目前JAX-RS 的版本為1.0)并未隨JDK1.6 一起發(fā)行畦徘。
jax-RS可以發(fā)布 rest風格webservice,因為rest的webservice不采用soap傳輸抬闯,直接采用http傳輸井辆,可以返回xml或json,比較輕量溶握。聽說以后會流行這種規(guī)范杯缺,不過我現(xiàn)在還暫時在實際項目中沒有應(yīng)用到,暫時沒有學習該系列知識睡榆。

3.JAXM&SAAJ(已廢棄)

JAXM(JAVA API For XML Message)主要定義了包含了發(fā)送和接收消息所需的API萍肆,SAAJ(SOAP With Attachment APIFor Java,JSR 67)是與JAXM 搭配使用的API胀屿,為構(gòu)建SOAP 包和解析SOAP 包提供了重要的支持塘揣,支持附件傳輸?shù)龋琂AXM&SAAJ 與JAX-WS 都是基于SOAP 的Web 服務(wù)宿崭,相比之下JAXM&SAAJ 暴漏了SOAP更多的底層細節(jié)亲铡,編碼比較麻煩,而JAX-WS 更加抽象葡兑,隱藏了更多的細節(jié)奖蔓,更加面向?qū)ο螅瑢崿F(xiàn)起來你基本上不需要關(guān)心SOAP 的任何細節(jié))

分類

Webservice分類

根據(jù)其規(guī)范的不同讹堤,產(chǎn)生了不同風格的webservice

1吆鹤、SOAP WebService,采用JAX-WS規(guī)范蜕劝。一般如果不特殊說明檀头,平時我們聽說的Webservice就是指的SOAP WebService,后面討論的也都是這種岖沛。
2暑始、RESTful WebService,采用 JAX-RS規(guī)范婴削。聽說以后會流行這種廊镜。后面補討論這種。

落地實現(xiàn)框架

天上飛的理論唉俗,必須要有落地的實現(xiàn)嗤朴,webservice指定了一套標準規(guī)范,就必須要有一套實現(xiàn)了它規(guī)范的實現(xiàn)虫溜,落地實現(xiàn)框架有如下幾種

落地實現(xiàn)框架

cxf和axis2最為常用雹姊,Axis與XFire已隨著技術(shù)不斷的更替慢慢落幕,而目前也只有axis2和cxf官方有更新衡楞,Axis與XFire都已不再更新吱雏。

那些落伍的框架本人認為只需要知道有這么回事就行,畢竟就怕有些姥姥級別的項目里面還有用這些框架開發(fā)webservice服務(wù)端的瘾境,如果這些落后的框架支持一些被廢棄的webservice規(guī)范歧杏,如果用其他流行框架根據(jù)wsdl生成客戶端代碼時,有可能不支持迷守,本人就遇到過用JAX-RPC這種被廢棄的規(guī)范開發(fā)的webservice服務(wù)端的犬绒,我根據(jù)它生成的wsdl文件,用cxf去生成webservice客戶端代碼時失敗了兑凿。但是用AXIS2框架提供的工具可以生成凯力,我估計是AXIS2框架還是支持JAX-RPC這種被廢棄的規(guī)范。

  • JWS——最簡單礼华、方便

這是Java6發(fā)布所提供的對Web Service服務(wù)的一種實現(xiàn)沮协。它開發(fā)最簡單,最方便卓嫂,不過實際項目中用得并不多慷暂,個人估計是功能沒有CXF和AXIS2全,性能也沒有他們高晨雳。

  • CXF——最流行

最流行的框架行瑞。CXF是Apache旗下一個重磅的SOA簡易框架,它實現(xiàn)了ESB(企業(yè)服務(wù)總線)餐禁。CXF來自于XFire項目血久,經(jīng)過改造后形成的,就像目前的Struts2來自WebWork一樣帮非⊙跬拢可以看出XFire的命運會和WebWork的命運一樣讹蘑,最終會淡出人們的視線。CXF不但是一個優(yōu)秀的Web Services / SOAP / WSDL 引擎筑舅,也是一個不錯的ESB總線座慰,為SOA的實施提供了一種選擇方案,當然他不是最好的翠拣,它僅僅實現(xiàn)了SOA架構(gòu)的一部分版仔。
注:對于Axis2與CXF之間的關(guān)系,一個是Axis2出現(xiàn)的時間較早误墓,而CXF的追趕速度快蛮粮。

  • AXIS2——重量級,需要很多jar包

Axis2是Apache下的一個重量級WebService框架谜慌,準確說它是一個Web Services / SOAP / WSDL 的引擎然想,是WebService框架的集大成者,它能不但能制作和發(fā)布WebService欣范,而且可以生成Java和其他語言版WebService客戶端和服務(wù)端代碼又沾。這是它的優(yōu)勢所在。但是熙卡,這也不可避免的導(dǎo)致了Axis2的復(fù)雜性杖刷,使用過的開發(fā)者都知道,它所依賴的包數(shù)量和大小都是很驚人的驳癌。

  • AXIS——已落伍滑燃,被AXIS1取代

AXIS2的早期產(chǎn)品,被AXIS2升級取代

  • Xfire——已落伍颓鲜,被CXF整合取代

XFire是一個高性能的WebService框架表窘,在Java6之前,它的知名度甚至超過了Apache的Axis2甜滨,XFire的優(yōu)點是開發(fā)方便乐严,與現(xiàn)有的Web整合很好,可以融為一體衣摩,并且開發(fā)也很方便昂验。但是對Java之外的語言,沒有提供相關(guān)的代碼工具艾扮。XFire后來被Apache收購了既琴,原因是它太優(yōu)秀了,收購后泡嘴,被整合到CXF中去了甫恩。

怎么玩

既然有這么多落地的實現(xiàn)框架,那么就可以用這些框架來進行WebService開發(fā)酌予。利用這些Webservice開發(fā)框架來進行開發(fā)非常簡單磺箕。

1.如果我們是開發(fā)客戶端
那么我們可以直接通過服務(wù)端發(fā)布的wsdl文件直接生成客戶端代碼奖慌,都不用自己開發(fā)代碼。

2.如果我們是開發(fā)服務(wù)端

  • 可以先按Webservice框架的API進行開發(fā)后松靡,發(fā)布webservice服務(wù)简僧,最后生成wsdl文件;
  • 也可以先提前制定wsdl文件击困,然后通過wsdl文件生成服務(wù)端代碼發(fā)布webservice服務(wù)涎劈,這種方式服務(wù)端不需要自己開發(fā)代碼广凸,不過手動編寫wsdl文件不是那么簡單阅茶,但是有工具可以利用wsdl Editor,就是那種傻瓜式的圖形化拖拽軟件。制定好接口規(guī)范后谅海,可以用wsdl Editor來編輯生成對應(yīng)接口規(guī)范的wsdl文件脸哀。

下面幾篇文章中我將介紹如何使用jdk,cxf兩種框架來開發(fā)webservice


怎么玩
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扭吁,隨后出現(xiàn)的幾起案子撞蜂,更是在濱河造成了極大的恐慌,老刑警劉巖侥袜,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝌诡,死亡現(xiàn)場離奇詭異,居然都是意外死亡枫吧,警方通過查閱死者的電腦和手機浦旱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來九杂,“玉大人颁湖,你說我怎么就攤上這事±。” “怎么了甥捺?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長镀层。 經(jīng)常有香客問我镰禾,道長,這世上最難降的妖魔是什么唱逢? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任羡微,我火速辦了婚禮,結(jié)果婚禮上惶我,老公的妹妹穿的比我還像新娘妈倔。我一直安慰自己,他們只是感情好绸贡,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布盯蝴。 她就那樣靜靜地躺著毅哗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捧挺。 梳的紋絲不亂的頭發(fā)上虑绵,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音闽烙,去河邊找鬼翅睛。 笑死,一個胖子當著我的面吹牛黑竞,可吹牛的內(nèi)容都是我干的捕发。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼很魂,長吁一口氣:“原來是場噩夢啊……” “哼扎酷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起遏匆,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤法挨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后幅聘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凡纳,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年帝蒿,在試婚紗的時候發(fā)現(xiàn)自己被綠了荐糜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡陵叽,死狀恐怖狞尔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巩掺,我是刑警寧澤偏序,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站胖替,受9級特大地震影響研儒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜独令,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一端朵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧燃箭,春花似錦冲呢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽邻薯。三九已至,卻和暖如春乘凸,著一層夾襖步出監(jiān)牢的瞬間厕诡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工营勤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灵嫌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓葛作,卻偏偏與公主長得像寿羞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子进鸠,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容