webService基礎知識--認識WebService

      以前在找工做的時候,有面試官問到WebService,當時沒有接觸過,正好如今作的項目中有用到WebService,因此就趁着業餘時間來學習了。html

1、簡介

先來看看百度百科對WebService的解釋:      java

      Web service是一個平臺獨立的,低耦合的,自包含的、基於可編程的web的應用程序,可以使用開放的XML(標準通用標記語言下的一個子集)標準描述、發佈、發現、協調和配置這些應用程序,用於開發分佈式的互操做的應用程序web

      Web Service技術, 能使得運行在不一樣機器上的不一樣應用無須藉助附加的、專門的第三方軟件或硬件, 就可相互交換數據或集成。依據Web Service規範實施的應用之間, 不管它們所使用的語言、 平臺或內部協議是什麼, 均可以相互交換數據。Web Service是自描述、 自包含的可用網絡模塊, 能夠執行具體的業務功能。Web Service也很容易部署, 由於它們基於一些常規的產業標準以及已有的一些技術,諸如標準通用標記語言下的子集XML、HTTP。Web Service減小了應用接口的花費。Web Service爲整個企業甚至多個組織之間的業務流程的集成提供了一個通用機制。面試

      簡單說, WebService就是一些站點開放一些服務出來, 也能夠是你本身開發的Service, 也就是一些方法, 經過URL,指定某一個方法名,發出請求,站點裏的這個服務(方法),接到你的請求,根據傳過來的參數,作一些處理, 而後把處理後的結果以XML形式返回來給你,你的程序就解析這些XML數據,而後顯示出來或作其它操做.
舉個例子: 不少大的站點提供有天氣預報的WebService,只要你發出請求過來,它就返回天氣預報的數據,而後你把結果顯示在本身的程序上.編程

       Web Service也叫XML Web Service WebService是一種能夠接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通信技術。是經過SOAP在Web上提供的軟件服務,使用WSDL文件進行說明,並經過UDDI進行註冊。瀏覽器

XML:(Extensible Markup Language)擴展型可標記語言。面向短時間的臨時數據處理、面向萬維網絡,是Soap的基礎。服務器

Soap:(Simple Object Access Protocol)簡單對象存取協議。是XML Web Service 的通訊協議。當用戶經過UDDI找到你的WSDL描述文檔後,他經過能夠SOAP調用你創建的Web服務中的一個或多個操做。SOAP是XML文檔形式的調用方法的規範,它能夠支持不一樣的底層接口,像HTTP(S)或者SMTP。SOAP協議 = HTTP協議 + XML數據格式網絡

WSDL:(Web Services Description Language) WSDL 文件是一個 XML 文檔,用於說明一組 SOAP 消息以及如何交換這些消息。大多數狀況下由軟件自動生成和使用。它是WebService客戶端和服務器端都 能理解的標準格式。由於是基於XML的,因此WSDL既是機器可閱讀的,又是人可閱讀的,這將是一個很大的好處。一些最新的開發工具既能根據你的 Web service生成WSDL文檔,又能導入WSDL文檔,生成調用相應WebService的代理類代碼。框架

UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務供應商和使用者的新項目。在用戶可以調用Web服務以前,必須肯定這個服務內包含哪些商務方法,找到被調用的接口定義,還要在服務端來編制軟件,UDDI是一種根據描述文檔來引導系統查找相應服務的機制。UDDI利用SOAP消息機制(標準的XML/HTTP)來發布,編輯,瀏覽以及查找註冊信息。它採用XML格式來封裝各類不一樣類型的數據,而且發送到註冊中心或者由註冊中心來返回須要的數據。分佈式

2、WebService開發

  WebService開發能夠分爲服務器端開發和客戶端開發兩個方面

2.一、服務端開發

  把公司內部系統的業務方法發佈成WebService服務,供遠程合做單位和我的調用。(藉助一些WebService框架能夠很輕鬆地把本身的業務對象發佈成WebService服務,Java方面的典型WebService框架包括:axis,xfire,cxf 等,java ee服務器一般也支持發佈WebService服務,例如JBoss。)

2.二、客戶端開發 

  調用別人發佈的WebService服務,大多數人從事的開發都屬於這個方面,例如,調用天氣預報WebService服務。(使用廠 商的WSDL2Java之類的工具生成靜態調用的代理類代碼;使用廠商提供的客戶端編程API類;使用SUN公司早期標準的jax-rpc開發包;使用 SUN公司最新標準的jax-ws開發包。固然SUN已被ORACLE收購)

