web services

web services

Web Service是基於網路的、分散式的模塊化組件,它執行特定的任務,遵守具體的技術規範,這些規範使得Web Service能與其他兼容的組件進行交互操作。Internet Inter-Orb Protocol(IIOP)都已經發布了很長時間了,但是這些模型都依賴於特殊對象模型協議,而 Web Services 利用 SOAP 和 XML對這些模型在通訊方面作了進一步的擴展以消除特殊對象模型的障礙。Web Services 主要利用 HTTP 和 SOAP 協議使業務數據在 Web 上傳輸,SOAP通過 HTTP 調用業務對象執行遠程功能調用,Web 用戶能夠使用 SOAP 和 HTTP通過 Web 調用的方法來調用遠程對象的。

功能


Web Services 可使您的應用程序成為 Web 應用程序。
Web Services 通過 Web 進行發布、查找和使用。是應用程序組件使用開放協議進行通信,是獨立的(self-contained)並可自我描述,可通過使用UDDI來發現,可被其他應用程序使用。XML 是 Web Services 的基礎

工作原理


Web services 平台是簡單的可共同操作的消息收發框架。它仍然缺少許多諸如安全和路由等重要的特性。但是,一旦 SOAP 變得更加高級,這些事項就會得到解決。有望使應用程序更加容易通信
Web services 工作原理
基礎的 Web Services 平台是 XML + HTTP。
HTTP 協議是最常用的網際網路協議。
XML 提供了一種可用於不同的平台和編程語言之間的語言。
Web services 平台的元素:
SOAP (簡易對象訪問協議)
UDDI (通用描述、發現及整合)
WSDL (Web services 描述語言)
1.整體結構
web services
web services
2.一個Web Service客戶端,顧名思義是和一個Web Service伺服器進行交互。
下面是一個Web Service客戶端調用Web Service的基本過程。
--> 構造SOAP請求消息(將本地數據對象轉換為SOAP消息)
--> 發送SOAP消息到Web Service伺服器的指定埠
--> 接收SOAP響應消息
--> 將SOAP響應消息轉換為本地數據對象
3.webService與SOA的關係
webService是SOA的一個具體實現
SOA是思想
就像面向對象和J2ee的關係
4.SOAP基於HTTP的,在http協議下傳輸xml文件
5.UDDI:發現和整合服務,很少用
6.開發方法:只要獲得wsdl方式即可
7.webService效率較慢
傳輸的是文本
EJB和CORBA傳輸的是二進位,效率較好
8.攔截soap請求和響應信息

主要架構