2.三、WebService 的工做調用原理

   對客戶端而言,咱們給這各種WebService客戶端API傳遞wsdl文件的url地址,這些API就會建立出底層的代理類,我調用 這些代理,就能夠訪問到webservice服務。代理類把客戶端的方法調用變成soap格式的請求數據再經過HTTP協議發出去,並把接收到的soap 數據變成返回值返回。對服務端而言,各種WebService框架的本質就是一個大大的Servlet,當遠程調用客戶端給它經過http協議發送過來 soap格式的請求數據時,它分析這個數據,就知道要調用哪一個java類的哪一個方法,因而去查找或建立這個對象,並調用其方法,再把方法返回的結果包裝成 soap格式的數據,經過http響應消息回給客戶端。

3、適用場合

一、跨防火牆通訊

  若是應用程序有成千上萬的用戶,並且分佈在世界各地,那麼客戶端和服務器之間的通訊將是一個棘手的問題。由於客戶端和服務器之間一般會有防火牆或者代理服 務器。在這種狀況下,使用DCOM就不是那麼簡單,一般也不便於把客戶端程序發佈到數量如此龐大的每個用戶手中。傳統的作法是,選擇用瀏覽器做爲客戶 端,寫下一大堆ASP頁面,把應用程序的中間層暴露給最終用戶。這樣作的結果是開發難度大,程序很難維護。若是中間層組件換成WebService的話, 就能夠從用戶界面直接調用中間層組件。從大多數人的經驗來看,在一個用戶界面和中間層有較多交互的應用程序中,使用WebService這種結構,能夠節 省花在用戶界面編程上20%的開發時間。

二、應用程序集成

  企業級的應用程序開發者都知道,企業裏常常都要把用不一樣語言寫成的、在不一樣平臺上運行的各類程序集成起來,而這種集成將花費很大的開發力量。應用程序常常 須要從運行在IBM主機上的程序中獲取數據;或者把數據發送到主機或UNIX應用程序中去。即便在同一個平臺上,不一樣軟件廠商生產的各類軟件也經常須要集 成起來。經過WebService,能夠很容易的集成不一樣結構的應用程序。

三、B2B集成

  用WebService集成應用程序,可使公司內部的商務處理更加自動化。但當交易跨越供應商和客戶、突破公司的界限時會怎麼樣呢?跨公司的商務交易集成一般叫作B2B集成。WebService是B2B集成成功的關鍵。經過WebService,公司能夠把關鍵的商務應用「暴露」給指定的供應商和客戶。例如,把電子下單系統和電子發票系統「暴露」出來,客戶就能夠以電子的方式發送訂單,供應商則能夠以電子的方式發送原料採購發票。固然,這並非一個 新的概念,EDI(電子文檔交換)早就是這樣了。可是,WebService的實現要比EDI簡單得多,並且WebService運行在Internet 上,在世界任何地方均可輕易實現,其運行成本就相對較低。不過,WebService並不像EDI那樣,是文檔交換或B2B集成的完整解決方案。 WebService只是B2B集成的一個關鍵部分,還須要許多其它的部分才能實現集成。

  用WebService來實現B2B集成的最大好處在於能夠輕易實現互操做性。只要把商務邏輯「暴露」出來,成爲WebService,就可讓任何指定 的合做夥伴調用這些商務邏輯,而無論他們的系統在什麼平臺上運行,使用什麼開發語言。這樣就大大減小了花在B2B集成上的時間和成本,讓許多本來沒法承受 EDI的中小企業也能實現B2B集成。

四、軟件和數據重用

      軟件重用是一個很大的主題,重用的形式不少,重用的程度有大有小。最基本的形式是源代碼模塊或者類一級的重用,一種形式是二進制形式的組件重用。採用 WebService應用程序能夠用標準的方法把功能和數據「暴露」出來,供其它應用程序使用,達到業務級重用。

4、不適用場合

一、單機應用程序

      目前,企業和我的還使用着不少桌面應用程序。其中一些只須要與本機上的其它程序通訊。在這種狀況下,最好就不要用WebService,只要用本地的 API就能夠了。COM很是適合於在這種狀況下工做,由於它既小又快。運行在同一臺服務器上的服務器軟件也是這樣。最好直接用COM或其它本地的API來 進行應用程序間的調用。固然WebService也能用在這些場合,但那樣不只消耗太大,並且不會帶來任何好處。

二、局域網的同構應用程序

      在許多應用中,全部的程序都是用VB或VC開發的,都在Windows平臺下使用COM,都運行在同一個局域網上。例如,有兩個服務器應用程序須要相互通 信,或者有一個Win32或WinForm的客戶程序要鏈接局域網上另外一個服務器的程序。在這些程序裏,使用DCOM會比SOAP/HTTP有效得多。與 此相相似,若是一個.NET程序要鏈接到局域網上的另外一個.NET程序,應該使用.NETremoting。有趣的是,在.NETremoting 中,也能夠指定使用SOAP/HTTP來進行WebService調用。不過最好仍是直接經過TCP進行RPC調用,那樣會有效得多。

 

 

聲明:部份內容來源於互聯網和這個博客http://blog.csdn.net/wooshn/article/details/8069087,感謝原做者的提供!

相關文章
相關標籤/搜索