客戶根據 WSDL 描述文檔,會生成一個 SOAP 請求消息。Web Services 都是放在Web伺服器(如IIS)後面,客戶生成的SOAP請求會被嵌入在一個HTTP POST請求中,發送到 Web 伺服器來。Web 伺服器再把這些請求轉發給 Web Services 請求處理器。請求處理器的作用在於,解析收到的 SOAP 請求,調用 Web Services,
然後再生成相應的 SOAP 應答。Web 伺服器得到 SOAP 應答后,會再通過 HTTP應答的方式把信息送回到客戶端。
Web Services 體系
各類程序語言通過標準網際網路統一服務
各類程序語言通過標準網際網路統一服務
Web Services 體系主要包括以下幾個方面: ① Web Services 組件。包括 3 種組件:
服務提供者:提供服務,進行註冊以使服務可用;
服務代理:服務交換所,服務提供者和服務請求者之間的媒體;
服務請求者:向服務代理請求服務,調用這些服務創建應用程序。
② Web Services 操作。包括 3 種操作:
發布/不發布(Publish/Unpublish):提供者向代理髮布(註冊)服務或不發布(移
去)這些服務的註冊;
發現(Find):由服務請求者向服務代理執行 find 操作,服務請求者描述要找的
服務,服務代理分發匹配的結果;
綁定(Bind):在服務請求者和服務提供者之間綁定,這兩部分協商以使請求者
可以訪問和調用提供者的服務。
三大核心技術標準
三大核心技術標準
③ UDDI——通用發現、描述和整合。這是一個Web Services的信息註冊規範,基於UDDI的Web Services註冊可以被發現 UDDI 的發現方法是:在 Web 上有一種分佈的註冊服務,商務和服務以一種通用的 XML 格式描述,XML 中的結構化數據易於發現、分析和操作。
④ WSDL——Web 服務描述語言。
Web 服務描述言語(WSDL)是一種 XML 語法,為服務提供者提供了描述構建在不同協議或編碼方式之上的 Web Services 請求基本格式的方法。WSDL 用來描述一個 Web Services 能做什麼,它的位置在哪裡,如何調用它等。在假定以SOAP/HTTP/MIME 作為遠程對象調用機制的情況下,WSDL 會發揮最大作用。UDDI 註冊描述了 Web Services 絕大多數方面,包括服務的綁定細節。WSDL 可以看作是 UDDI 服務描述的子集。
WSDL 將服務定義為一個網路端點的集合,或者說埠的集合。在 WSDL 裡面,端點及消息的抽象定義與它們具體的網路實現和數據格式綁定是分離的。這樣就可以重用這些抽象定義:消息,需要交換的數據的抽象描述;埠類型,操作的抽象集合。針對一個特定埠類型的具體協議和數據格式規範構成一個可重用的綁定。一個埠定義成網路地址和可重用的綁定的連接,埠的集合定義為服務。因此一個 WSDL 文檔在定義網路服務的時候使用如下的元素:
類型——使用某種的類型系統(如 XSD)定義數據類型的容器;
消息——通訊數據抽象的有類型的定義;
操作——服務支持動作的抽象描述;
埠類型——一個操作的抽象集合,該操作由一個或多個端點支持;
綁定——針對一個特定埠類型的具體協議規範和數據格式規範;
埠——一個單一的端點,定義成一個綁定和一個網路地址的鏈接;
服務——相關端點的集合。
所以不難看出,WSDL 給客戶提供了一個模板,方便客戶描述和綁定服務。

主要區別


web services是指用於架構Web service的整體技術框架,而Web Service則是使用Web Services技術而創建的應用實例,在很多時候,Web Services的含義也是具體的應用實例,只不過此時泛指。

應用實例


<%@ WebService Language="VB" Class="TempConvert" %>
Imports SystemImports System.Web.ServicesPublic Class TempConvert :Inherits WebService
PublicFunction CelsiusToFahrenheit(ByVal Celsius As Int16) As Int16 Dim fahrenheit As Int16 fahrenheit = ((((Celsius) * 9) / 5) + 32) Return fahrenheitEndFunctionEnd Class
要運行這個例子,我們需要一個 .NET 伺服器
此文檔中第一行表明這是一個 Web Service,由 VB 編寫,其 class 名稱是 "TempConvert"。
<%@ WebService Language="VB" Class="TempConvert" %>接下來的代碼行從 .NET 框架導入了命名空間 "System.Web.Services"。
Imports SystemImports System.Web.Services下面這一行定義 "TempConvert" 類是一個 WebSerivce 類:
Public Class TempConvert :Inherits WebService接下來的步驟是基礎的 VB 編程。此應用程序有兩個函數。一個把華氏度轉換為攝氏度,而另一個把攝氏度轉換為華氏度。
與普通的應用程序唯一的不同是,此函數被定義為 "WebMethod"。
請在您希望其成為 web services 的應用程序中使用 "WebMethod" 來標記函數。
Public Function FahrenheitToCelsius(ByVal Fahrenheit As Int16) As Int16 Dim celsius As Int16 celsius = ((((Fahrenheit) - 32) / 9) * 5) Return celsiusEnd FunctionPublic 最後要做的事情是終止函數和類:
End Function